diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 000000000..597730666 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index c78df1df6..81519f667 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ +.DS_Store node_modules build npm-debug.log debug.log datasources.development.json -.idea \ No newline at end of file +.idea diff --git a/Jenkinsfile b/Jenkinsfile index 59d63fb9f..62248b0fe 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,58 +1,54 @@ #!/usr/bin/env groovy def branchName = "${env.BRANCH_NAME}"; -def buildNumber = "${env.BUILD_NUMBER}"; def branchProduction = "master" def branchTest = "test"; -def dockerHost = "${env.DOCKER_HOST}"; +env.BRANCH_NAME = branchName; +env.TAG = "${env.BUILD_NUMBER}"; -if (branchName == branchProduction) - dockerHost = "tcp://172.16.255.29:2375"; +switch (branchName){ + case branchTest: + env.NODE_ENV = "development"; + break; + case branchProduction: + env.DOCKER_HOST = "tcp://172.16.255.29:2375"; + env.NODE_ENV = "production" + break; +} node { + stage ('Print environment variables'){ + echo "Branch ${branchName}, Build ${env.TAG}, NODE_ENV ${env.NODE_ENV} en docker Host ${env.DOCKER_HOST}" + } stage ('Checkout') { checkout scm + } stage ('install modules'){ sh "npm install" } - stage ('build Project Salix'){ + stage ('build Project'){ sh "gulp build" } - - stage ("docker ${element}") + stage ("docker") { - stage ("Stopping ${prefixDocker}-${element} actual") + stage ("install modules loopback service") { - try - { - def returnDocker = sh (script: "docker stop ${prefixDocker}-${element}", returnStdout: true).trim(); - echo "${returnDocker}"; - returnDocker = sh (script: "docker rm ${prefixDocker}-${element}", returnStdout: false).trim(); - //echo "${returnDocker}"; - returnDocker = sh (script: "docker rmi ${prefixDocker}-${element}:${buildNumber-3}", returnStdout: true).trim(); - echo "borran ${prefixDocker}-${element}:${buildNumber-3}"; - //echo "${returnDocker}"; - }catch(Exception _){ - echo "Error Stage Stopping" - } + sh "cd ./services/loopback && npm install" + } + + stage ("Stopping/Removing Docker") + { + sh "docker-compose down --rmi 'all'" } stage ("Generar dockers") { - stage ("build dockers") - { - sh "docker-compose build " - } - - stage ("up dockers") - { - sh "docker-compose up -d" - } + sh "docker-compose up -d --build" } } } \ No newline at end of file diff --git a/README.md b/README.md index 30f05b384..a8df77f6a 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,10 @@ npm run testWatch or test for single run on root run: +gulp docker + +wait 10 secs for db to be ready + npm run e2e ## Built With diff --git a/client/auth/src/login/login.html b/client/auth/src/login/login.html index 7ca073e72..161ffa732 100644 --- a/client/auth/src/login/login.html +++ b/client/auth/src/login/login.html @@ -1,18 +1,18 @@
-
- -
- - -
diff --git a/client/auth/src/login/style.scss b/client/auth/src/login/style.scss index fddd2d14e..8f1df6705 100644 --- a/client/auth/src/login/style.scss +++ b/client/auth/src/login/style.scss @@ -16,6 +16,7 @@ vn-login > div { margin: auto; height: inherit; } + .box { box-sizing: border-box; position: absolute; @@ -27,15 +28,18 @@ vn-login > div { box-shadow: 0 0 1em 0 rgba(1,1,1,.6); border-radius: .5em; } + img { width: 100%; padding-bottom: 1em; } + .footer { margin-top: 1em; text-align: center; position: relative; } + .spinner-wrapper { position: absolute; width: 0; diff --git a/client/client/routes.json b/client/client/routes.json index aff34bc6f..c938dd8a6 100644 --- a/client/client/routes.json +++ b/client/client/routes.json @@ -7,7 +7,8 @@ { "url": "/clients", "state": "clients", - "component": "vn-client-index" + "component": "vn-client-index", + "acl": ["employee"] }, { "url": "/create", "state": "create", @@ -47,7 +48,7 @@ "client": "$ctrl.client" }, "menu": { - "description": "Datos facturación", + "description": "Pay method", "icon": "assignment" } }, { diff --git a/client/client/src/address-create/address-create.html b/client/client/src/address-create/address-create.html index b65862c69..500f46472 100644 --- a/client/client/src/address-create/address-create.html +++ b/client/client/src/address-create/address-create.html @@ -30,7 +30,7 @@ diff --git a/client/client/src/address-create/address-create.spec.js b/client/client/src/address-create/address-create.spec.js index ebedc2f52..be4177a99 100644 --- a/client/client/src/address-create/address-create.spec.js +++ b/client/client/src/address-create/address-create.spec.js @@ -2,6 +2,7 @@ import './address-create.js'; describe('Client', () => { describe('Component vnAddressCreate', () => { + let controller; let $componentController; let $state; @@ -13,11 +14,10 @@ describe('Client', () => { $componentController = _$componentController_; $state = _$state_; $state.params.id = '1234'; + controller = $componentController('vnAddressCreate', {$state}); })); it('should define and set address property', () => { - let controller = $componentController('vnAddressCreate', {$state}); - expect(controller.address.clientFk).toBe(1234); expect(controller.address.isEnabled).toBe(true); }); diff --git a/client/client/src/address-edit/address-edit.html b/client/client/src/address-edit/address-edit.html index bd4b63232..d94324c92 100644 --- a/client/client/src/address-edit/address-edit.html +++ b/client/client/src/address-edit/address-edit.html @@ -11,8 +11,12 @@ Address - - + + + + + + @@ -32,8 +36,9 @@ diff --git a/client/client/src/address-edit/address-edit.spec.js b/client/client/src/address-edit/address-edit.spec.js index 4900a817e..129708241 100644 --- a/client/client/src/address-edit/address-edit.spec.js +++ b/client/client/src/address-edit/address-edit.spec.js @@ -4,6 +4,7 @@ describe('Client', () => { describe('Component vnAddressEdit', () => { let $componentController; let $state; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -13,11 +14,10 @@ describe('Client', () => { $componentController = _$componentController_; $state = _$state_; $state.params.addressId = '1234'; + controller = $componentController('vnAddressEdit', {$state: $state}); })); it('should define and set address property', () => { - let controller = $componentController('vnAddressEdit', {$state: $state}); - expect(controller.address.id).toBe(1234); }); }); diff --git a/client/client/src/basic-data/basic-data.html b/client/client/src/basic-data/basic-data.html index 07c60750e..5ee41ce7d 100644 --- a/client/client/src/basic-data/basic-data.html +++ b/client/client/src/basic-data/basic-data.html @@ -10,17 +10,20 @@ Basic data - - - + + - + + - + label="Salesperson" + filter-search="{where: {or: [{name: {regexp: 'search'}}, {surname: {regexp: 'search'}}]}}" + > - Billing information + Pay method + label="Pay method"> - - - - - - - - - - Documentación - - - - + + + + + + + + + + + @@ -59,18 +56,4 @@ - - - - - You changes the equivalent tax - Do you want to spread the change to their consignees? - - - - - - \ No newline at end of file diff --git a/client/client/src/billing-data/billing-data.js b/client/client/src/billing-data/billing-data.js index a28aea963..a6887039e 100644 --- a/client/client/src/billing-data/billing-data.js +++ b/client/client/src/billing-data/billing-data.js @@ -20,7 +20,6 @@ export default class Controller { this.billData.discount = this.client.discount; this.billData.credit = this.client.credit; this.billData.creditInsurance = this.client.creditInsurance; - this.equalizationTax = this.client.equalizationTax; } } submit() { @@ -38,9 +37,7 @@ export default class Controller { } ); - if (equals) { - this.checkREChanges(); - } else { + if (!equals) { this.$.sendMail.show(); } } @@ -49,28 +46,6 @@ export default class Controller { this.$http.post(`/mailer/manuscript/payment-update/${this.client.id}`).then( () => { this.vnApp.showMessage(this.translate.instant('Notification sent!')); - this.checkREChanges(); - } - ); - } else { - this.checkREChanges(); - } - } - - checkREChanges() { - let equals = this.equalizationTax == this.client.equalizationTax; - this.equalizationTax = this.client.equalizationTax; - - if (!equals) - this.$.propagateEqualizationTax.show(); - } - - returnDialogRE(response) { - if (response === 'ACCEPT') { - this.$http.patch(`/client/api/Clients/${this.client.id}/addressesPropagateRe`, {isEqualizated: this.client.equalizationTax}).then( - res => { - if (res.data) - this.vnApp.showMessage(this.translate.instant('Equivalent tax spreaded')); } ); } diff --git a/client/client/src/billing-data/billing-data.spec.js b/client/client/src/billing-data/billing-data.spec.js index 6e3f2e849..df169b18c 100644 --- a/client/client/src/billing-data/billing-data.spec.js +++ b/client/client/src/billing-data/billing-data.spec.js @@ -5,6 +5,7 @@ describe('Client', () => { let $componentController; let $httpBackend; let $scope; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -18,11 +19,11 @@ describe('Client', () => { $scope.watcher = {submit}; let show = jasmine.createSpy('show'); $scope.sendMail = {show}; + controller = $componentController('vnClientBillingData', {$scope: $scope}); })); describe('copyData()', () => { it(`should define billData using client's data`, () => { - let controller = $componentController('vnClientBillingData', {$scope: $scope}); controller.client = { credit: 1000000000000, creditInsurance: null, @@ -40,7 +41,6 @@ describe('Client', () => { describe('submit()', () => { it(`should call submit() on the watcher then receive a callback`, done => { - let controller = $componentController('vnClientBillingData', {$scope: $scope}); spyOn(controller, 'checkPaymentChanges'); controller.submit() .then(() => { @@ -53,7 +53,6 @@ describe('Client', () => { describe('checkPaymentChanges()', () => { it(`should not call sendMail.show() if there are no changes on billing data`, () => { - let controller = $componentController('vnClientBillingData', {$scope: $scope}); controller.billData = {marvelHero: 'Silver Surfer'}; controller.client = {marvelHero: 'Silver Surfer'}; controller.checkPaymentChanges(); @@ -62,7 +61,6 @@ describe('Client', () => { }); it(`should call sendMail.show() if there are changes on billing data object`, () => { - let controller = $componentController('vnClientBillingData', {$scope: $scope}); controller.billData = {marvelHero: 'Silver Surfer'}; controller.client = {marvelHero: 'Spider-Man'}; controller.checkPaymentChanges(); @@ -73,7 +71,6 @@ describe('Client', () => { describe('returnDialog()', () => { it('should request to send notification email', () => { - let controller = $componentController('vnClientBillingData', {$scope: $scope}); controller.client = {id: '123'}; $httpBackend.when('POST', `/mailer/manuscript/payment-update/${controller.client.id}`).respond('done'); $httpBackend.expectPOST(`/mailer/manuscript/payment-update/${controller.client.id}`); diff --git a/client/client/src/billing-data/locale/es.json b/client/client/src/billing-data/locale/es.json index 5706db30e..1d643a934 100644 --- a/client/client/src/billing-data/locale/es.json +++ b/client/client/src/billing-data/locale/es.json @@ -8,5 +8,7 @@ "You changes the equivalent tax": "Has cambiado el recargo de equivalencia", "Do you want to spread the change to their consignees?" : "¿Deseas propagar el cambio a sus consignatarios?", "Yes, propagate": "Si, propagar", - "Equivalent tax spreaded": "Recargo de equivalencia propagado" + "Equivalent tax spreaded": "Recargo de equivalencia propagado", + "Invoice by address": "Facturar por consignatario", + "Equalization tax": "Recargo de equivalencia" } \ No newline at end of file diff --git a/client/client/src/card/card.spec.js b/client/client/src/card/card.spec.js index a5c64bf7f..f29d318b4 100644 --- a/client/client/src/card/card.spec.js +++ b/client/client/src/card/card.spec.js @@ -4,6 +4,7 @@ describe('Client', () => { describe('Component vnClientCard', () => { let $componentController; let $scope; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -12,11 +13,10 @@ describe('Client', () => { beforeEach(angular.mock.inject((_$componentController_, $rootScope) => { $componentController = _$componentController_; $scope = $rootScope; + controller = $componentController('vnClientCard', {$scope: $scope}); })); it('should define and set client property to null in the module instance', () => { - let controller = $componentController('vnClientCard', {$scope: $scope}); - expect(controller.client).toBeDefined(); expect(controller.client).toBe(null); }); diff --git a/client/client/src/card/style.css b/client/client/src/card/style.css index f788e35c6..195879409 100644 --- a/client/client/src/card/style.css +++ b/client/client/src/card/style.css @@ -1,3 +1,3 @@ -vn-descriptor{ +vn-descriptor { font-family: raleway-bold; } \ No newline at end of file diff --git a/client/client/src/create/create.spec.js b/client/client/src/create/create.spec.js index 609b5f013..491f273bb 100644 --- a/client/client/src/create/create.spec.js +++ b/client/client/src/create/create.spec.js @@ -5,6 +5,7 @@ describe('Client', () => { let $componentController; let $scope; let $state; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -23,11 +24,10 @@ describe('Client', () => { }; } }; + controller = $componentController('vnClientCreate', {$scope: $scope}); })); it('should define and set scope, state and client properties', () => { - let controller = $componentController('vnClientCreate', {$scope: $scope}); - expect(controller.$).toBe($scope); expect(controller.$state).toBe($state); expect(controller.client.active).toBe(true); @@ -35,7 +35,6 @@ describe('Client', () => { describe('onSubmit()', () => { it(`should call submit() on the watcher then expect a callback`, () => { - let controller = $componentController('vnClientCreate', {$scope: $scope}); spyOn($state, 'go'); controller.onSubmit(); diff --git a/client/client/src/descriptor/descriptor.html b/client/client/src/descriptor/descriptor.html index 8659bec6e..64dd29fe4 100644 --- a/client/client/src/descriptor/descriptor.html +++ b/client/client/src/descriptor/descriptor.html @@ -1,9 +1,9 @@ - + person - +
{{::$ctrl.client.id}}
{{$ctrl.client.name}}
diff --git a/client/client/src/descriptor/descriptor.js b/client/client/src/descriptor/descriptor.js index ae19d96c4..1311e5858 100644 --- a/client/client/src/descriptor/descriptor.js +++ b/client/client/src/descriptor/descriptor.js @@ -1,5 +1,4 @@ import ngModule from '../module'; -import './style.css'; export default class Controller { constructor($scope, $http) { diff --git a/client/client/src/descriptor/descriptor.spec.js b/client/client/src/descriptor/descriptor.spec.js index fd30d3889..d591c2300 100644 --- a/client/client/src/descriptor/descriptor.spec.js +++ b/client/client/src/descriptor/descriptor.spec.js @@ -4,6 +4,7 @@ describe('Client', () => { describe('Component vnDescriptor', () => { let $componentController; let $scope; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -12,11 +13,11 @@ describe('Client', () => { beforeEach(angular.mock.inject((_$componentController_, $rootScope) => { $componentController = _$componentController_; $scope = $rootScope.$new(); + controller = $componentController('vnDescriptor', {$scope: $scope}); })); describe('set active', () => { it('should check if active is defined and diferent from the new value', () => { - let controller = $componentController('vnDescriptor', {$scope: $scope}); controller.client = {id: 1}; expect(controller._active).toBe(undefined); diff --git a/client/client/src/descriptor/style.css b/client/client/src/descriptor/style.css deleted file mode 100644 index d5f633d8c..000000000 --- a/client/client/src/descriptor/style.css +++ /dev/null @@ -1,3 +0,0 @@ -.descriptor-icon{ - font-size:60px; -} \ No newline at end of file diff --git a/client/client/src/fiscal-data/fiscal-data.html b/client/client/src/fiscal-data/fiscal-data.html index a9aa7f7b0..f9c9c418b 100644 --- a/client/client/src/fiscal-data/fiscal-data.html +++ b/client/client/src/fiscal-data/fiscal-data.html @@ -5,27 +5,29 @@ form="form" save="patch"> -
+ Fiscal data - - - + + + - - + + - + + label="Province" + vn-acl="administrative" + > + label="Country" + vn-acl="administrative" + > + + + + + + + + + + + + + + + + + + + + + + - +
+ + + + You changes the equivalent tax + Do you want to spread the change to their consignees? + + + + + + + \ No newline at end of file diff --git a/client/client/src/fiscal-data/fiscal-data.js b/client/client/src/fiscal-data/fiscal-data.js index 286693f83..6ef3c3931 100644 --- a/client/client/src/fiscal-data/fiscal-data.js +++ b/client/client/src/fiscal-data/fiscal-data.js @@ -1,7 +1,54 @@ import ngModule from '../module'; +export default class ClientFiscalData { + constructor($scope, $http, vnApp, $translate) { + this.$ = $scope; + this.$http = $http; + this.vnApp = vnApp; + this.translate = $translate; + this.equalizationTax = undefined; + this.copyData(); + } + + $onChanges() { + this.copyData(); + } + + copyData() { + if (this.client) { + this.equalizationTax = this.client.equalizationTax; + } + } + + submit() { + return this.$.watcher.submit().then( + () => this.checkEtChanges()); + } + + checkEtChanges() { + let equals = this.equalizationTax == this.client.equalizationTax; + this.equalizationTax = this.client.equalizationTax; + + if (!equals) + this.$.propagateEqualizationTax.show(); + } + + returnDialogEt(response) { + if (response === 'ACCEPT') { + this.$http.patch(`/client/api/Clients/${this.client.id}/addressesPropagateRe`, {isEqualizated: this.client.equalizationTax}).then( + res => { + if (res.data) + this.vnApp.showMessage(this.translate.instant('Equivalent tax spreaded')); + } + ); + } + } +} +ClientFiscalData.$inject = ['$scope', '$http', 'vnApp', '$translate']; + ngModule.component('vnClientFiscalData', { template: require('./fiscal-data.html'), + controller: ClientFiscalData, bindings: { client: '<' } diff --git a/client/client/src/index/index.spec.js b/client/client/src/index/index.spec.js index 9a4fe5e0f..821cb4685 100644 --- a/client/client/src/index/index.spec.js +++ b/client/client/src/index/index.spec.js @@ -3,6 +3,7 @@ import './index.js'; describe('Client', () => { describe('Component vnClientIndex', () => { let $componentController; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -10,17 +11,15 @@ describe('Client', () => { beforeEach(angular.mock.inject(_$componentController_ => { $componentController = _$componentController_; + controller = $componentController('vnClientIndex'); })); it('should define and set model property as an empty object', () => { - let controller = $componentController('vnClientIndex'); - expect(controller.model).toEqual({}); }); describe('search()', () => { it(`should set model's search to the search input`, () => { - let controller = $componentController('vnClientIndex'); controller.model.search = 'batman'; let index = { filter: {}, diff --git a/client/client/src/index/style.css b/client/client/src/index/style.css index ba7f75844..b30351f09 100644 --- a/client/client/src/index/style.css +++ b/client/client/src/index/style.css @@ -11,6 +11,6 @@ vn-item-client a:hover { background-color: #424242; } -.vn-item-client-name{ +.vn-item-client-name { font-family: raleway-bold; } diff --git a/client/client/src/locale/es.json b/client/client/src/locale/es.json index 3a36dab65..20089e85c 100644 --- a/client/client/src/locale/es.json +++ b/client/client/src/locale/es.json @@ -1,5 +1,14 @@ { "Client": "Cliente", "Clients": "Clientes", - "Fiscal data": "Datos Fiscales" -} \ No newline at end of file + "Fiscal data": "Datos Fiscales", + "Has to invoice": "Factura", + "Invoice by mail": "Factura impresa", + "Country": "País", + "Street": "Domicilio fiscal", + "City": "Municipio", + "Postcode": "Código postal", + "Province": "Provincia", + "Save": "Guardar", + "Pay method" : "Forma de pago" +} diff --git a/client/client/src/note-create/note-create.spec.js b/client/client/src/note-create/note-create.spec.js index 52d2cfcb9..1414835fd 100644 --- a/client/client/src/note-create/note-create.spec.js +++ b/client/client/src/note-create/note-create.spec.js @@ -4,6 +4,7 @@ describe('Client', () => { describe('Component vnNoteCreate', () => { let $componentController; let $state; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -13,11 +14,10 @@ describe('Client', () => { $componentController = _$componentController_; $state = _$state_; $state.params.id = '1234'; + controller = $componentController('vnNoteCreate', {$state: $state}); })); it('should define clientFk using $state.params.id', () => { - let controller = $componentController('vnNoteCreate', {$state: $state}); - expect(controller.note.clientFk).toBe(1234); expect(controller.note.client).toBe(undefined); }); diff --git a/client/client/src/notes/notes.js b/client/client/src/notes/notes.js index bd214cf49..7e0ec424a 100644 --- a/client/client/src/notes/notes.js +++ b/client/client/src/notes/notes.js @@ -6,11 +6,13 @@ export default class Controller { this.$http = $http; this.$state = $state; } + $onChanges() { if (this.client) { this.getObservation(this.client.id); } } + getObservation(clientId) { let json = JSON.stringify({where: {clientFk: this.client.id}, order: 'created DESC'}); this.$http.get(`/client/api/clientObservations?filter=${json}`).then( @@ -19,6 +21,7 @@ export default class Controller { } ); } + newObservation() { this.$state.go("clientCard.notes.create", {id: this.client.id}); } diff --git a/client/client/src/notes/notes.spec.js b/client/client/src/notes/notes.spec.js index 78d8092fc..1db229caa 100644 --- a/client/client/src/notes/notes.spec.js +++ b/client/client/src/notes/notes.spec.js @@ -5,6 +5,7 @@ describe('Client', () => { let $componentController; let $state; let $httpBackend; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -14,11 +15,11 @@ describe('Client', () => { $componentController = _$componentController_; $state = _$state_; $httpBackend = _$httpBackend_; + controller = $componentController('vnClientNotes', {$httpBackend: $httpBackend, $state: $state}); })); describe('$onChanges()', () => { it(`should call getObservation() with the client id`, () => { - let controller = $componentController('vnClientNotes', {$httpBackend: $httpBackend, $state: $state}); controller.client = { id: 1234 }; @@ -31,19 +32,20 @@ describe('Client', () => { describe('$getObservation()', () => { it(`should request to GET the client notes`, () => { - let controller = $componentController('vnClientNotes', {$httpBackend: $httpBackend, $state: $state}); controller.client = {id: '1234'}; - let json = JSON.stringify({where: {clientFk: '1234'}, order: 'created DESC'}); - $httpBackend.when('GET', `/client/api/clientObservations?filter=${json}`).respond('ok'); - $httpBackend.expectGET(`/client/api/clientObservations?filter=${json}`, {Accept: 'application/json, text/plain, */*'}); + let jsonString = JSON.stringify({where: {clientFk: '1234'}, order: 'created DESC'}); + let json = {data: 'some data'}; + $httpBackend.when('GET', `/client/api/clientObservations?filter=${jsonString}`).respond(json); + $httpBackend.expectGET(`/client/api/clientObservations?filter=${jsonString}`, {Accept: 'application/json, text/plain, */*'}); controller.getObservation(); $httpBackend.flush(); + + expect(controller.observations).toEqual(json); }); }); describe('$newObservation()', () => { it(`should redirect the user to the newObservation view`, () => { - let controller = $componentController('vnClientNotes', {$httpBackend: $httpBackend, $state: $state}); controller.client = {id: '1234'}; spyOn(controller.$state, 'go'); controller.newObservation(); diff --git a/client/client/src/notes/style.css b/client/client/src/notes/style.css index b5e17c7a7..4d0f8eba7 100644 --- a/client/client/src/notes/style.css +++ b/client/client/src/notes/style.css @@ -1,3 +1,3 @@ -.notes-date{ +.notes-date { font-family: raleway-bold; } \ No newline at end of file diff --git a/client/client/src/search-panel/search-panel.js b/client/client/src/search-panel/search-panel.js index 87f6308ce..3f78dc809 100644 --- a/client/client/src/search-panel/search-panel.js +++ b/client/client/src/search-panel/search-panel.js @@ -1,25 +1,28 @@ import ngModule from '../module'; export default class Controller { - constructor($window) { - this.$window = $window; + constructor(sessionStorage) { + this.sessionStorage = sessionStorage; // onSubmit() is defined by @vnSearchbar this.onSubmit = () => {}; } + onSearch() { this.setStorageValue(); this.onSubmit(this.filter); } + $onChanges() { - var value = JSON.parse(this.$window.sessionStorage.getItem('filter')); + var value = this.sessionStorage.get('filter'); if (value !== undefined) this.filter = value; } + setStorageValue() { - this.$window.sessionStorage.setItem('filter', JSON.stringify(this.filter)); + this.sessionStorage.set('filter', this.filter); } } -Controller.$inject = ['$window']; +Controller.$inject = ['sessionStorage']; ngModule.component('vnClientSearchPanel', { template: require('./search-panel.html'), diff --git a/client/client/src/search-panel/search-panel.spec.js b/client/client/src/search-panel/search-panel.spec.js index eacc74ac3..e4b7b5634 100644 --- a/client/client/src/search-panel/search-panel.spec.js +++ b/client/client/src/search-panel/search-panel.spec.js @@ -3,20 +3,21 @@ import './search-panel.js'; describe('Client', () => { describe('Component vnClientSearchPanel', () => { let $componentController; - let $window; + let sessionStorage; + let controller; beforeEach(() => { angular.mock.module('client'); }); - beforeEach(angular.mock.inject((_$componentController_, _$window_) => { + beforeEach(angular.mock.inject((_$componentController_, _sessionStorage_) => { $componentController = _$componentController_; - $window = _$window_; + sessionStorage = _sessionStorage_; + controller = $componentController('vnClientSearchPanel', {sessionStorage: sessionStorage}); })); describe('onSearch()', () => { - it(`should call setStorageValue() and onSubmit()`, () => { - let controller = $componentController('vnClientSearchPanel', {$window: $window}); + it('should call setStorageValue() and onSubmit()', () => { spyOn(controller, 'setStorageValue'); spyOn(controller, 'onSubmit'); controller.setStorageValue(); @@ -28,14 +29,12 @@ describe('Client', () => { }); describe('$onChanges()', () => { - it(`should set filter properties using the search values`, () => { - let controller = $componentController('vnClientSearchPanel', {$window: $window}); - + it('should set filter properties using the search values', () => { expect(controller.filter).not.toBeDefined(); - spyOn(JSON, 'parse').and.returnValue({data: 'data'}); + spyOn(sessionStorage, 'get').and.returnValue({data: 'data'}); controller.$onChanges(); - expect(controller.filter).toBe(JSON.parse({data: 'data'})); + expect(controller.filter).toBe(sessionStorage.get({data: 'data'})); }); }); }); diff --git a/client/client/src/web-access/web-access.html b/client/client/src/web-access/web-access.html index 7d7cc4f92..71a251247 100644 --- a/client/client/src/web-access/web-access.html +++ b/client/client/src/web-access/web-access.html @@ -8,9 +8,15 @@
- Web access - - + + Web access + + + + + + + diff --git a/client/client/src/web-access/web-access.js b/client/client/src/web-access/web-access.js index dc61eac82..696d8a0ad 100644 --- a/client/client/src/web-access/web-access.js +++ b/client/client/src/web-access/web-access.js @@ -29,6 +29,7 @@ export default class Controller { this.repeatPassword = ''; this.$.$apply(); } + onPassChange(response) { if (response == 'ACCEPT' && this.canChangePassword) try { diff --git a/client/client/src/web-access/web-access.spec.js b/client/client/src/web-access/web-access.spec.js index 55a762d37..584ad58c1 100644 --- a/client/client/src/web-access/web-access.spec.js +++ b/client/client/src/web-access/web-access.spec.js @@ -5,6 +5,7 @@ describe('Component VnClientWebAccess', () => { let $httpBackend; let $scope; let vnApp; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -16,11 +17,11 @@ describe('Component VnClientWebAccess', () => { $httpBackend = _$httpBackend_; vnApp = _vnApp_; spyOn(vnApp, 'showError'); + controller = $componentController('vnClientWebAccess', {$scope: $scope}); })); describe('$onChanges()', () => { it(`should pass client's account data to account then call isCustomer function`, () => { - let controller = $componentController('vnClientWebAccess', {$scope: $scope}); spyOn(controller, 'isCustomer'); controller.client = {client: 'Bruce Wayne', account: 'Wayne Industries'}; controller.account = {}; @@ -33,7 +34,6 @@ describe('Component VnClientWebAccess', () => { describe('isCustomer()', () => { it(`should perform a query if client is defined with an ID`, () => { - let controller = $componentController('vnClientWebAccess', {$scope: $scope}); controller.client = {id: '1234'}; controller.isCustomer(); @@ -45,7 +45,6 @@ describe('Component VnClientWebAccess', () => { describe('onPassOpen()', () => { it('should set passwords to empty values', () => { - let controller = $componentController('vnClientWebAccess', {$scope: $scope}); controller.newPassword = 'm24x8'; controller.repeatPassword = 'm24x8'; controller.onPassOpen(); @@ -57,7 +56,6 @@ describe('Component VnClientWebAccess', () => { describe('onPassChange()', () => { it('should request to update the password', () => { - let controller = $componentController('vnClientWebAccess', {$scope: $scope}); controller.client = {id: '1234'}; controller.newPassword = 'm24x8'; controller.repeatPassword = 'm24x8'; @@ -70,7 +68,6 @@ describe('Component VnClientWebAccess', () => { describe(`when password is empty`, () => { it(`should throw Passwords can't be empty error`, () => { - let controller = $componentController('vnClientWebAccess', {$scope: $scope}); controller.client = {id: '1234'}; controller.newPassword = ''; controller.canChangePassword = true; @@ -82,7 +79,6 @@ describe('Component VnClientWebAccess', () => { describe(`when passwords don't match`, () => { it(`should throw Passwords don't match error`, () => { - let controller = $componentController('vnClientWebAccess', {$scope: $scope}); controller.client = {id: '1234'}; controller.newPassword = 'm24x8'; controller.canChangePassword = true; diff --git a/client/core/src/autocomplete/autocomplete.js b/client/core/src/autocomplete/autocomplete.js index a4e04a9be..853267592 100644 --- a/client/core/src/autocomplete/autocomplete.js +++ b/client/core/src/autocomplete/autocomplete.js @@ -1,14 +1,16 @@ import {module} from '../module'; import Component from '../lib/component'; +import copyObject from '../lib/copy'; import './style.scss'; class Autocomplete extends Component { - constructor($element, $scope, $http, $timeout) { + constructor($element, $scope, $http, $timeout, $filter) { super($element); this.$element = $element; this.$scope = $scope; this.$http = $http; this.$timeout = $timeout; + this.$filter = $filter; this._showDropDown = false; this.finding = false; @@ -20,7 +22,7 @@ class Autocomplete extends Component { this.showField = this.showField || 'name'; this.valueField = this.valueField || 'id'; this.order = this.order || 'name ASC'; - this.items = this.data || []; + this.items = copyObject(this.data) || []; this.displayValueMultiCheck = []; this._multiField = []; this.readonly = true; @@ -30,6 +32,7 @@ class Autocomplete extends Component { get showDropDown() { return this._showDropDown; } + set showDropDown(value) { if (value && this.url && !this._preLoad) { this._preLoad = true; @@ -75,6 +78,7 @@ class Autocomplete extends Component { get field() { return this.multiple ? this._multiField : this._field; } + set field(value) { if (!angular.equals(value, this.field)) { this.finding = true; @@ -101,7 +105,7 @@ class Autocomplete extends Component { if (value && value.hasOwnProperty(this.valueField)) { this._field = value[this.valueField]; if (this.multiple) { - this._multiField = [value[this.valueField]] + this._multiField = [value[this.valueField]]; } if (value.hasOwnProperty(this.showField)) { this.displayValue = value[this.showField]; @@ -162,6 +166,7 @@ class Autocomplete extends Component { json => this.onItemRequest(null) ); } + onItemRequest(data) { if (data && data.length > 0) this.showItem(data[0]); @@ -187,12 +192,19 @@ class Autocomplete extends Component { } findItems(search) { - if (!this.url) - return this.items ? this.items : []; - - if (search && !this.finding) { + if (this.url && search && !this.finding) { this.maxRow = false; - let filter = {where: {name: {regexp: search}}}; + let filter = {}; + if (this.filterSearch) { + let toSearch = this.filterSearch.replace(/search/g, search); + filter = this.$scope.$eval(toSearch); + } else { + filter = {where: {name: {regexp: search}}}; + if (this.filter && this.filter.where) { + Object.assign(filter.where, this.filter.where); + } + } + filter.order = this.order; let json = JSON.stringify(filter); this.finding = true; this.$http.get(`${this.url}?filter=${json}`).then( @@ -212,54 +224,67 @@ class Autocomplete extends Component { this.finding = false; } ); + } else if (search && !this.url && this.data) { + this.items = this.$filter('filter')(this.data, search); } else if (!search && !this.finding) { this.maxRow = 10; this.items = []; this.getItems(); } } + getItems() { - let filter = {}; - if (!this.finding) { - this.finding = true; + if (this.url === undefined) { + this.items = copyObject(this.data); + this.maxRow = false; + this.removeLoadMore = true; + } else { + let filter = {}; + if (!this.finding) { + this.finding = true; - if (this.maxRow) { - if (this.items) { - filter.skip = this.items.length; - } - filter.limit = this.maxRow; - filter.order = this.order; - } - - let json = JSON.stringify(filter); - - this.removeLoadMore = false; - - this.$http.get(`${this.url}?filter=${json}`).then( - json => { - if (json.data.length) { - json.data.forEach( - el => { - if (this.multiple) { - el.checked = this.field.indexOf(el[this.valueField]) !== -1; - } - this.items.push(el); - } - ); - if (filter.skip === 0 && this.maxRow && json.data.length < this.maxRow) { - this.removeLoadMore = true; - } - } else { - this.maxRow = false; + if (this.maxRow) { + if (this.items) { + filter.skip = this.items.length; } - this.finding = false; - }, - () => { - this.finding = false; + filter.limit = this.maxRow; + filter.order = this.order; } - ); + if (this.filter) { + Object.assign(filter, this.filter); + } + + let json = JSON.stringify(filter); + + this.removeLoadMore = false; + + this.$http.get(`${this.url}?filter=${json}`).then( + json => { + if (json.data.length) { + json.data.forEach( + el => { + if (this.multiple) { + el.checked = this.field.indexOf(el[this.valueField]) !== -1; + } + this.items.push(el); + } + ); + if (filter.skip === 0 && this.maxRow && json.data.length < this.maxRow) { + this.removeLoadMore = true; + } + } else { + this.maxRow = false; + } + this.finding = false; + }, + () => { + this.finding = false; + } + ); + } } } + $onInit() { this.findMore = this.url && this.maxRow; this.mouseFocus = false; @@ -299,9 +324,16 @@ class Autocomplete extends Component { this.$element.unbind('focusout'); } -} + $onChanges(objectChange) { + if (objectChange.data && objectChange.data.currentValue && objectChange.data.currentValue.length) { + this.items = copyObject(objectChange.data.currentValue); + this.maxRow = false; + this.removeLoadMore = true; + } + } -Autocomplete.$inject = ['$element', '$scope', '$http', '$timeout']; +} +Autocomplete.$inject = ['$element', '$scope', '$http', '$timeout', '$filter']; module.component('vnAutocomplete', { template: require('./autocomplete.html'), @@ -317,7 +349,9 @@ module.component('vnAutocomplete', { field: '=', label: '@', multiple: '@?', - order: '@?' + order: '@?', + filter: ' { let $httpBackend; let $timeout; let $element; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -17,11 +18,11 @@ describe('Component vnAutocomplete', () => { $httpBackend = _$httpBackend_; $timeout = _$timeout_; $element = angular.element('
'); + controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); })); describe('showDropDown() setter', () => { it(`should set _showDropDown value`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); controller._showDropDown = ''; controller.showDropDown = 'some value'; @@ -29,7 +30,6 @@ describe('Component vnAutocomplete', () => { }); it(`should set _showDropDown value`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); controller._showDropDown = ''; controller.showDropDown = 'some value'; @@ -39,7 +39,6 @@ describe('Component vnAutocomplete', () => { describe('displayValue() setter', () => { it(`should display value in a formated way`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); let value = 'some value'; controller.displayValue = value; @@ -48,7 +47,6 @@ describe('Component vnAutocomplete', () => { describe('when the autocomeplete is multiple', () => { it(`should display values separated with commas`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); controller.multiple = true; controller.displayValue = 'some value'; controller.displayValue = 'another value'; @@ -61,14 +59,12 @@ describe('Component vnAutocomplete', () => { describe('field() setter', () => { describe('when value is an object', () => { it(`should set _field controllers property`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); controller.field = {id: 1, name: 'Bruce Wayne'}; expect(controller._field).toEqual(1); }); it(`should set _multifield controllers property `, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); controller.multiple = true; controller.field = {id: 1, name: 'Bruce Wayne'}; @@ -82,7 +78,6 @@ describe('Component vnAutocomplete', () => { }); it(`should set _multifield value and remove it if called a second type with same value`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); controller.multiple = true; controller.field = {id: 1, name: 'Bruce Wayne'}; @@ -96,7 +91,6 @@ describe('Component vnAutocomplete', () => { }); it(`should set displayValue finding an existing item in the controller.items property`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); controller.items = [{id: 1, name: 'test1'}, {id: 2, name: 'Bruce Wayne'}]; controller.field = {id: 2, name: 'Bruce Wayne'}; @@ -106,7 +100,6 @@ describe('Component vnAutocomplete', () => { describe('when value is a number', () => { it(`should set _field controller property finding an existing item in the controller.items property`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce Wayne'}]; controller.field = 2; @@ -114,7 +107,6 @@ describe('Component vnAutocomplete', () => { }); it(`should set _multifield value and remove it if called a second type with same value finding an existing item in the controller.items property`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce Wayne'}]; controller.multiple = true; controller.field = 2; @@ -127,16 +119,15 @@ describe('Component vnAutocomplete', () => { }); it(`should perform a query if the item id isn't present in the controller.items property`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}, {url: 'test.com'}); - $httpBackend.whenGET('test.com?filter={"fields":{"id":true,"name":true},"where":{"id":3}}').respond(); - $httpBackend.expectGET('test.com?filter={"fields":{"id":true,"name":true},"where":{"id":3}}'); + controller.url = 'test.com'; + $httpBackend.whenGET(`${controller.url}?filter={"fields":{"id":true,"name":true},"where":{"id":3}}`).respond(); + $httpBackend.expectGET(`${controller.url}?filter={"fields":{"id":true,"name":true},"where":{"id":3}}`); controller.items = [{id: 1, name: 'test1'}, {id: 2, name: 'Bruce Wayne'}]; controller.field = 3; $httpBackend.flush(); }); it(`should set displayValue finding an existing item in the controller.items property`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); controller.items = [{id: 1, name: 'test1'}, {id: 2, name: 'Bruce Wayne'}]; controller.field = 2; @@ -144,9 +135,9 @@ describe('Component vnAutocomplete', () => { }); it(`should set field performing a query as the item id isn't present in the controller.items property`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}, {url: 'test.com'}); - $httpBackend.whenGET('test.com?filter={"fields":{"id":true,"name":true},"where":{"id":3}}').respond(); - $httpBackend.expectGET('test.com?filter={"fields":{"id":true,"name":true},"where":{"id":3}}'); + controller.url = 'test.com'; + $httpBackend.whenGET(`${controller.url}?filter={"fields":{"id":true,"name":true},"where":{"id":3}}`).respond(); + $httpBackend.expectGET(`${controller.url}?filter={"fields":{"id":true,"name":true},"where":{"id":3}}`); controller.items = [{id: 1, name: 'test1'}, {id: 2, name: 'Bruce Wayne'}]; controller.field = 3; $httpBackend.flush(); @@ -154,28 +145,28 @@ describe('Component vnAutocomplete', () => { }); }); - describe('findItem()', () => { - it(`should return items empty array if the controller does not provide a url and have no items defined`, () => { - let controller = $componentController('vnIconMenu', {$scope, $element, $httpBackend, $timeout}); - controller.findItems('some search value'); - - expect(controller.items).not.toBeDefined(); - }); - - it(`should return items array if the controller does not provide a url`, () => { - let controller = $componentController('vnIconMenu', {$scope, $element, $httpBackend, $timeout}); - controller.items = ['Batman', 'Bruce Wayne']; - controller.findItems('some search value'); - - expect(controller.items.length).toEqual(2); - }); - + describe('findItems()', () => { it(`should perform a search and store the result in controller items`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}, {url: 'test.com'}); + let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); + controller.url = 'test.com'; let search = 'The Joker'; - let json = JSON.stringify({where: {name: {regexp: search}}}); - $httpBackend.whenGET(`test.com?filter=${json}`).respond([{id: 3, name: 'The Joker'}]); - $httpBackend.expectGET(`test.com?filter=${json}`); + let json = JSON.stringify({where: {name: {regexp: search}}, order: controller.order}); + $httpBackend.whenGET(`${controller.url}?filter=${json}`).respond([{id: 3, name: 'The Joker'}]); + $httpBackend.expectGET(`${controller.url}?filter=${json}`); + controller.findItems(search); + $httpBackend.flush(); + + expect(controller.items[0]).toEqual({id: 3, name: 'The Joker'}); + }); + + it(`should perform a search and store the result in controller items with filterSearch`, () => { + let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}); + controller.url = 'test.com'; + let search = 'The Joker'; + controller.filterSearch = "{where: {surname: {regexp: 'search'}}}"; + let json = JSON.stringify({where: {surname: {regexp: search}}, order: controller.order}); + $httpBackend.whenGET(`${controller.url}?filter=${json}`).respond([{id: 3, name: 'The Joker'}]); + $httpBackend.expectGET(`${controller.url}?filter=${json}`); controller.findItems(search); $httpBackend.flush(); @@ -183,12 +174,12 @@ describe('Component vnAutocomplete', () => { }); it(`should perform a search with multiple true and store the result in controller items with the checked property defined`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}, {url: 'test.com'}); + controller.url = 'test.com'; let search = 'Joker'; controller.multiple = true; - let json = JSON.stringify({where: {name: {regexp: search}}}); - $httpBackend.whenGET(`test.com?filter=${json}`).respond([{id: 3, name: 'The Joker'}, {id: 4, name: 'Joker'}]); - $httpBackend.expectGET(`test.com?filter=${json}`); + let json = JSON.stringify({where: {name: {regexp: search}}, order: controller.order}); + $httpBackend.whenGET(`${controller.url}?filter=${json}`).respond([{id: 3, name: 'The Joker'}, {id: 4, name: 'Joker'}]); + $httpBackend.expectGET(`${controller.url}?filter=${json}`); controller.findItems(search); $httpBackend.flush(); @@ -196,7 +187,7 @@ describe('Component vnAutocomplete', () => { }); it(`should call getItems function if there's no search value`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}, {url: 'test.com'}); + controller.url = 'test.com'; spyOn(controller, 'getItems'); controller.findItems(); @@ -206,9 +197,9 @@ describe('Component vnAutocomplete', () => { describe('getItems()', () => { it(`should perfom a query to fill the items without filter`, () => { - let controller = $componentController('vnAutocomplete', {$scope, $element, $httpBackend, $timeout}, {url: 'test.com'}); - $httpBackend.whenGET(`test.com?filter={"skip":0,"limit":10,"order":"name ASC"}`).respond([{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce Wayne'}]); - $httpBackend.expectGET(`test.com?filter={"skip":0,"limit":10,"order":"name ASC"}`); + controller.url = 'test.com'; + $httpBackend.whenGET(`${controller.url}?filter={"skip":0,"limit":10,"order":"name ASC"}`).respond([{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce Wayne'}]); + $httpBackend.expectGET(`${controller.url}?filter={"skip":0,"limit":10,"order":"name ASC"}`); controller.getItems(); $httpBackend.flush(); diff --git a/client/core/src/check/check.js b/client/core/src/check/check.js index 5976a6625..aea298be9 100644 --- a/client/core/src/check/check.js +++ b/client/core/src/check/check.js @@ -2,6 +2,7 @@ import {module as _module} from '../module'; import * as resolveFactory from '../lib/resolveDefaultComponents'; import * as normalizerFactory from '../lib/inputAttrsNormalizer'; import * as util from '../lib/util'; +import './style.css'; const _NAME = 'check'; export const NAME = util.getName(_NAME); diff --git a/client/core/src/check/style.css b/client/core/src/check/style.css new file mode 100644 index 000000000..1088ad05e --- /dev/null +++ b/client/core/src/check/style.css @@ -0,0 +1,3 @@ +vn-check { + float: left; +} \ No newline at end of file diff --git a/client/core/src/column-header/column-header.js b/client/core/src/column-header/column-header.js index b153f0987..2f5f4d3c3 100644 --- a/client/core/src/column-header/column-header.js +++ b/client/core/src/column-header/column-header.js @@ -21,6 +21,12 @@ export default class ColumnHeader { } return showArrow; } + $onInit() { + if (this.defaultOrder) { + this.order = this.defaultOrder; + this.onClick(); + } + } } ColumnHeader.$inject = []; @@ -29,7 +35,8 @@ module.component('vnColumnHeader', { bindings: { field: '@?', text: '@?', - className: '@?' + className: '@?', + defaultOrder: '@?' }, require: { gridHeader: '^^vnGridHeader' diff --git a/client/core/src/column-header/column-header.spec.js b/client/core/src/column-header/column-header.spec.js index 247b75993..5c6d29d73 100644 --- a/client/core/src/column-header/column-header.spec.js +++ b/client/core/src/column-header/column-header.spec.js @@ -2,6 +2,7 @@ import './column-header.js'; describe('Component vnColumnHeader', () => { let $componentController; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -9,11 +10,12 @@ describe('Component vnColumnHeader', () => { beforeEach(angular.mock.inject(_$componentController_ => { $componentController = _$componentController_; + controller = $componentController('vnColumnHeader', {}); })); describe('onClick()', () => { it(`should change the ordenation to DESC (descendant) if it was ASC (ascendant)`, () => { - let controller = $componentController('vnColumnHeader', {}, {gridHeader: {selectColum: () => {}}}); + controller.gridHeader = {selectColum: () => {}}; controller.order = 'ASC'; controller.onClick(); @@ -21,7 +23,7 @@ describe('Component vnColumnHeader', () => { }); it(`should change the ordenation to ASC (ascendant) if it wasnt ASC`, () => { - let controller = $componentController('vnColumnHeader', {}, {gridHeader: {selectColum: () => {}}}); + controller.gridHeader = {selectColum: () => {}}; controller.order = 'DESC or any other value that might occur'; controller.onClick(); @@ -29,7 +31,7 @@ describe('Component vnColumnHeader', () => { }); it(`should call the selectColum() function after changing a value`, () => { - let controller = $componentController('vnColumnHeader', {}, {gridHeader: {selectColum: () => {}}}); + controller.gridHeader = {selectColum: () => {}}; controller.order = 'Change me!'; spyOn(controller.gridHeader, 'selectColum'); controller.onClick(); @@ -40,7 +42,7 @@ describe('Component vnColumnHeader', () => { describe('showArrow()', () => { it(`should return true when the type is DESC and MouseIsOver`, () => { - let controller = $componentController('vnColumnHeader', {}, {gridHeader: {selectColum: () => {}}}); + controller.gridHeader = {selectColum: () => {}}; controller.mouseIsOver = true; let result = controller.showArrow('DESC'); @@ -48,7 +50,7 @@ describe('Component vnColumnHeader', () => { }); it(`should return true if many conditions are true`, () => { - let controller = $componentController('vnColumnHeader', {}, {gridHeader: {currentColumn: {field: 'fields should be identical'}}}); + controller.gridHeader = {currentColumn: {field: 'fields should be identical'}}; controller.field = 'fields should be identical'; controller.order = 'ASC'; let result = controller.showArrow('ASC'); @@ -57,7 +59,7 @@ describe('Component vnColumnHeader', () => { }); it(`should return false without type being DESC or any other values being true`, () => { - let controller = $componentController('vnColumnHeader', {}, {gridHeader: {currentColumn: {field: 'this field isnt the same as controllers field'}}}); + controller.gridHeader = {currentColumn: {field: 'fields should be identical'}}; controller.field = 'I am the controllers field'; controller.order = 'ASC'; let result = controller.showArrow('ASC'); @@ -65,4 +67,22 @@ describe('Component vnColumnHeader', () => { expect(result).toEqual(false); }); }); + + describe('onInit()', () => { + it(`should never call onClick()`, () => { + spyOn(controller, 'onClick'); + controller.$onInit(); + + expect(controller.onClick).not.toHaveBeenCalledWith(); + }); + + it(`should define controllers order as per defaultOrder then call onClick()`, () => { + controller.defaultOrder = 'ASC'; + spyOn(controller, 'onClick'); + controller.$onInit(); + + expect(controller.order).toEqual('ASC'); + expect(controller.onClick).toHaveBeenCalledWith(); + }); + }); }); diff --git a/client/core/src/datePicker/datePicker.html b/client/core/src/datePicker/datePicker.html index b4cb4c83f..d91f0a53f 100644 --- a/client/core/src/datePicker/datePicker.html +++ b/client/core/src/datePicker/datePicker.html @@ -1,19 +1,21 @@ -
+
- - + rule="{{::$ctrl.rule}}"/> + +
+ query_builder + clear +
+
\ No newline at end of file diff --git a/client/core/src/datePicker/datePicker.js b/client/core/src/datePicker/datePicker.js index 43f34d9df..2ebed10d6 100644 --- a/client/core/src/datePicker/datePicker.js +++ b/client/core/src/datePicker/datePicker.js @@ -27,7 +27,9 @@ class DatePicker extends Component { this.enabled = true; this._modelView = null; this._model = undefined; - + this._optionsChecked = false; + this.hasFocus = false; + this.hasMouseIn = false; componentHandler.upgradeElement($element[0].firstChild); } @@ -37,7 +39,8 @@ class DatePicker extends Component { set model(value) { this._model = value; if (value && !this.modelView) { - let initialDateFormat = (this.iniOptions && this.iniOptions.dateFormat) ? this.iniOptions.dateFormat : 'Y-m-d'; + let options = this._getOptions(); + let initialDateFormat = (options && options.dateFormat) ? options.dateFormat : 'Y-m-d'; let format = this._formatFlat2Angular(initialDateFormat); this.modelView = this.$filter('date')(value, format); } @@ -135,9 +138,12 @@ class DatePicker extends Component { } } - $onInit() { - if (!this.iniOptions) + _getOptions() { + if (this.iniOptions && this._optionsChecked) { + return this.iniOptions; + } else if (!this.iniOptions) { this.iniOptions = {}; + } if (!this.iniOptions.locale) this.iniOptions.locale = this.$translate.use(); @@ -157,9 +163,14 @@ class DatePicker extends Component { } ); } + this._optionsChecked = true; + return this.iniOptions; + } - if (this.input) - this.vp = new Flatpickr(this.input, this.iniOptions); + $onInit() { + this.iniOptions = this._getOptions(); + this.isTimePicker = (this.iniOptions && this.iniOptions.enableTime && this.iniOptions.noCalendar); + this.vp = new Flatpickr(this.input, this.iniOptions); } $onDestroy() { if (this.vp) diff --git a/client/core/src/datePicker/datePicker.spec.js b/client/core/src/datePicker/datePicker.spec.js index ebea87ccf..bd0807dd7 100644 --- a/client/core/src/datePicker/datePicker.spec.js +++ b/client/core/src/datePicker/datePicker.spec.js @@ -6,36 +6,35 @@ describe('Component vnDatePicker', () => { let $timeout; let $element; let $translate; + let controller; beforeEach(() => { angular.mock.module('client'); }); - beforeEach(angular.mock.inject((_$componentController_, $rootScope, _$timeout_) => { + beforeEach(angular.mock.inject((_$componentController_, $rootScope, _$timeout_, _$translate_) => { $componentController = _$componentController_; $scope = $rootScope.$new(); $timeout = _$timeout_; $element = angular.element(`
`); - $translate = {}; + $translate = _$translate_; + controller = $componentController('vnDatePicker', {$scope, $element, $translate, $timeout}); })); describe('_formatFlat2Angular()', () => { it(`should format date from Y-m-d to yyyy-MM-dd`, () => { - let controller = $componentController('vnDatePicker', {$scope, $element, $translate, $timeout}); let formatedDate = controller._formatFlat2Angular(`Y-m-d`); expect(formatedDate).toBe('yyyy-MM-dd'); }); it(`should format date from d-m-Y to dd-MM-yyyy`, () => { - let controller = $componentController('vnDatePicker', {$scope, $element, $translate, $timeout}); let formatedDate = controller._formatFlat2Angular(`d-m-Y`); expect(formatedDate).toBe('dd-MM-yyyy'); }); it(`should split the given string into parts`, () => { - let controller = $componentController('vnDatePicker', {$scope, $element, $translate, $timeout}); controller.iniOptions = {dateFormat: 'd/m/Y'}; controller.model = '2017-12-23'; diff --git a/client/core/src/datePicker/style.scss b/client/core/src/datePicker/style.scss index f1bd30dab..d729ba947 100644 --- a/client/core/src/datePicker/style.scss +++ b/client/core/src/datePicker/style.scss @@ -1,12 +1,18 @@ vn-date-picker { + div { + outline: none; //remove chrome outline + } .mdl-chip__action { - position: absolute; + position: absolute; + width: auto; top: 0px; right: -6px; margin: 22px 0px; background-color: white; } .material-icons { - font-size: 18px; + font-size: 18px; + float: right; + margin-right: 5px; } } \ No newline at end of file diff --git a/client/core/src/dialog/dialog.spec.js b/client/core/src/dialog/dialog.spec.js index 5102966d4..e13242d6b 100644 --- a/client/core/src/dialog/dialog.spec.js +++ b/client/core/src/dialog/dialog.spec.js @@ -1,8 +1,7 @@ -import './dialog.js'; - describe('Component vnDialog', () => { let $componentController; let $element; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -11,13 +10,15 @@ describe('Component vnDialog', () => { beforeEach(angular.mock.inject(_$componentController_ => { $componentController = _$componentController_; $element = angular.element('
'); + controller = $componentController('vnDialog', {$element}); })); describe('show()', () => { it(`should define keypressHandler function, call addEventListener function and define element.style.display to block then call onOpen function`, () => { window.innerHeight = 600; window.innerWidth = 800; - let controller = $componentController('vnDialog', {$element}, {onOpen: () => {}, dialog: {style: {}, offsetWidth: 780, offsetHeight: 581}}); + controller.onOpen = () => {}; + controller.dialog = {style: {}, offsetWidth: 780, offsetHeight: 581}; spyOn(controller.document, 'addEventListener'); spyOn(controller, 'onOpen'); controller.show(); @@ -31,7 +32,7 @@ describe('Component vnDialog', () => { it(`should define keypressHandler function, call addEventListener function and define element.style.display to block and never call onOpen function`, () => { window.innerHeight = 600; window.innerWidth = 800; - let controller = $componentController('vnDialog', {$element}, {dialog: {style: {}, offsetWidth: 781, offsetHeight: 581}}); + controller.dialog = {style: {}, offsetWidth: 781, offsetHeight: 581}; spyOn(controller.document, 'addEventListener'); controller.show(); @@ -44,7 +45,6 @@ describe('Component vnDialog', () => { describe('hide()', () => { it(`should call fireResponse() and realHide()`, () => { - let controller = $componentController('vnDialog', {$element}); spyOn(controller, 'fireResponse'); spyOn(controller, 'realHide'); controller.hide(); @@ -56,7 +56,6 @@ describe('Component vnDialog', () => { describe('fireResponse()', () => { it(`should return cancel as false`, () => { - let controller = $componentController('vnDialog', {$element}); let result = controller.fireResponse('I am the answer!'); expect(controller.onResponse).not.toBeDefined(); @@ -65,9 +64,9 @@ describe('Component vnDialog', () => { it(`should return onResponse()`, () => { let text = 'I am the answer!'; - let controller = $componentController('vnDialog', {$element}, {onResponse: () => { + controller.onResponse = () => { return {response: text}; - }}); + }; let result = controller.fireResponse(text); expect(result.response).toEqual(text); @@ -76,7 +75,6 @@ describe('Component vnDialog', () => { describe('realHide()', () => { it(`should set element.style.display and lastEvent properties and call removeEvenListener()`, () => { - let controller = $componentController('vnDialog', {$element}); spyOn(controller.document, 'removeEventListener'); expect(controller.element.style.display).not.toEqual('none'); @@ -91,7 +89,6 @@ describe('Component vnDialog', () => { describe('onButtonClick()', () => { it(`should call realHide if cancel isn't false`, () => { - let controller = $componentController('vnDialog', {$element}); controller.element = document.createElement('div'); controller.element.className = 'tpl-buttons'; let childElement = document.createElement('div'); @@ -106,7 +103,6 @@ describe('Component vnDialog', () => { }); it(`should call fireResponse with the value of response`, () => { - let controller = $componentController('vnDialog', {$element}); controller.element = document.createElement('div'); controller.element.className = 'tpl-buttons'; let childElement = document.createElement('div'); @@ -125,7 +121,6 @@ describe('Component vnDialog', () => { describe('onDialogMouseDown()', () => { it(`should set controller's lastEvent property`, () => { - let controller = $componentController('vnDialog', {$element}); controller.element = document.createElement('div'); let event = {target: controller.element}; controller.onDialogMouseDown(event); @@ -136,7 +131,6 @@ describe('Component vnDialog', () => { describe('onBackgroundMouseDown()', () => { it(`shouldn't call hide() function as event equals lastEvent`, () => { - let controller = $componentController('vnDialog', {$element}); controller.element = document.createElement('div'); let event = {target: controller.element}; controller.lastEvent = event; @@ -147,7 +141,6 @@ describe('Component vnDialog', () => { }); it(`should call hide() function as event doesn't equal lastEvent`, () => { - let controller = $componentController('vnDialog', {$element}); controller.element = document.createElement('div'); let event = {target: controller.element}; controller.lastEvent = event; @@ -161,7 +154,6 @@ describe('Component vnDialog', () => { describe('onKeypress()', () => { it(`should call hide() if the key pressed equal the code 27`, () => { - let controller = $componentController('vnDialog', {$element}); controller.element = document.createElement('div'); let event = {target: controller.element}; event.keyCode = 27; @@ -172,7 +164,6 @@ describe('Component vnDialog', () => { }); it(`should't call hide() as the key pressed equal the code 999`, () => { - let controller = $componentController('vnDialog', {$element}); controller.element = document.createElement('div'); let event = {target: controller.element}; event.keyCode = 999; diff --git a/client/core/src/directives/acl.js b/client/core/src/directives/acl.js index 713c61e27..362dad65d 100644 --- a/client/core/src/directives/acl.js +++ b/client/core/src/directives/acl.js @@ -19,8 +19,8 @@ function vnAcl(aclService, $timeout) { $timeout(() => { input.setAttribute("disabled", "true"); }); - $element[0].querySelectorAll('i, vn-drop-down').forEach(i => { - i.parentNode.removeChild(i); + $element[0].querySelectorAll('i, vn-drop-down').forEach(element => { + element.parentNode.removeChild(element); }); } } else { diff --git a/client/core/src/directives/dialog.js b/client/core/src/directives/dialog.js index d4ac65b45..5ee10258e 100644 --- a/client/core/src/directives/dialog.js +++ b/client/core/src/directives/dialog.js @@ -11,7 +11,8 @@ export function directive() { restrict: 'A', link: function($scope, $element, $attrs) { $element.on('click', function(event) { - let dialog = $scope[kebabToCamel($attrs.vnDialog)]; + let dialogKey = kebabToCamel($attrs.vnDialog); + let dialog = $scope[dialogKey]; if (dialog instanceof Dialog) dialog.show(); event.preventDefault(); diff --git a/client/core/src/directives/focus.js b/client/core/src/directives/focus.js index 39ae0f196..bf4d86122 100644 --- a/client/core/src/directives/focus.js +++ b/client/core/src/directives/focus.js @@ -2,6 +2,8 @@ import {module} from '../module'; /** * Sets the focus and selects the text on the input. + * + * @return {Object} The directive */ export function directive() { return { diff --git a/client/core/src/directives/repeat.js b/client/core/src/directives/repeat.js deleted file mode 100644 index 643b86a4a..000000000 --- a/client/core/src/directives/repeat.js +++ /dev/null @@ -1,16 +0,0 @@ -import {module} from '../module'; - -directive.$inject = ['$compile']; -function directive($compile) { - return { - restrict: 'A', - priority: 9999, - link: function(scope, element, attrs) { - element.removeAttr('vn-repeat'); - element.attr('ng-repeat', attrs.vnRepeat); - $compile(element)(scope); - } - }; -} - -module.directive('vnRepeat', directive); diff --git a/client/core/src/directives/specs/acl.spec.js b/client/core/src/directives/specs/acl.spec.js new file mode 100644 index 000000000..615de5146 --- /dev/null +++ b/client/core/src/directives/specs/acl.spec.js @@ -0,0 +1,54 @@ +describe('Directive acl', () => { + let scope; + let element; + let compile; + let $timeout; + + beforeEach(() => { + angular.mock.module('client'); + }); + + compile = (hasPermissions, _element) => { + inject(($compile, $rootScope, aclService, _$timeout_) => { + spyOn(aclService, 'aclPermission').and.returnValue(hasPermissions); + scope = $rootScope.$new(); + $timeout = _$timeout_; + element = angular.element(_element); + $compile(element)(scope); + scope.$digest(); + }); + }; + + it('should not disable the input element as the user has permision', () => { + let html = `
`; + compile(true, html); + let input = element.find('input'); + + expect(input).toBeDefined(); + expect(input.attr('disabled')).toBeFalsy(); + }); + + it('should delete the element as the user does not have permission and there is no action', () => { + let html = `
`; + compile(false, html); + + expect(element.children().length).toEqual(0); + }); + + it('should disable the element as the action is to disable it but the user has no permission but present', () => { + let html = `
`; + compile(false, html); + let input = element.find('input'); + $timeout.flush(); + + expect(input).toBeDefined(); + expect(input.attr('disabled')).toBeTruthy(); + }); + + it('should delete any element with the tag i and vn-drop-down', () => { + let html = `
`; + compile(false, html); + + expect(element.find('i').length).toBe(0); + }); +}); diff --git a/client/core/src/directives/specs/dialog.spec.js b/client/core/src/directives/specs/dialog.spec.js new file mode 100644 index 000000000..38d4ed9e2 --- /dev/null +++ b/client/core/src/directives/specs/dialog.spec.js @@ -0,0 +1,37 @@ +describe('Directive dialog', () => { + let $scope; + let $element; + let element; + let compile; + let $componentController; + let controller; + + beforeEach(() => { + angular.mock.module('client'); + }); + + compile = _element => { + inject(($compile, $rootScope) => { + $scope = $rootScope.$new(); + $scope.myDialog = controller; + element = angular.element(_element); + $compile(element)($scope); + $scope.$digest(); + }); + }; + + beforeEach(angular.mock.inject(_$componentController_ => { + $componentController = _$componentController_; + $element = angular.element('
'); + controller = $componentController('vnDialog', {$element}); + })); + + it('should call show() function if dialog is a instance of vnDialog', () => { + let html = `
`; + spyOn(controller, 'show'); + compile(html); + element[0].click(); + + expect(controller.show).toHaveBeenCalledWith(); + }); +}); diff --git a/client/core/src/directives/specs/focus.spec.js b/client/core/src/directives/specs/focus.spec.js new file mode 100644 index 000000000..f610e9ffb --- /dev/null +++ b/client/core/src/directives/specs/focus.spec.js @@ -0,0 +1,55 @@ +describe('Directive focus', () => { + let $scope; + let $element; + let compile; + + beforeEach(() => { + angular.mock.module('client'); + }); + + compile = (_element, _childElement) => { + inject(($compile, $rootScope) => { + $scope = $rootScope.$new(); + $element = angular.element(_element); + if (_childElement) { + let childElement = angular.element(_childElement); + $element[0] < childElement; + $element[0].firstChild.focus = jasmine.createSpy(focus); + } + $element[0].focus = jasmine.createSpy('focus'); + $element[0].select = jasmine.createSpy('select'); + $compile($element)($scope); + $scope.$digest(); + }); + }; + + it('should call the querySelector function upon the input to redefine it with the expected selector then call focus', () => { + let html = `
`; + let childHtml = ''; + compile(html, childHtml); + + expect($element[0].firstChild.focus).toHaveBeenCalled(); + }); + + it('should print a warning message on console', () => { + let html = ``; + console.warn = jasmine.createSpy('warn'); + compile(html); + + expect(console.warn).toHaveBeenCalledWith(`vnFocus: Can't find a focusable element`); + }); + + it('should call focus function on the element', () => { + let html = ``; + compile(html); + + expect($element[0].focus).toHaveBeenCalledWith(); + }); + + it('should call select function on the element', () => { + let html = ``; + compile(html); + + expect($element[0].select).toHaveBeenCalledWith(); + }); +}); diff --git a/client/core/src/directives/specs/id.spec.js b/client/core/src/directives/specs/id.spec.js new file mode 100644 index 000000000..5755d1ea9 --- /dev/null +++ b/client/core/src/directives/specs/id.spec.js @@ -0,0 +1,43 @@ +describe('Directive vnId', () => { + let $scope; + let $element; + let compile; + + beforeEach(() => { + angular.mock.module('client'); + }); + + compile = _element => { + inject(($compile, $rootScope) => { + $scope = $rootScope.$new(); + $element = angular.element(_element); + $compile($element)($scope); + $scope.$digest(); + }); + }; + + it(`should throw an error when there's no id defined`, () => { + let html = ``; + + expect(() => { + compile(html); + }).toThrow(new Error(`vnId: Attribute can't be null`)); + }); + + it(`should throw an error when these's no controller defined in $element[0]`, () => { + let html = `
`; + + expect(() => { + compile(html); + }).toThrow(new Error(`vnId: Can't find controller for element '1'`)); + }); + + it(`should set the controller into the $scope as there are no errors being thrown`, () => { + let html = `
`; + + expect($scope['1']).not.toBeDefined(); + compile(html); + + expect($scope['1']).toBeDefined(); + }); +}); diff --git a/client/core/src/directives/specs/validation.spec.js b/client/core/src/directives/specs/validation.spec.js new file mode 100644 index 000000000..e69de29bb diff --git a/client/core/src/drop-down/drop-down.spec.js b/client/core/src/drop-down/drop-down.spec.js index 4e2b8d5b9..23fab3b08 100644 --- a/client/core/src/drop-down/drop-down.spec.js +++ b/client/core/src/drop-down/drop-down.spec.js @@ -5,6 +5,7 @@ describe('Component vnDropDown', () => { let $timeout; let $element; let $filter; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -15,11 +16,11 @@ describe('Component vnDropDown', () => { $element = angular.element('
'); $timeout = _$timeout_; $filter = _$filter_; + controller = $componentController('vnDropDown', {$element, $timeout, $filter}); })); describe('show() setter', () => { it(`should define controllers _show using the value received as argument`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller._show = 'old value'; controller.show = 'new value'; @@ -29,21 +30,18 @@ describe('Component vnDropDown', () => { describe('search()', () => { it(`should set controllers _search property with the value received`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller.search = 'some filter valiue'; expect(controller._search).toEqual('some filter valiue'); }); it(`should set controllers _search property to null as the value received is an empty string`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller.search = ''; expect(controller._search).toEqual(null); }); it(`should call onFilterRest() if controllers filterAction is defined`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller.filterAction = true; spyOn(controller, 'onFilterRest'); controller.search = 'some filter valiue'; @@ -52,7 +50,6 @@ describe('Component vnDropDown', () => { }); it(`should call filterItems() if controllers filterAction is undefined`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller.filterAction = undefined; spyOn(controller, 'filterItems'); controller.search = 'some filter valiue'; @@ -63,7 +60,6 @@ describe('Component vnDropDown', () => { describe('activeOption() setter', () => { it(`should set _activeOption as items.length if showLoadMore is defined if activeOption is bigger than items.length then call loadItems()`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); spyOn(controller, 'loadItems'); controller.showLoadMore = true; controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce'}, {id: 3, name: 'Logan'}, {id: 4, name: 'Wolverine'}]; @@ -75,7 +71,6 @@ describe('Component vnDropDown', () => { }); it(`should set _activeOption as activeOption if showLoadMore is defined if activeOption is smaller than items.length then call loadItems()`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); spyOn(controller, 'loadItems'); controller.showLoadMore = true; controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce'}, {id: 3, name: 'Logan'}, {id: 4, name: 'Wolverine'}]; @@ -87,7 +82,6 @@ describe('Component vnDropDown', () => { }); it(`should set _activeOption as items.length -1 if showLoadMore is not defined then call loadItems()`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); spyOn(controller, 'loadItems'); controller.showLoadMore = undefined; controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce'}, {id: 3, name: 'Logan'}, {id: 4, name: 'Wolverine'}]; @@ -99,7 +93,6 @@ describe('Component vnDropDown', () => { }); it(`should define _activeOption as activeOption and never call loadItems()`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); spyOn(controller, 'loadItems'); controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce'}, {id: 3, name: 'Logan'}, {id: 4, name: 'Wolverine'}, {id: 5, name: 'Doctor X'}]; controller.activeOption = 1; @@ -112,7 +105,6 @@ describe('Component vnDropDown', () => { describe('filterItems() setter', () => { it(`should set _itemsFiltered using the value of items`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller.items = [{id: 1, name: 'Batman'}]; controller.filterItems(); @@ -120,7 +112,6 @@ describe('Component vnDropDown', () => { }); it(`should set _itemsFiltered with the filtered value of items`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce'}, {id: 3, name: 'Logan'}, {id: 4, name: 'Wolverine'}]; controller.search = 'Batman'; controller.filterItems(); @@ -129,7 +120,6 @@ describe('Component vnDropDown', () => { }); it(`should set _itemsFiltered an empty array`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce'}, {id: 3, name: 'Logan'}, {id: 4, name: 'Wolverine'}]; controller.search = 'the Joker'; @@ -139,7 +129,7 @@ describe('Component vnDropDown', () => { describe('onFilterRest()', () => { it(`should call the filterAction() with a constructed object as argument`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}, {filterAction: () => {}}); + controller.filterAction = () => {}; controller.search = 'Batman'; spyOn(controller, 'filterAction'); controller.onFilterRest(); @@ -150,7 +140,6 @@ describe('Component vnDropDown', () => { describe('$onChanges()', () => { it(`should set the top css of the $element`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); let argumentObject = {show: true, top: {currentValue: 100}}; spyOn(controller.$element, 'css'); controller.$onChanges(argumentObject); @@ -159,7 +148,6 @@ describe('Component vnDropDown', () => { }); it(`should set the width css of the $element`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); let argumentObject = {show: true, itemWidth: {currentValue: 100}}; spyOn(controller.$element, 'css'); controller.$onChanges(argumentObject); @@ -168,7 +156,6 @@ describe('Component vnDropDown', () => { }); it(`should set the width css of the $element`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); let argumentObject = {items: {id: 1, name: 'Batman'}}; spyOn(controller, 'filterItems'); controller.$onChanges(argumentObject); @@ -179,7 +166,6 @@ describe('Component vnDropDown', () => { describe('clearSearch()', () => { it(`should set the controllers search property to null`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller.search = true; controller.clearSearch(); @@ -189,7 +175,6 @@ describe('Component vnDropDown', () => { describe('selectOption()', () => { it(`should set controllers selected and show properties then call clearSearch() as _activeOption is smaller than items.length`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); spyOn(controller, 'clearSearch'); controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce'}, {id: 3, name: 'Logan'}, {id: 4, name: 'Wolverine'}]; controller._activeOption = 0; @@ -201,7 +186,6 @@ describe('Component vnDropDown', () => { }); it(`should not set controllers selected, show and never call clearSearch() as _activeOption is bigger than items.length`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); spyOn(controller, 'clearSearch'); controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce'}, {id: 3, name: 'Logan'}, {id: 4, name: 'Wolverine'}]; controller._activeOption = 100; @@ -213,7 +197,7 @@ describe('Component vnDropDown', () => { }); it(`should call loadMore() if the activeValue equals items.length`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}, {loadMore: () => {}}); + controller.loadMore = () => {}; spyOn(controller, 'loadMore'); controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce'}, {id: 3, name: 'Logan'}, {id: 4, name: 'Wolverine'}]; controller._activeOption = 4; @@ -226,7 +210,6 @@ describe('Component vnDropDown', () => { describe('onKeydown()', () => { it(`should call selectOption() and preventDefault() if Enter key is pressed`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); spyOn(controller, 'selectOption'); controller._show = true; controller.element = document.createElement('div'); @@ -241,7 +224,6 @@ describe('Component vnDropDown', () => { }); it(`should call clearSearch() Esc key is pressed`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); spyOn(controller, 'clearSearch'); controller._show = true; controller.element = document.createElement('div'); @@ -253,7 +235,6 @@ describe('Component vnDropDown', () => { }); it(`should call clearSearch() Esc key is pressed and take off 1 from _activeOption`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce'}, {id: 3, name: 'Logan'}, {id: 4, name: 'Wolverine'}]; spyOn(controller, 'setScrollPosition'); controller._show = true; @@ -269,7 +250,6 @@ describe('Component vnDropDown', () => { }); it(`should call clearSearch() Esc key is pressed and add up 1 to _activeOption`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller.items = [{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce'}, {id: 3, name: 'Logan'}, {id: 4, name: 'Wolverine'}]; spyOn(controller, 'setScrollPosition'); controller._show = true; @@ -291,7 +271,6 @@ describe('Component vnDropDown', () => { let child = $element[0].firstChild.firstChild; child.scrollIntoView = () => {}; spyOn(child, 'scrollIntoView'); - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller._activeOption = 0; controller.setScrollPosition(); @@ -301,7 +280,6 @@ describe('Component vnDropDown', () => { describe('selectItem()', () => { it(`should pass item to selected and set controller._show to false`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); let item = {id: 1, name: 'Batman'}; controller.selectItem(item); @@ -310,7 +288,6 @@ describe('Component vnDropDown', () => { }); it(`should pass item to selected and set controller._show to true if the controller.multiple is defined`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); let item = {id: 1, name: 'Batman'}; controller.multiple = true; controller.selectItem(item); @@ -322,14 +299,14 @@ describe('Component vnDropDown', () => { describe('loadItems()', () => { it(`should set controller._show to true`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); controller.loadItems(); expect(controller._show).toEqual(true); }); it(`should call loadMore() and then set controller._show to true`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}, {showLoadMore: () => {}, loadMore: () => {}}); + controller.showLoadMore = () => {}; + controller.loadMore = () => {}; spyOn(controller, 'loadMore'); controller.loadItems(); @@ -340,7 +317,6 @@ describe('Component vnDropDown', () => { describe('$onInit()', () => { it(`should add an event listener to the parent element`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); spyOn(controller.parent, 'addEventListener'); controller.$onInit(); @@ -350,7 +326,6 @@ describe('Component vnDropDown', () => { describe('$onDestroy()', () => { it(`should remove an event listener from the parent element`, () => { - let controller = $componentController('vnDropDown', {$element, $timeout, $filter}); spyOn(controller.parent, 'removeEventListener'); controller.$onDestroy(); diff --git a/client/core/src/grid-header/grid-header.spec.js b/client/core/src/grid-header/grid-header.spec.js index 4b9e20da0..03294a348 100644 --- a/client/core/src/grid-header/grid-header.spec.js +++ b/client/core/src/grid-header/grid-header.spec.js @@ -2,6 +2,7 @@ import './grid-header.js'; describe('Component vnGridHeader', () => { let $componentController; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -9,11 +10,11 @@ describe('Component vnGridHeader', () => { beforeEach(angular.mock.inject(_$componentController_ => { $componentController = _$componentController_; + controller = $componentController('vnGridHeader', {}); })); describe('selectColum()', () => { it(`should set controller currentColumn to equal the argument received`, () => { - let controller = $componentController('vnGridHeader', {}); let col = {columnStuff: 'some stuff'}; controller.selectColum(col); @@ -21,7 +22,6 @@ describe('Component vnGridHeader', () => { }); it(`should set controller currentColumn.order to undefined then set currentColumn to equal the argument received`, () => { - let controller = $componentController('vnGridHeader', {}); controller.currentColumn = {field: 'some field', order: 'ordered'}; let col = {columnStuff: 'some stuff'}; controller.selectColum(col); @@ -31,7 +31,6 @@ describe('Component vnGridHeader', () => { }); it(`should set controller currentColumn.order to undefined then call onOrder passing currentColumn as argument`, () => { - let controller = $componentController('vnGridHeader', {}); controller.onOrder = () => {}; spyOn(controller, 'onOrder'); let col = {columnStuff: 'some stuff'}; diff --git a/client/core/src/icon-menu/icon-menu.html b/client/core/src/icon-menu/icon-menu.html index 9cf978b55..6f49a6f7e 100644 --- a/client/core/src/icon-menu/icon-menu.html +++ b/client/core/src/icon-menu/icon-menu.html @@ -1,5 +1,8 @@
- +
{ let $httpBackend; let $timeout; let $scope; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -17,19 +18,21 @@ describe('Component vnIconMenu', () => { $timeout = _$timeout_; $scope = $rootScope.$new(); $element = angular.element('
'); + controller = $componentController('vnIconMenu', {$scope, $element, $httpBackend, $timeout}, {url: 'test.com'}); })); describe('component vnIconMenu', () => { describe('findItem()', () => { it(`should return items empty array if the controller does not provide a url and have no items defined`, () => { - let controller = $componentController('vnIconMenu', {$scope, $element, $httpBackend, $timeout}); - controller.findItems('some search value'); + controller.url = undefined; + controller.items = undefined; + let result = controller.findItems('some search value'); - expect(controller.items).not.toBeDefined(); + expect(result).toEqual([]); }); it(`should return items array if the controller does not provide a url`, () => { - let controller = $componentController('vnIconMenu', {$scope, $element, $httpBackend, $timeout}); + controller.url = undefined; controller.items = ['Batman', 'Bruce Wayne']; controller.findItems('some search value'); @@ -37,11 +40,10 @@ describe('Component vnIconMenu', () => { }); it(`should perform a search and store the result in controller items`, () => { - let controller = $componentController('vnIconMenu', {$scope, $element, $httpBackend, $timeout}, {url: 'test.com'}); let search = 'The Joker'; let json = JSON.stringify({where: {name: {regexp: search}}}); - $httpBackend.whenGET(`test.com?filter=${json}`).respond([{id: 3, name: 'The Joker'}]); - $httpBackend.expectGET(`test.com?filter=${json}`); + $httpBackend.whenGET(`${controller.url}?filter=${json}`).respond([{id: 3, name: 'The Joker'}]); + $httpBackend.expectGET(`${controller.url}?filter=${json}`); controller.findItems(search); $httpBackend.flush(); @@ -49,7 +51,6 @@ describe('Component vnIconMenu', () => { }); it(`should call getItems function if there's no search value`, () => { - let controller = $componentController('vnIconMenu', {$scope, $element, $httpBackend, $timeout}, {url: 'test.com'}); spyOn(controller, 'getItems'); controller.findItems(); @@ -57,18 +58,27 @@ describe('Component vnIconMenu', () => { }); }); - // implementation pending. + describe('getItems()', () => { + it(`should perform a query and then push elements found into controller.items`, () => { + controller.items = []; + $httpBackend.whenGET(`${controller.url}?filter={}`).respond([{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce Wayne'}]); + $httpBackend.expectGET(`${controller.url}?filter={}`); + controller.getItems(); + $httpBackend.flush(); - // describe('getItems()', () => { - // it(`should perfom a query to fill the items without filter`, () => { - // let controller = $componentController('vnIconMenu', {$scope, $element, $httpBackend, $timeout}, {url: 'test.com'}); - // $httpBackend.whenGET(`test.com?filter={}`).respond([{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce Wayne'}]); - // $httpBackend.expectGET(`test.com?filter={}`); - // controller.getItems(); - // $httpBackend.flush(); + expect(controller.items).toEqual([{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce Wayne'}]); + }); - // expect(controller.items).toEqual([{id: 1, name: 'Batman'}, {id: 2, name: 'Bruce Wayne'}]); - // }); - // }); + it(`should perform a query and then set controller.maxRow to false if there are no items in the controller`, () => { + controller.items = []; + controller.maxRow = true; + $httpBackend.whenGET(`${controller.url}?filter={"skip":0,"limit":true,"order":"name ASC"}`).respond(controller.items); + $httpBackend.expectGET(`${controller.url}?filter={"skip":0,"limit":true,"order":"name ASC"}`); + controller.getItems(); + $httpBackend.flush(); + + expect(controller.maxRow).toBeFalsy(); + }); + }); }); }); diff --git a/client/core/src/icon-menu/style.scss b/client/core/src/icon-menu/style.scss index e4e6b4104..2d3919f4d 100644 --- a/client/core/src/icon-menu/style.scss +++ b/client/core/src/icon-menu/style.scss @@ -1,3 +1,12 @@ vn-icon-menu{ position: relative; + .icon-menu__button { + padding: 0 10px; + } + vn-icon{ + float: left; + } + vn-icon.icon-menu__arrow_down{ + margin:2px 0 0 5px; + } } \ No newline at end of file diff --git a/client/core/src/icon/style.css b/client/core/src/icon/style.css index 064195cd9..881f6d304 100644 --- a/client/core/src/icon/style.css +++ b/client/core/src/icon/style.css @@ -5,4 +5,4 @@ vn-icon { vn-icon > i { display: block; font-size: inherit !important; -} \ No newline at end of file +} diff --git a/client/salix/src/aclService.js b/client/core/src/lib/aclService.js similarity index 84% rename from client/salix/src/aclService.js rename to client/core/src/lib/aclService.js index 63e75278c..78e5d2365 100644 --- a/client/salix/src/aclService.js +++ b/client/core/src/lib/aclService.js @@ -1,4 +1,7 @@ -import ngModule from './module'; +import {module} from '../module'; + +var acl = window.salix ? window.salix.acl : {}; +module.constant('aclConstant', acl); aclService.$inject = ['aclConstant']; function aclService(aclConstant) { @@ -29,4 +32,4 @@ function aclService(aclConstant) { }; } -ngModule.service('aclService', aclService); +module.service('aclService', aclService); diff --git a/client/core/src/lib/index.js b/client/core/src/lib/index.js index c911e09a3..a081b5f87 100644 --- a/client/core/src/lib/index.js +++ b/client/core/src/lib/index.js @@ -4,6 +4,8 @@ import './template'; import './getTemplate'; import './app'; import './interceptor'; +import './aclService'; +import './storageServices'; export * from './util'; export {default as splitingRegister} from './splitingRegister'; diff --git a/client/core/src/lib/storageServices.js b/client/core/src/lib/storageServices.js new file mode 100644 index 000000000..ee64b6f0c --- /dev/null +++ b/client/core/src/lib/storageServices.js @@ -0,0 +1,66 @@ +import {module} from '../module'; + +class VnStorage { + constructor() { + this._type = ''; + this.prefix = 'vn'; + } + set type(value) { + this._type = value; + this.checkSupport(); + } + get type() { + return this._type; + } + get webStorage() { + return window[this.type]; + } + checkSupport() { + try { + let supported = (this.type in window && window[this.type] !== null); + if (supported) { + let key = '__' + Math.round(Math.random() * 1e7); + let webStorage = window[this.type]; + webStorage.setItem(key, ''); + webStorage.removeItem(key); + } + } catch (e) { + console.error('VnStorage.notification.error', e.message); + return false; + } + } + get(param) { + let toRead = this.webStorage.getItem(`${this.prefix}.${param}`); + if (toRead && toRead.startsWith('jsonObject:')) { + toRead = JSON.parse(toRead.replace('jsonObject:', '')); + } + return toRead; + } + set(param, data) { + let toStorage = typeof data === 'object' ? `jsonObject:${JSON.stringify(data)}` : data; + this.webStorage.setItem(`${this.prefix}.${param}`, toStorage); + } + remove(param) { + this.webStorage.removeItem(`${this.prefix}.${param}`); + } + clear() { + this.webStorage.clear(); + } +} + +class SessionStorage extends VnStorage { + constructor() { + super(); + this.type = 'sessionStorage'; + } +} + +class LocalStorage extends VnStorage { + constructor() { + super(); + this.type = 'localStorage'; + } +} + +module.service('sessionStorage', SessionStorage); +module.service('localStorage', LocalStorage); diff --git a/client/core/src/multi-check/multi-check.html b/client/core/src/multi-check/multi-check.html index 3ddd0e0a3..36f7f3ec7 100644 --- a/client/core/src/multi-check/multi-check.html +++ b/client/core/src/multi-check/multi-check.html @@ -1,4 +1,4 @@ - + diff --git a/client/core/src/multi-check/multi-check.js b/client/core/src/multi-check/multi-check.js index 010c66aed..4ab7c87ce 100644 --- a/client/core/src/multi-check/multi-check.js +++ b/client/core/src/multi-check/multi-check.js @@ -2,15 +2,40 @@ import {module} from '../module'; import './multi-check.scss'; /** * Draw checkbox with a drop-down and multi options + * @param {SmallInt} checkAll Primary input-check state: 0 -> uncheck, 1 -> checked, 2 -> indeterminate checked * @param {Array} options List of options shown in drop-down * @param {Array} models Elements to check / unCheck * @param {String} className Optional css class name */ export default class MultiCheck { - constructor() { + constructor($timeout) { + this.$timeout = $timeout; this._checkAll = 0; this._models = []; - this.type = {}; + this._type = {}; + this.showDropDown = false; + } + + get type() { + return this._type; + } + + set type(value) { + if (value && value.id) { + this._type = value; + switch (value.id) { + case 'all': + this.checkAll = 1; + break; + case 'any': + this.checkAll = 0; + break; + default: + this.checkAll = 2; + break; + } + } + this._type = {}; this.showDropDown = false; } @@ -39,12 +64,12 @@ export default class MultiCheck { if (this.type.id && this.type.id !== 'all' && this.type.id !== 'any') { if (this.type.id.length > 3 && this.type.id.substr(0, 3) === 'no-') { let label = this.type.id.replace('no-', ''); - checked = el[label] == null; + checked = Boolean(el[label]) === false; } else if (this.type.id.length > 6 && this.type.id.substr(0, 6) === 'equal-') { let label = this.type.id.replace('equal-', ''); checked = (el[label] && el[label] === this.type.name); } else { - checked = el[this.type.id] != null; + checked = Boolean(el[this.type.id]) === true; } } else { checked = this.checkAll === 1; @@ -59,25 +84,14 @@ export default class MultiCheck { this.checkAll = 0; } - $doCheck() { - if (this.type && this.type.id) { - switch (this.type.id) { - case 'all': - this.checkAll = 1; - break; - case 'any': - this.checkAll = 0; - break; - default: - this.checkAll = 2; - break; - } - this.type = {}; - } + onBlur() { + this.$timeout(() => { + this.showDropDown = false; + }, 200); } } -MultiCheck.$inject = []; +MultiCheck.$inject = ['$timeout']; module.component('vnMultiCheck', { template: require('./multi-check.html'), @@ -85,7 +99,7 @@ module.component('vnMultiCheck', { bindings: { checkAll: '=', options: '<', - models: '=', + models: '<', className: '@?' } }); diff --git a/client/core/src/multi-check/multi-check.spec.js b/client/core/src/multi-check/multi-check.spec.js index 337cf1ac4..a221e3cc7 100644 --- a/client/core/src/multi-check/multi-check.spec.js +++ b/client/core/src/multi-check/multi-check.spec.js @@ -2,6 +2,7 @@ import './multi-check.js'; describe('Component vnMultiCheck', () => { let $componentController; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -9,11 +10,11 @@ describe('Component vnMultiCheck', () => { beforeEach(angular.mock.inject(_$componentController_ => { $componentController = _$componentController_; + controller = $componentController('vnMultiCheck', {}); })); describe('models()', () => { it(`should set controller _models property with the argument received`, () => { - let controller = $componentController('vnMultiCheck', {}); let argument = 'I am the model'; controller.models = argument; @@ -23,7 +24,6 @@ describe('Component vnMultiCheck', () => { describe('checkAll()', () => { it(`should set controller _checkAll property with the argument received then call switchChecks()`, () => { - let controller = $componentController('vnMultiCheck', {}); let argument = 'I am the model'; spyOn(controller, 'switchChecks'); controller.checkAll = argument; @@ -34,8 +34,7 @@ describe('Component vnMultiCheck', () => { }); describe('switchChecks()', () => { - it(`should set checked property inside each existing elemenet when begings with no-`, () => { - let controller = $componentController('vnMultiCheck', {}); + it(`should set checked property inside each existing elemenet when id begings with no-`, () => { controller.type = {id: 'no-name'}; controller.models = [ {name: 'name'}, @@ -47,12 +46,11 @@ describe('Component vnMultiCheck', () => { controller._checkAll = 1; controller.switchChecks(); - expect(controller._models[0].checked).toBeFalsy(); + expect(controller._models[0].checked).toBeTruthy(); expect(controller._models[1].checked).toBeTruthy(); }); - it(`should set checked property inside each existing elemenet when begings with equal-`, () => { - let controller = $componentController('vnMultiCheck', {}); + it(`should set checked property inside each existing elemenet when id begings with equal-`, () => { controller.type = {id: 'equal-name', name: 'name'}; controller.models = [ {name: null}, @@ -64,12 +62,11 @@ describe('Component vnMultiCheck', () => { controller._checkAll = 1; controller.switchChecks(); - expect(controller._models[0].checked).toBeFalsy(); + expect(controller._models[0].checked).toBeTruthy(); expect(controller._models[1].checked).toBeTruthy(); }); it(`should set checked property inside each existing elemenet when begings with anything but any, all, no- or equal-`, () => { - let controller = $componentController('vnMultiCheck', {}); controller.type = {id: 'name'}; controller.models = [ {name: null}, @@ -81,13 +78,12 @@ describe('Component vnMultiCheck', () => { controller._checkAll = 1; controller.switchChecks(); - expect(controller._models[0].checked).toBeFalsy(); + expect(controller._models[0].checked).toBeTruthy(); expect(controller._models[1].checked).toBeTruthy(); }); describe('when id is any', () => { it('should set element checked property based on controller._checkAll', () => { - let controller = $componentController('vnMultiCheck', {}); controller.type = {id: 'any'}; controller.models = [ {name: 'name'} @@ -111,7 +107,6 @@ describe('Component vnMultiCheck', () => { describe('when id is all', () => { it('should set element checked property based on controller._checkAll property', () => { - let controller = $componentController('vnMultiCheck', {}); controller.type = {id: 'all'}; controller.models = [ {name: 'name'} @@ -136,7 +131,6 @@ describe('Component vnMultiCheck', () => { describe('$onChanges()', () => { it('should set controller.type to empty object and checkAll to zero', () => { - let controller = $componentController('vnMultiCheck', {}); controller.type = {id: 'all'}; controller._checkAll = 1; controller.$onChanges(); @@ -146,22 +140,21 @@ describe('Component vnMultiCheck', () => { }); }); - describe('$doCheck()', () => { + describe('type setter', () => { it('should set controller.type to empty object and checkAll based on controller.type.id', () => { - let controller = $componentController('vnMultiCheck', {}); - controller.type = {id: 'all'}; + let value = {id: 'all'}; controller._checkAll = 0; - controller.$doCheck(); + controller.type = value; expect(controller.type).toEqual({}); expect(controller._checkAll).toEqual(1); - controller.type = {id: 'any'}; - controller.$doCheck(); + value = {id: 'any'}; + controller.type = value; expect(controller.type).toEqual({}); expect(controller._checkAll).toEqual(0); - controller.type = {id: 'any other id name'}; - controller.$doCheck(); + value = {id: 'any other id name'}; + controller.type = value; expect(controller.type).toEqual({}); expect(controller._checkAll).toEqual(2); diff --git a/client/core/src/paging/paging.html b/client/core/src/paging/paging.html index 6e2f56fd3..6e71f321d 100644 --- a/client/core/src/paging/paging.html +++ b/client/core/src/paging/paging.html @@ -1,6 +1,7 @@ { let $componentController; let $scope; let $httpBackend; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -13,11 +14,11 @@ describe('Component vnPaging', () => { $componentController = _$componentController_; $scope = $rootScope.$new(); $httpBackend = _$httpBackend_; + controller = $componentController('vnPaging', {$scope, $httpBackend}); })); describe('$onChanges()', () => { it(`should define numberPage and currentPage based on index.filter properties`, () => { - let controller = $componentController('vnPaging', {$scope, $httpBackend}); controller.index = {filter: {size: 'something', page: 'something else'}}; controller.$onChanges({index: 'simpleChange', currentValue: 'current value', previousValue: 'previous value'}); @@ -26,7 +27,6 @@ describe('Component vnPaging', () => { }); it(`should define numItems based on changes.total.currentValue`, () => { - let controller = $componentController('vnPaging', {$scope, $httpBackend}); controller.index = {filter: {size: 'something', page: 'something else'}}; controller.$onChanges({total: {currentValue: 'current value'}}); @@ -36,7 +36,6 @@ describe('Component vnPaging', () => { describe('onModelUpdated()', () => { it(`should define controllers numItems as the result of page times size plus one`, () => { - let controller = $componentController('vnPaging', {$scope, $httpBackend}); controller.numPerPage = 2; controller.index = { filter: {size: 10, page: 10}, @@ -50,8 +49,7 @@ describe('Component vnPaging', () => { describe('onPageChange()', () => { it(`should call accept() since pageChange property is undefined`, () => { - let myIndex = {accept: () => {}, filter: {page: 0}}; - let controller = $componentController('vnPaging', {$scope, $httpBackend}, {index: myIndex}); + controller.index = {accept: () => {}, filter: {page: 0}}; spyOn(controller.index, 'accept'); controller.onPageChange(100); @@ -59,8 +57,7 @@ describe('Component vnPaging', () => { }); it(`should call pageChange() since pageChange property isn't undefined`, () => { - let myIndex = {accept: () => {}, filter: {page: 0}}; - let controller = $componentController('vnPaging', {$scope, $httpBackend}, {index: myIndex}); + controller.index = {accept: () => {}, filter: {page: 0}}; controller.pageChange = true; spyOn(controller, 'pageChange'); controller.onPageChange(100); diff --git a/client/core/src/spinner/spinner.spec.js b/client/core/src/spinner/spinner.spec.js new file mode 100644 index 000000000..d5bad0746 --- /dev/null +++ b/client/core/src/spinner/spinner.spec.js @@ -0,0 +1,63 @@ +import './spinner.js'; + +describe('Component vnSpinner', () => { + let $componentController; + let $scope; + let $element; + let controller; + + beforeEach(() => { + angular.mock.module('client'); + }); + + beforeEach(angular.mock.inject((_$componentController_, $rootScope) => { + $componentController = _$componentController_; + $scope = $rootScope.$new(); + $element = angular.element('
'); + controller = $componentController('vnSpinner', {$scope, $element}); + })); + + describe('enable()', () => { + it(`should call start() based on a boolean value passed as argument`, () => { + spyOn(controller, 'start'); + spyOn(controller, 'stop'); + controller.enable = true; + + expect(controller.start).toHaveBeenCalledWith(); + expect(controller.stop).not.toHaveBeenCalledWith(); + }); + + it(`should call stop() based on a boolean value passed as argument`, () => { + spyOn(controller, 'start'); + spyOn(controller, 'stop'); + controller.enable = false; + + expect(controller.start).not.toHaveBeenCalledWith(); + expect(controller.stop).toHaveBeenCalledWith(); + }); + }); + + describe('start()', () => { + it(`should call start() on the controller.materialSpinner then set controllers._enable to be truthy`, () => { + controller.spinner = {MaterialSpinner: {start: () => {}}}; + spyOn(controller.spinner.MaterialSpinner, 'start'); + controller._enable = false; + controller.start(); + + expect(controller.spinner.MaterialSpinner.start).toHaveBeenCalledWith(); + expect(controller._enable).toBeTruthy(); + }); + }); + + describe('stop()', () => { + it(`should call stop() on the controller.materialSpinner then set controllers._enable to be truthy`, () => { + controller.spinner = {MaterialSpinner: {stop: () => {}}}; + spyOn(controller.spinner.MaterialSpinner, 'stop'); + controller._enable = true; + controller.stop(); + + expect(controller.spinner.MaterialSpinner.stop).toHaveBeenCalledWith(); + expect(controller._enable).toBeFalsy(); + }); + }); +}); diff --git a/client/core/src/textfield/textfield.spec.js b/client/core/src/textfield/textfield.spec.js index 5140bfab8..9eea12b0c 100644 --- a/client/core/src/textfield/textfield.spec.js +++ b/client/core/src/textfield/textfield.spec.js @@ -6,6 +6,7 @@ describe('Component vnTextfield', () => { let $attrs; let $timeout; let $element; + let controller; beforeEach(() => { angular.mock.module('client'); @@ -17,11 +18,11 @@ describe('Component vnTextfield', () => { $attrs = {}; $timeout = _$timeout_; $element = angular.element('
'); + controller = $componentController('vnTextfield', {$scope, $element, $attrs, $timeout}); })); describe('value() setter', () => { it(`should set _value, input.value and hasValue properties to null, '' and false then call mdlUpdate()`, () => { - let controller = $componentController('vnTextfield', {$scope, $element, $attrs, $timeout}); spyOn(controller, 'mdlUpdate'); let testValue = ''; controller.value = testValue; @@ -33,7 +34,6 @@ describe('Component vnTextfield', () => { }); it(`should set _value, input.value and hasValue propertiest to test, test and true then call mdlUpdate()`, () => { - let controller = $componentController('vnTextfield', {$scope, $element, $attrs, $timeout}); spyOn(controller, 'mdlUpdate'); let testValue = 'test'; controller.value = testValue; diff --git a/client/core/src/watcher/watcher.js b/client/core/src/watcher/watcher.js index bb6b753b2..2dbc5a2bc 100644 --- a/client/core/src/watcher/watcher.js +++ b/client/core/src/watcher/watcher.js @@ -59,7 +59,7 @@ export default class Watcher extends Component { * Submits the data and goes back in the history. */ submitBack() { - this.submit().then( + return this.submit().then( () => this.window.history.back() ); } @@ -69,7 +69,7 @@ export default class Watcher extends Component { * @param {String} state The state name */ submitGo(state) { - this.submit().then( + return this.submit().then( () => this.$state.go(state) ); } diff --git a/client/core/src/watcher/watcher.spec.js b/client/core/src/watcher/watcher.spec.js new file mode 100644 index 000000000..0ed342e31 --- /dev/null +++ b/client/core/src/watcher/watcher.spec.js @@ -0,0 +1,293 @@ +import './watcher.js'; +import getModifiedData from '../lib/modified'; + +describe('Component vnWatcher', () => { + let $componentController; + let $scope; + let $element; + let $state; + let $transitions; + let $httpBackend; + let vnApp; + let $translate; + let controller; + + beforeEach(() => { + angular.mock.module('client'); + }); + + beforeEach(angular.mock.inject((_$componentController_, $rootScope, _$state_, _$transitions_, _$httpBackend_, _vnApp_, _$translate_) => { + $componentController = _$componentController_; + $scope = $rootScope.$new(); + $element = angular.element('
'); + $state = _$state_; + vnApp = _vnApp_; + $transitions = _$transitions_; + $httpBackend = _$httpBackend_; + $translate = _$translate_; + controller = $componentController('vnWatcher', {$scope, $element, $state, vnApp, $transitions, $httpBackend, $translate}); + })); + + describe('$onInit()', () => { + it(`should call fetchData() if controllers get and url properties are defined`, () => { + controller.get = () => {}; + controller.url = 'test.com'; + spyOn(controller, 'fetchData'); + controller.$onInit(); + + expect(controller.fetchData).toHaveBeenCalledWith(); + }); + + it(`should throw an error if $onInit is called without url defined`, () => { + controller.get = () => {}; + + expect(function() { + controller.$onInit(); + }).toThrow(new Error('Error: Parameter url ommitted')); + }); + }); + + describe('$onChanges()', () => { + it(`should call updateOriginalData() if controllers data is defined`, () => { + controller.data = []; + spyOn(controller, 'updateOriginalData'); + controller.$onChanges(); + + expect(controller.updateOriginalData).toHaveBeenCalledWith(); + }); + }); + + describe('$onDestroy()', () => { + it(`should call deregisterCallback()`, () => { + spyOn(controller, 'deregisterCallback'); + controller.$onDestroy(); + + expect(controller.deregisterCallback).toHaveBeenCalledWith(); + }); + }); + + describe('fetchData()', () => { + it(`should perform a query then store the received data into controller.data and call updateOriginalData()`, () => { + spyOn(controller, 'updateOriginalData'); + let json = {data: 'some data'}; + controller.data = [1]; + controller.idField = 0; + controller.url = 'test.com'; + $httpBackend.whenGET('test.com/1').respond(json); + $httpBackend.expectGET('test.com/1'); + controller.fetchData(); + $httpBackend.flush(); + + expect(controller.data).toEqual({data: 'some data'}); + expect(controller.updateOriginalData).toHaveBeenCalledWith(); + }); + }); + + describe('submitBack()', () => { + it(`should call controller.window.history.back() function after calling controllers submit() function`, done => { + spyOn(controller, 'submit').and.returnValue(Promise.resolve()); + spyOn(controller.window.history, 'back'); + controller.submitBack() + .then(() => { + expect(controller.submit).toHaveBeenCalledWith(); + expect(controller.window.history.back).toHaveBeenCalledWith(); + done(); + }); + }); + }); + + describe('submitGo()', () => { + it(`should call controller.$state.go() function after calling controllers submit() function`, done => { + spyOn(controller, 'submit').and.returnValue(Promise.resolve()); + spyOn(controller.$state, 'go'); + let state = 'the state'; + controller.submitGo(state) + .then(() => { + expect(controller.submit).toHaveBeenCalledWith(); + expect(controller.$state.go).toHaveBeenCalledWith(state); + done(); + }); + }); + }); + + describe('submit()', () => { + describe('when controller.form', () => { + it(`should call controller.form.setSubminted if controller.form is defined`, () => { + controller.form = {$setSubmitted: () => {}}; + spyOn(controller.form, '$setSubmitted'); + controller.submit(); + + expect(controller.form.$setSubmitted).toHaveBeenCalledWith(); + }); + + it(`should call controller.invalidForm if controller.form.$valid is not defined`, () => { + controller.form = {$setSubmitted: () => {}}; + spyOn(controller, 'invalidForm'); + controller.submit(); + + expect(controller.invalidForm).toHaveBeenCalledWith(jasmine.any(Function)); + }); + }); + + describe('when !controller.dataChanged()', () => { + it(`should call controller.noChanges()`, () => { + spyOn(controller, 'noChanges'); + controller.submit(); + + expect(controller.noChanges).toHaveBeenCalledWith(jasmine.any(Function)); + }); + }); + + describe('when controller.save()', () => { + it(`should set controller.save.model property`, () => { + controller.save = {}; + controller.data = {originalInfo: 'original data', info: 'new data'}; + controller.orgData = {originalInfo: 'original data'}; + controller.submit(); + + expect(controller.save.model).toEqual({info: 'new data'}); + }); + + it(`should call controller.save.accept() then controller.writeData`, done => { + controller.save = {accept: () => {}}; + controller.data = {originalInfo: 'original data', info: 'new data'}; + controller.orgData = {originalInfo: 'original data'}; + spyOn(controller.save, 'accept').and.returnValue(Promise.resolve()); + spyOn(controller, 'writeData').and.callThrough(); + controller.submit() + .then(() => { + expect(controller.save.accept).toHaveBeenCalledWith(); + expect(controller.writeData).toHaveBeenCalledWith(jasmine.any(Object), jasmine.any(Function)); + done(); + }); + }); + }); + + describe('when id is defined', () => { + it(`should perform a query then call controller.writeData()`, () => { + controller.dataChanged = () => { + return true; + }; + controller.data = {id: 2}; + controller.orgData = {id: 1}; + let changedData = getModifiedData(controller.data, controller.orgData); + controller.idField = 'id'; + controller.url = 'test.com'; + let json = {data: 'some data'}; + spyOn(controller, 'writeData').and.callThrough(); + $httpBackend.whenPATCH(`${controller.url}/1`, changedData).respond(json); + $httpBackend.expectPATCH(`${controller.url}/1`); + controller.submit() + .then(() => { + expect(controller.writeData).toHaveBeenCalledWith(jasmine.any(Object), jasmine.any(Function)); + done(); + }); + $httpBackend.flush(); + }); + }); + + it(`should perform a POST query then call controller.writeData()`, () => { + controller.dataChanged = () => { + return true; + }; + controller.data = {id: 2}; + controller.orgData = {id: 1}; + controller.url = 'test.com'; + let json = {data: 'some data'}; + spyOn(controller, 'writeData').and.callThrough(); + $httpBackend.whenPOST(`${controller.url}`, controller.data).respond(json); + $httpBackend.expectPOST(`${controller.url}`, controller.data); + controller.submit() + .then(() => { + expect(controller.writeData).toHaveBeenCalledWith(jasmine.any(Object), jasmine.any(Function)); + done(); + }); + $httpBackend.flush(); + }); + }); + + describe('writeData()', () => { + it(`should call Object.asssign() function over controllers.data with json.data, then call updateOriginalData function and finally call resolve() function`, () => { + spyOn(controller, 'updateOriginalData'); + controller.data = {}; + let json = {data: 'some data'}; + let resolve = jasmine.createSpy('resolve'); + controller.writeData(json, resolve); + + expect(controller.updateOriginalData).toHaveBeenCalledWith(); + expect(resolve).toHaveBeenCalledWith(json); + }); + }); + + describe('copyInNewObject()', () => { + it(`should return newCopy object if data was an object`, () => { + let data = {id: 1, Heroname: 'Batman', name: 'Bruce Wayne'}; + let result = controller.copyInNewObject(data); + + expect(result).toEqual(data); + }); + }); + + describe('callback()', () => { + describe(`when dataChanged() returns true and there's no state in the controller`, () => { + it(`should define controller.state, call controller.$scope.confirm.show() and return false`, () => { + $scope.confirm = {show: jasmine.createSpy('show')}; + controller.dataChanged = () => { + return true; + }; + controller.state = undefined; + let transition = {to: () => { + return {name: 'Batman'}; + }}; + let result = controller.callback(transition); + + expect(controller.state).toEqual('Batman'); + expect(controller.$scope.confirm.show).toHaveBeenCalledWith(); + expect(result).toBeFalsy(); + }); + }); + + describe(`when dataChanged() returns false and/or there's a state in the controller`, () => { + it(`should return true`, () => { + $scope.confirm = {show: jasmine.createSpy('show')}; + controller.dataChanged = () => { + return false; + }; + controller.state = 'the state'; + let transition = {to: () => { + return {name: 'Batman'}; + }}; + let result = controller.callback(transition); + + expect(result).toBeTruthy(); + }); + }); + }); + + describe(`onConfirmResponse()`, () => { + describe(`when response is ACCEPT`, () => { + it(`should call Object.assing on controlle.data with controller.orgData then call go() on state`, () => { + let response = 'ACCEPT'; + controller.data = {}; + controller.orgData = {name: 'Batman'}; + controller.$state = {go: jasmine.createSpy('go')}; + controller.state = 'Batman'; + controller.onConfirmResponse(response); + + expect(controller.data).toEqual(controller.orgData); + expect(controller.$state.go).toHaveBeenCalledWith(controller.state); + }); + }); + + describe(`when response is not ACCEPT`, () => { + it(`should set controller.state to null`, () => { + let response = 'anything but ACCEPT'; + controller.state = 'Batman'; + controller.onConfirmResponse(response); + + expect(controller.state).toBeFalsy(); + }); + }); + }); +}); +// 309 \ No newline at end of file diff --git a/client/locator/index.js b/client/locator/index.js new file mode 100644 index 000000000..d2b755cd8 --- /dev/null +++ b/client/locator/index.js @@ -0,0 +1 @@ +export * from './src/locator'; diff --git a/client/locator/routes.json b/client/locator/routes.json new file mode 100644 index 000000000..b508fcc5f --- /dev/null +++ b/client/locator/routes.json @@ -0,0 +1,14 @@ +{ + "module": "locator", + "name": "Locator", + "icon": "add_location", + "validations" : false, + "routes": [ + { + "url": "/locator", + "state": "locator", + "component": "vn-locator-index", + "acl": ["developer"] + } + ] +} \ No newline at end of file diff --git a/client/locator/src/index/index.html b/client/locator/src/index/index.html new file mode 100644 index 000000000..4194c9db8 --- /dev/null +++ b/client/locator/src/index/index.html @@ -0,0 +1,39 @@ + + + + Routes locator +
+ + + + +
+ + + + + + + +
+ + + + + + + +
+
\ No newline at end of file diff --git a/client/locator/src/index/index.js b/client/locator/src/index/index.js new file mode 100644 index 000000000..f691f9ece --- /dev/null +++ b/client/locator/src/index/index.js @@ -0,0 +1,33 @@ +import ngModule from '../module'; + +class LocatorIndex { + constructor($state) { + this.$state = $state; + this.routes = []; + + for (let i = 1; i < 100; i++) { + let route = { + id: i, + zoneFk: Math.floor(Math.random() * 6) + 1, + postalcode: 46006, + order: Math.floor(Math.random() * 3) + 1, + preparado: '25/08', + entrada: '26/08', + ticket: 1547890 + i, + routeFk: Math.floor(Math.random() * 9999) + 1000, + alias: `Flores X${Math.floor(Math.random() * 3) + 1}`, + bultos: Math.floor(Math.random() * 20) + 10, + m3: (Math.random()).toFixed(2), + error: (Math.floor(Math.random() * 3) + 1) === 1 + }; + route.success = (!route.error && (Math.floor(Math.random() * 3) + 1) === 1); + this.routes.push(route); + } + } +} +LocatorIndex.$inject = ['$state']; + +ngModule.component('vnLocatorIndex', { + template: require('./index.html'), + controller: LocatorIndex +}); diff --git a/client/locator/src/locale/en.json b/client/locator/src/locale/en.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/client/locator/src/locale/en.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/client/locator/src/locale/es.json b/client/locator/src/locale/es.json new file mode 100644 index 000000000..e1ac63778 --- /dev/null +++ b/client/locator/src/locale/es.json @@ -0,0 +1,6 @@ +{ + "Routes locator": "Localizador de rutas", + "Filter": "Filtro", + "Store": "Almacén", + "Address": "Dirección" +} \ No newline at end of file diff --git a/client/locator/src/locator-actions/locator-actions.html b/client/locator/src/locator-actions/locator-actions.html new file mode 100644 index 000000000..e057bf6fb --- /dev/null +++ b/client/locator/src/locator-actions/locator-actions.html @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client/locator/src/locator-actions/locator-actions.js b/client/locator/src/locator-actions/locator-actions.js new file mode 100644 index 000000000..6f61ac81d --- /dev/null +++ b/client/locator/src/locator-actions/locator-actions.js @@ -0,0 +1,13 @@ +import ngModule from '../module'; + +class LocatorActions { + constructor($state) { + this.$state = $state; + } +} +LocatorActions.$inject = ['$state']; + +ngModule.component('vnLocatorActions', { + template: require('./locator-actions.html'), + controller: LocatorActions +}); diff --git a/client/locator/src/locator-table/locator-table.html b/client/locator/src/locator-table/locator-table.html new file mode 100644 index 000000000..79fbcce45 --- /dev/null +++ b/client/locator/src/locator-table/locator-table.html @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + {{::route.zoneFk}} + {{::route.postalcode}} + {{::route.order}} + {{::route.preparado}} + {{::route.entrada}} + {{::route.ticket}} + {{::route.routeFk}} + {{::route.alias}} + {{::route.bultos}} + {{::route.m3}} + + + + + + + + Address: {{::route.address}} + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client/locator/src/locator-table/locator-table.js b/client/locator/src/locator-table/locator-table.js new file mode 100644 index 000000000..2b8834a65 --- /dev/null +++ b/client/locator/src/locator-table/locator-table.js @@ -0,0 +1,46 @@ +import ngModule from '../module'; + +class LocatorTable { + constructor($filter) { + this.$filter = $filter; + this.itemsDisplayedInList = 7; + this.pageTable = { + filter: { + page: 1, + size: this.itemsDisplayedInList + }, + model: [] + }; + this._routes = []; + } + + set routes(value) { + this._routes = value; + this.totalFilter = this._routes.length; + this.pageTable.filter.page = 1; + this.paginate(); + } + get routes() { + return this._routes; + } + + onOrder(field, order) { + let reverse = order === 'DESC'; + this.routes = this.$filter('orderBy')(this.routes, field, reverse); + this.paginate(); + } + paginate() { + let init = (this.pageTable.filter.page - 1) * this.itemsDisplayedInList; + let fin = this.pageTable.filter.page * this.itemsDisplayedInList; + this.pageTable.model = this.routes.slice(init, fin); + } +} +LocatorTable.$inject = ['$filter']; + +ngModule.component('vnLocatorTable', { + template: require('./locator-table.html'), + bindings: { + routes: '<' + }, + controller: LocatorTable +}); diff --git a/client/locator/src/locator.js b/client/locator/src/locator.js new file mode 100644 index 000000000..4f53c473a --- /dev/null +++ b/client/locator/src/locator.js @@ -0,0 +1,5 @@ +export * from './module'; + +import './index/index'; +import './locator-actions/locator-actions'; +import './locator-table/locator-table'; diff --git a/client/locator/src/module.js b/client/locator/src/module.js new file mode 100644 index 000000000..2d50fd2ef --- /dev/null +++ b/client/locator/src/module.js @@ -0,0 +1,5 @@ +import {ng} from 'vendor'; +import 'core'; + +const ngModule = ng.module('locator', []); +export default ngModule; diff --git a/client/modules.json b/client/modules.json index 6dbad069d..62c5e11a1 100644 --- a/client/modules.json +++ b/client/modules.json @@ -4,5 +4,6 @@ "core": [], "client": [], "production": [], - "route": [] + "route": [], + "locator": [] } diff --git a/client/production/routes.json b/client/production/routes.json index 77c111ab8..1c3abd874 100644 --- a/client/production/routes.json +++ b/client/production/routes.json @@ -7,7 +7,8 @@ { "url": "/production", "state": "production", - "component": "vn-production-index" + "component": "vn-production-index", + "acl": ["developer"] } ] } \ No newline at end of file diff --git a/client/production/src/index/index.js b/client/production/src/index/index.js index 9adb6a739..fff350580 100644 --- a/client/production/src/index/index.js +++ b/client/production/src/index/index.js @@ -83,7 +83,15 @@ export default class ProductionIndex { event.preventDefault(); } onChildSubmit(filter) { - this.searchTickets(filter); + let newFilter = {}; + Object.keys(filter).forEach( + field => { + if (filter[field] !== null) { + newFilter[field] = filter[field]; + } + } + ); + this.searchTickets(newFilter); this.onChildCancel(); } onChildCancel() { @@ -93,7 +101,6 @@ export default class ProductionIndex { } searchTickets(filter) { this.filter = Object.assign({}, this.filter, filter || {}); - let filters = Object.assign({}, { where: this.filter }, { @@ -112,13 +119,13 @@ export default class ProductionIndex { } refreshTickets() { this.filter = {}; - this.filter.warehouseFk = this.userProfile.warehouseId; + this.filter.warehouseFk = this.$.displayValue = this.userProfile.warehouseId; this.search = null; } - onChangeWareHouse(item) { - if (item && item.id && item.id != this.filter.warehouseFk) { - this.filter.warehouseFk = item.id; - this.searchTickets(); + onChangeWareHouse(warehouse) { + if (warehouse && warehouse != this.filter.warehouseFk) { + this.filter.warehouseFk = warehouse; + this.searchTickets(this.filter); } } $onInit() { @@ -130,9 +137,10 @@ export default class ProductionIndex { hour += ':00'; this.hourItems.push({id: i, name: hour}); } - this.searchTickets(); + this.filter.warehouseFk = this.$.displayValue = this.userProfile.warehouseId; } } + ProductionIndex.$inject = ['$element', '$scope', '$http', 'vnPopover', 'aclConstant']; ngModule.component('vnProductionIndex', { diff --git a/client/production/src/production-table/production-table.js b/client/production/src/production-table/production-table.js index 96ebf6c2e..91c24314f 100644 --- a/client/production/src/production-table/production-table.js +++ b/client/production/src/production-table/production-table.js @@ -32,7 +32,6 @@ export class ProductionTable { onOrder(field, order) { let reverse = order === 'DESC'; this.tickets = this.$filter('orderBy')(this.tickets, field, reverse); - this.pageTickets(); } pageTickets() { let init = (this.pageTable.filter.page - 1) * this.itemsDisplayedInList; @@ -46,9 +45,9 @@ ProductionTable.$inject = ['$filter']; ngModule.component('vnProductionTable', { template: require('./production-table.html'), bindings: { - tickets: '=', + tickets: '<', footer: '<', - checkAll: '=' + checkAll: '<' }, controller: ProductionTable }); diff --git a/client/route/routes.json b/client/route/routes.json index 4980238a9..9e7c48833 100644 --- a/client/route/routes.json +++ b/client/route/routes.json @@ -13,7 +13,8 @@ { "url": "/list", "state": "routes.index", - "component": "vn-route-index" + "component": "vn-route-index", + "acl": ["developer"] }, { "url": "/create", @@ -34,7 +35,7 @@ "route": "$ctrl.route" }, "menu": { - "description": "Datos básicos", + "description": "Basic data", "icon": "person" } }, @@ -42,11 +43,12 @@ "url": "/logisticData", "state": "routes.card.logisticData", "component": "vn-route-logistic-data", + "acl": ["employee"], "params": { "route": "$ctrl.route" }, "menu": { - "description": "Datos logísticos", + "description": "Logistic data", "icon": "local_shipping" } }, @@ -58,7 +60,7 @@ "route": "$ctrl.route" }, "menu": { - "description": "Tickets asignados", + "description": "Assigned tickets", "icon": "assignment" } } diff --git a/client/route/src/basic-data/basic-data.html b/client/route/src/basic-data/basic-data.html new file mode 100644 index 000000000..cae7035da --- /dev/null +++ b/client/route/src/basic-data/basic-data.html @@ -0,0 +1,37 @@ + + +
+ + + Basic data + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/client/route/src/basic-data/basic-data.js b/client/route/src/basic-data/basic-data.js new file mode 100644 index 000000000..9f2278dbb --- /dev/null +++ b/client/route/src/basic-data/basic-data.js @@ -0,0 +1,8 @@ +import ngModule from '../module'; + +ngModule.component('vnRouteBasicData', { + template: require('./basic-data.html'), + bindings: { + route: '<' + } +}); diff --git a/client/route/src/card/card.html b/client/route/src/card/card.html index 985c02d90..c87155a74 100644 --- a/client/route/src/card/card.html +++ b/client/route/src/card/card.html @@ -8,11 +8,11 @@ - + local_shipping - + -
Ruta {{::$ctrl.route.id}}
+
Route {{::$ctrl.route.id}}
{{$ctrl.route.date | date:'dd/MM/yyyy'}}
diff --git a/client/route/src/card/style.css b/client/route/src/card/style.css new file mode 100644 index 000000000..e69de29bb diff --git a/client/route/src/create/create.html b/client/route/src/create/create.html index d1f8d77e9..90dddbf71 100644 --- a/client/route/src/create/create.html +++ b/client/route/src/create/create.html @@ -20,8 +20,19 @@
- - + + + +
diff --git a/client/route/src/index/googleMaps.svg b/client/route/src/index/googleMaps.svg new file mode 100644 index 000000000..9a7fc59d7 --- /dev/null +++ b/client/route/src/index/googleMaps.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/client/route/src/index/routeIn.svg b/client/route/src/index/routeIn.svg new file mode 100644 index 000000000..dec26dfbf --- /dev/null +++ b/client/route/src/index/routeIn.svg @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/client/route/src/index/routeOut.svg b/client/route/src/index/routeOut.svg new file mode 100644 index 000000000..7a69b7786 --- /dev/null +++ b/client/route/src/index/routeOut.svg @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/client/route/src/locale/es.json b/client/route/src/locale/es.json index 616431fe5..1c2b2f4c4 100644 --- a/client/route/src/locale/es.json +++ b/client/route/src/locale/es.json @@ -1,3 +1,17 @@ { - "Routes" : "Rutas" + "Basic data": "Datos básicos", + "Logistic data": "Datos logísticos", + "Assigned tickets": "Tickets asignados", + "Routes" : "Rutas", + "Route" : "Ruta", + "Date": "Fecha", + "Agency": "Agencia", + "Driver": "Conductor", + "Vehicle": "Vehículo", + "Start Hour" : "Hora Inicio", + "End Hour": "Hora Fin", + "Start Km": "Km Inicio", + "End Km": "Km Fin", + "Packages": "Bultos", + "Route document": "Documento de Ruta" } diff --git a/client/route/src/logistic-data/logistic-data.html b/client/route/src/logistic-data/logistic-data.html new file mode 100644 index 000000000..68bd3311d --- /dev/null +++ b/client/route/src/logistic-data/logistic-data.html @@ -0,0 +1,27 @@ + + +
+ + + Logistic data + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/client/route/src/logistic-data/logistic-data.js b/client/route/src/logistic-data/logistic-data.js new file mode 100644 index 000000000..4230a8282 --- /dev/null +++ b/client/route/src/logistic-data/logistic-data.js @@ -0,0 +1,8 @@ +import ngModule from '../module'; + +ngModule.component('vnRouteLogisticData', { + template: require('./logistic-data.html'), + bindings: { + route: '<' + } +}); diff --git a/client/route/src/route.js b/client/route/src/route.js index b490a2039..a9db6db33 100644 --- a/client/route/src/route.js +++ b/client/route/src/route.js @@ -5,3 +5,6 @@ import './index/index'; import './search-panel/search-panel'; import './create/create'; import './card/card'; +import './basic-data/basic-data'; +import './logistic-data/logistic-data'; +import './tickets/tickets'; diff --git a/client/route/src/tickets/tickets.html b/client/route/src/tickets/tickets.html new file mode 100644 index 000000000..e78e9ab70 --- /dev/null +++ b/client/route/src/tickets/tickets.html @@ -0,0 +1,7 @@ + + + + Assigned tickets + + + \ No newline at end of file diff --git a/client/route/src/tickets/tickets.js b/client/route/src/tickets/tickets.js new file mode 100644 index 000000000..2405d5d9e --- /dev/null +++ b/client/route/src/tickets/tickets.js @@ -0,0 +1,8 @@ +import ngModule from '../module'; + +ngModule.component('vnRouteTickets', { + template: require('./tickets.html'), + bindings: { + route: '<' + } +}); diff --git a/client/salix/src/app.js b/client/salix/src/app.js index 92caaf50c..a4b45629e 100644 --- a/client/salix/src/app.js +++ b/client/salix/src/app.js @@ -1,6 +1,5 @@ import './module'; import './spliting'; -import './aclService'; import './configroutes'; import './config'; import './run'; diff --git a/client/salix/src/components/left-menu/menu-item.html b/client/salix/src/components/left-menu/menu-item.html index b3315b2fa..6930039f0 100644 --- a/client/salix/src/components/left-menu/menu-item.html +++ b/client/salix/src/components/left-menu/menu-item.html @@ -2,6 +2,6 @@ keyboard_arrow_right {{$ctrl.item.icon}} - {{$ctrl.item.description}} + {{$ctrl.item.description}} \ No newline at end of file diff --git a/client/salix/src/components/main-menu/main-menu.html b/client/salix/src/components/main-menu/main-menu.html index 25b375fd3..5d96d9b19 100644 --- a/client/salix/src/components/main-menu/main-menu.html +++ b/client/salix/src/components/main-menu/main-menu.html @@ -1,9 +1,13 @@
- - +
  • diff --git a/client/salix/src/components/main-menu/style.scss b/client/salix/src/components/main-menu/style.scss index ea454ebf3..5e1781446 100644 --- a/client/salix/src/components/main-menu/style.scss +++ b/client/salix/src/components/main-menu/style.scss @@ -1,4 +1,13 @@ vn-main-menu { + & > div > vn-icon { + font-size: 2.5em; + cursor: pointer; + + &:hover { + color: #FF9300; + } + } + li.mdl-menu__item{ background-color: #FF9300; margin-bottom: 8px; diff --git a/client/salix/src/components/searchbar/searchbar.html b/client/salix/src/components/searchbar/searchbar.html index 179c77f7a..d4636aaf1 100644 --- a/client/salix/src/components/searchbar/searchbar.html +++ b/client/salix/src/components/searchbar/searchbar.html @@ -9,6 +9,6 @@ style="cursor: pointer;"> - + \ No newline at end of file diff --git a/client/salix/src/components/searchbar/searchbar.js b/client/salix/src/components/searchbar/searchbar.js index 5f3ad79be..2f0864bf7 100644 --- a/client/salix/src/components/searchbar/searchbar.js +++ b/client/salix/src/components/searchbar/searchbar.js @@ -1,15 +1,22 @@ import ngModule from '../../module'; export default class Controller { - constructor($element, $scope, $document, $compile, vnPopover, $window) { + constructor($element, $scope, $document, $compile, vnPopover, sessionStorage, $timeout) { this.element = $element[0]; this.$scope = $scope; this.$document = $document; this.$compile = $compile; this.vnPopover = vnPopover; - this.$window = $window; + this.sessionStorage = sessionStorage; + this.$timeout = $timeout; + } + clearFilter() { + this.index.filter = {}; + this.sessionStorage.remove('filter'); } onClick(event) { + this.search = null; + this.child = this.vnPopover.showComponent(this.popover, this.$scope, this.element); // XXX: ¿Existe una forma más adecuada de acceder al controlador de un componente? @@ -37,10 +44,10 @@ export default class Controller { delete this.child; } $onDestroy() { - this.$window.sessionStorage.removeItem('filter'); + this.clearFilter(); } } -Controller.$inject = ['$element', '$scope', '$document', '$compile', 'vnPopover', '$window']; +Controller.$inject = ['$element', '$scope', '$document', '$compile', 'vnPopover', 'sessionStorage', '$timeout']; ngModule.component('vnSearchbar', { template: require('./searchbar.html'), diff --git a/client/salix/src/config.js b/client/salix/src/config.js index f4ceea392..2d867074a 100644 --- a/client/salix/src/config.js +++ b/client/salix/src/config.js @@ -2,9 +2,6 @@ import ngModule from './module'; export const appName = 'salix'; -var acl = window[appName] ? window[appName].acl : {}; -ngModule.constant('aclConstant', acl); - config.$inject = ['$translatePartialLoaderProvider', '$httpProvider']; export function config($translatePartialLoaderProvider, $httpProvider) { $translatePartialLoaderProvider.addPart(appName); diff --git a/client/salix/src/configroutes.js b/client/salix/src/configroutes.js index 8a3bdd156..1d79c5bc2 100644 --- a/client/salix/src/configroutes.js +++ b/client/salix/src/configroutes.js @@ -11,8 +11,8 @@ function loader(moduleName, validations) { return load; } -config.$inject = ['$stateProvider', '$urlRouterProvider', 'aclServiceProvider']; -function config($stateProvider, $urlRouterProvider, aclServiceProvider) { +config.$inject = ['$stateProvider', '$urlRouterProvider', 'aclServiceProvider', 'modulesFactoryProvider']; +function config($stateProvider, $urlRouterProvider, aclServiceProvider, modulesFactory) { splitingRegister.registerGraph(deps); let aclService = aclServiceProvider.$get(); @@ -37,25 +37,32 @@ function config($stateProvider, $urlRouterProvider, aclServiceProvider) { template: '' }); - for (let file in routes) { - let fileRoutes = routes[file].routes; - let moduleName = routes[file].module; - let validations = routes[file].validations || false; - fileRoutes.forEach(function(route) { - if (aclService.routeHasPermission(route)) { - $stateProvider.state(route.state, { - url: route.url, - abstract: route.abstract || false, - template: `<${route.component} ${getParams(route)}>`, - resolve: { - loader: loader(moduleName, validations) - }, - data: { - routes: fileRoutes - } - }); + for (let file in window.routes) { + let fileRoutes = window.routes[file].routes; + let moduleName = window.routes[file].module; + let validations = window.routes[file].validations || false; + let mainModule = modulesFactory.$get().getMainRoute(fileRoutes); + if (mainModule) { + let count = fileRoutes.length; + for (let i = 0; i < count; i++) { + let route = fileRoutes[i]; + if (aclService.routeHasPermission(route)) { + $stateProvider.state(route.state, { + url: route.url, + abstract: route.abstract || false, + template: `<${route.component} ${getParams(route)}>`, + resolve: { + loader: loader(moduleName, validations) + }, + data: { + routes: fileRoutes + } + }); + } else if (route.state === mainModule.state) { + break; + } } - }); + } } } ngModule.config(config); diff --git a/client/salix/src/locale/es.json b/client/salix/src/locale/es.json index fc0932817..a5f88410b 100644 --- a/client/salix/src/locale/es.json +++ b/client/salix/src/locale/es.json @@ -11,5 +11,6 @@ "Clients": "Clientes", "Routes" : "Rutas", "Production" : "Producción", - "Modules access" : "Acceso a módulos" + "Modules access" : "Acceso a módulos", + "Locator": "Localizador" } \ No newline at end of file diff --git a/client/salix/src/modulesFactory.js b/client/salix/src/modulesFactory.js index a36b301ac..02c3e845c 100644 --- a/client/salix/src/modulesFactory.js +++ b/client/salix/src/modulesFactory.js @@ -1,7 +1,7 @@ import ngModule from './module'; function modulesFactory(aclService) { - function _getMainRoute(routeCollection) { + function getMainRoute(routeCollection) { let cant = routeCollection.length; for (let i = 0; i < cant; i++) { if (!routeCollection[i].abstract) { @@ -18,7 +18,7 @@ function modulesFactory(aclService) { name: routes[file].name || routes[file].module, icon: routes[file].icon || '' }; - let mainRoute = _getMainRoute(window.routes[file].routes); + let mainRoute = getMainRoute(window.routes[file].routes); if (mainRoute && aclService.routeHasPermission(mainRoute)) { card.route = mainRoute; modules.push(card); @@ -28,7 +28,8 @@ function modulesFactory(aclService) { } return { - getModules: getModules + getModules: getModules, + getMainRoute: getMainRoute }; } modulesFactory.$inject = ['aclService']; diff --git a/client/salix/src/spliting.js b/client/salix/src/spliting.js index 4918d5acc..697bcef98 100644 --- a/client/salix/src/spliting.js +++ b/client/salix/src/spliting.js @@ -32,3 +32,14 @@ export const route = () => { }; core.splitingRegister.register('route', route); + +export const locator = () => { + return new Promise(resolve => { + require.ensure([], () => { + require('locator'); + resolve('locator'); + }, 'locator'); + }); +}; + +core.splitingRegister.register('locator', locator); diff --git a/client/salix/src/styles/colors.scss b/client/salix/src/styles/colors.scss index dc939d113..d2db195f1 100644 --- a/client/salix/src/styles/colors.scss +++ b/client/salix/src/styles/colors.scss @@ -5,4 +5,8 @@ $color-white: white; $color-dark: #3c393b; $color-dark-grey: #424242; $color-light-grey: #e6e6e6; -$color-medium-grey: #9D9D9D; \ No newline at end of file +$color-medium-grey: #9D9D9D; +$color-medium-green: #CCEC9E; +$color-medium-orange: #FFD29C; +$color-light-green: #D7F1BD; +$color-light-orange: #FFDEBB; \ No newline at end of file diff --git a/client/salix/src/styles/display.css b/client/salix/src/styles/display.css index 9ead8140d..982432252 100644 --- a/client/salix/src/styles/display.css +++ b/client/salix/src/styles/display.css @@ -1,6 +1,7 @@ .display-block { display: block; } + .well { min-height: 20px; padding: 19px; @@ -10,6 +11,7 @@ border-radius: 4px; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); } + .form-group { margin-bottom: 15px; } @@ -20,6 +22,7 @@ height: auto; min-width: auto; } + .popover-label { font-weight: bold; color: black; @@ -32,9 +35,15 @@ height: 46px; line-height: 0px; } + input:disabled, button:disabled { cursor: not-allowed !important; } + input[type="submit"]:disabled, button:disabled { opacity: 0.7; -} \ No newline at end of file +} + +.descriptor-icon{ + font-size:60px; +} diff --git a/client/salix/src/styles/margin.scss b/client/salix/src/styles/margin.scss index ea0baf291..800ed5e83 100644 --- a/client/salix/src/styles/margin.scss +++ b/client/salix/src/styles/margin.scss @@ -87,3 +87,30 @@ html [margin-large-h], .margin-large-h { margin-left: $margin-large; margin-right: $margin-large; } + + +/* Minus Small */ + +html [margin--small], .margin--small { + margin: -$margin-small; +} +html [margin--small-top], .margin--small-top { +margin-top: -$margin-small; +} +html [margin--small-left], .margin--small-left { +margin-left: -$margin-small; +} +html [margin--small-right], .margin--small-right { +margin-right: -$margin-small; +} +html [margin--small-bottom], .margin--small-bottom { +margin-bottom: -$margin-small; +} +html [margin--small-v], .margin--small-v { +margin-top: -$margin-small; +margin-bottom: -$margin-small; +} +html [margin--small-h], .margin--small-h { +margin-left: -$margin-small; +margin-right: -$margin-small; +} \ No newline at end of file diff --git a/client/salix/src/styles/misc.scss b/client/salix/src/styles/misc.scss index a562d7dd7..8168b6781 100644 --- a/client/salix/src/styles/misc.scss +++ b/client/salix/src/styles/misc.scss @@ -52,7 +52,7 @@ html [vn-center], .vn-center{ } .list-element{ - padding: 4px 0px; + padding: 8px 0 0 0; border-bottom: 1px solid $color-medium-grey; i { color: $color-orange; @@ -76,21 +76,17 @@ html [vn-center], .vn-center{ border-top: 3px solid $color-medium-grey; } .list-element.warning{ - background-color: $color-orange; - color:$color-white; - font-weight: bold; - i { - color: $color-white; - } - .mdl-checkbox.is-checked .mdl-checkbox__box-outline{ - border-color: $color-white; - } - .mdl-checkbox.is-checked .mdl-checkbox__tick-outline{ - background-color: $color-white; - } - &:hover{ - opacity: 0.7; - } + background-color: $color-medium-orange; +} +.list-element.success{ + background-color: $color-medium-green; + +} +.list-element.success:hover{ + background-color: $color-light-green; +} +.list-element.warning:hover{ + background-color: $color-light-orange; } .flatpickr-month, .flatpickr-weekdays, span.flatpickr-weekday { background-color: $color-orange; diff --git a/docker-compose.yml b/docker-compose.yml index dc0461cf3..949d393ae 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: '2' services: auth: environment: @@ -6,7 +6,8 @@ services: container_name: "${BRANCH_NAME}-auth" image: "auth:${TAG}" build: - context: ./services/auth + context: ./services + dockerfile: /auth/Dockerfile expose: - "3000" ports: @@ -18,7 +19,8 @@ services: container_name: "${BRANCH_NAME}-salix" image: "salix:${TAG}" build: - context: ./services/salix + context: ./services + dockerfile: /salix/Dockerfile expose: - "3001" ports: @@ -30,7 +32,8 @@ services: container_name: "${BRANCH_NAME}-client" image: "client:${TAG}" build: - context: ./services/client + context: ./services + dockerfile: /client/Dockerfile expose: - "3002" ports: @@ -54,12 +57,26 @@ services: container_name: "${BRANCH_NAME}-production" image: "production:${TAG}" build: - context: ./services/production + context: ./services + dockerfile: /production/Dockerfile expose: - "3004" ports: - "3004:3004" + route: + environment: + - NODE_ENV=${NODE_ENV} + container_name: "${BRANCH_NAME}-route" + image: "route:${TAG}" + build: + context: ./services + dockerfile: /route/Dockerfile + expose: + - "3005" + ports: + - "3005:3005" + nginx: container_name: "${BRANCH_NAME}-nginx" image: "nginx:${TAG}" @@ -70,9 +87,11 @@ services: - "80" ports: - "80:80" + mem_limit: 200m links: - "auth:${BRANCH_NAME}-auth" - "salix:${BRANCH_NAME}-salix" - "client:${BRANCH_NAME}-client" - "mailer:${BRANCH_NAME}-mailer" - "production:${BRANCH_NAME}-production" + - "route:${BRANCH_NAME}-route" diff --git a/e2e/helpers/components_selectors.js b/e2e/helpers/components_selectors.js new file mode 100644 index 000000000..87dc22c69 --- /dev/null +++ b/e2e/helpers/components_selectors.js @@ -0,0 +1,18 @@ +// eslint max-len: ["error", 500] +// eslint key-spacing: ["error", 500] + +// delete me, this comment is to add a commit +export default { + vnTextfield: 'vn-textfield > div > input', + vnSubmit: 'vn-submit > input', + vnTopbar: 'vn-topbar > header', + vnIcon: 'vn-icon', + vnMainMenu: 'vn-main-menu > div', + vnModuleContainer: 'vn-module-container > a', + vnSearchBar: 'vn-searchbar > form > vn-horizontal', + vnItemClient: 'vn-item-client', + vnFloatButton: 'vn-float-button > button', + vnMenuItem: 'vn-menu-item > li > a', + vnAutocomplete: 'vn-autocomplete', + vnCheck: 'vn-check' +}; diff --git a/e2e/helpers/extensions.js b/e2e/helpers/extensions.js index bac57f6b0..168540de4 100644 --- a/e2e/helpers/extensions.js +++ b/e2e/helpers/extensions.js @@ -8,16 +8,13 @@ function child(selector, childNumber) { } Nightmare.action('login', function(done) { - try { - this.goto(`${config.url}auth/?apiKey=salix`) - .wait(selectors.login.textFieldInput) - .write(`${child(selectors.login.textFieldInput, 1)}`, 'nightmare') - .write(`${child(selectors.login.textFieldInput, 2)}`, 'nightmarePassword') - .click(selectors.login.submitButton) - .then(done); - } catch (err) { - console.log(err); - } + this.goto(`${config.url}auth/?apiKey=salix`) + .wait(selectors.login.textFieldInput) + .write(`${child(selectors.login.textFieldInput, 1)}`, 'JessicaJones') + .write(`${child(selectors.login.textFieldInput, 2)}`, 'nightmare') + .click(selectors.login.submitButton) + .wait(1000) // should create an extension like: https://github.com/segmentio/nightmare/issues/481 to wait for dom to be ready. + .then(done); }); Nightmare.action('getInnerText', function(selector, done) { @@ -27,6 +24,13 @@ Nightmare.action('getInnerText', function(selector, done) { }, done, selector); }); +Nightmare.action('getInputValue', function(selector, done) { + this.wait(selector) + .evaluate_now(function(elementToSelect) { + return document.querySelector(elementToSelect).value; + }, done, selector); +}); + Nightmare.action('clearInput', function(selector, done) { let backSpaces = []; for (let i = 0; i < 50; i += 1) { @@ -110,9 +114,16 @@ Nightmare.action('countSearchResults', function(selector, done) { }); Nightmare.action('waitForNumberOfElements', function(selector, count, done) { - this.wait((selector, count) => { - return document.querySelectorAll(selector).length === count; - }, selectors.clientsView.searchResult, count) + this.wait((resultSelector, expectedCount) => { + return document.querySelectorAll(resultSelector).length === expectedCount; + }, selector, count) + .then(done); +}); + +Nightmare.action('waitForTextInElement', function(selector, name, done) { + this.wait((resultSelector, expectedName) => { + return document.querySelectorAll(resultSelector)[0].innerText.toLowerCase().includes(expectedName.toLowerCase()); + }, selector, name) .then(done); }); @@ -125,7 +136,7 @@ Nightmare.action('waitForSnackbarReset', function(done) { Nightmare.action('waitForURL', function(hashURL, done) { this.wait(hash => { - return document.location.hash === hash; + return document.location.hash.includes(hash); }, hashURL) .then(done); }); diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index 77ce319ca..fb968e2d7 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -1,30 +1,64 @@ // eslint max-len: ["error", 500] // eslint key-spacing: ["error", 500] +import components from './components_selectors.js'; + export default { login: { - textFieldInput: 'vn-textfield > div > input', - submitButton: 'vn-submit > input[type="submit"]' + textFieldInput: `${components.vnTextfield}`, + submitButton: `${components.vnSubmit}` }, globalItems: { - topBar: 'vn-topbar', - snackbarIsActive: '.mdl-snackbar--active > .mdl-snackbar__text' + topBar: `${components.vnTopbar}`, + logOutButton: `${components.vnIcon}[icon="exit_to_app"]`, + snackbarIsActive: '.mdl-snackbar--active > .mdl-snackbar__text', + applicationsMenuButton: `${components.vnIcon}[icon="apps"]`, + applicationsMenuVisible: `${components.vnMainMenu} .is-visible > div`, + clientsButton: `${components.vnMainMenu} > div > ul > li:nth-child(1)` }, moduleAccessView: { - clientsSectionButton: 'body > vn-app > vn-vertical > vn-vertical > vn-home > vn-vertical > vn-module-container > a:nth-child(1)' + clientsSectionButton: `${components.vnModuleContainer}[ui-sref="clients"]` }, - clientsView: { - searchClientInput: 'body > vn-app > vn-vertical > vn-vertical > vn-client-index > div > div > vn-card:nth-child(1) > div > vn-horizontal > vn-searchbar > form > vn-horizontal > vn-textfield > div > input', - searchButton: 'body > vn-app > vn-vertical > vn-vertical > vn-client-index > div > div > vn-card:nth-child(1) > div > vn-horizontal > vn-searchbar > form > vn-horizontal > vn-icon-button > button', - searchResult: 'body > vn-app > vn-vertical > vn-vertical > vn-client-index > div > div > vn-card:nth-child(2) > div > vn-item-client', - createClientButton: 'body > vn-app > vn-vertical > vn-vertical > vn-client-index > div > a > vn-float-button > button' + clientsIndex: { + searchClientInput: `${components.vnTextfield}`, + searchButton: `${components.vnSearchBar} > vn-icon-button > button`, + searchResult: `${components.vnItemClient}:nth-child(1) > a`, + createClientButton: `${components.vnFloatButton}` }, createClientView: { - name: 'body > vn-app > vn-vertical > vn-vertical > vn-client-create > form > div > vn-card > div > vn-vertical > vn-horizontal:nth-child(2) > vn-textfield:nth-child(1) > div > input', - taxNumber: 'body > vn-app > vn-vertical > vn-vertical > vn-client-create > form > div > vn-card > div > vn-vertical > vn-horizontal:nth-child(2) > vn-textfield:nth-child(2) > div > input', - businessName: 'body > vn-app > vn-vertical > vn-vertical > vn-client-create > form > div > vn-card > div > vn-vertical > vn-horizontal:nth-child(3) > vn-textfield:nth-child(1) > div > input', - userName: 'body > vn-app > vn-vertical > vn-vertical > vn-client-create > form > div > vn-card > div > vn-vertical > vn-horizontal:nth-child(3) > vn-textfield:nth-child(2) > div > input', - email: 'body > vn-app > vn-vertical > vn-vertical > vn-client-create > form > div > vn-card > div > vn-vertical > vn-horizontal:nth-child(4) > vn-textfield > div > input', - createButton: 'body > vn-app > vn-vertical > vn-vertical > vn-client-create > form > div > vn-button-bar > vn-button > button' + name: `${components.vnTextfield}[name="name"]`, + taxNumber: `${components.vnTextfield}[name="fi"]`, + socialName: `${components.vnTextfield}[name="socialName"]`, + userName: `${components.vnTextfield}[name="userName"]`, + email: `${components.vnTextfield}[name="email"]`, + createButton: `${components.vnSubmit}` + }, + basicData: { + basicDataButton: `${components.vnMenuItem}[ui-sref="clientCard.basicData"]`, + nameInput: `${components.vnTextfield}[name="name"]`, + taxNumberInput: `${components.vnTextfield}[name="fi"]`, + socialNameInput: `${components.vnTextfield}[name="socialName"]`, + phoneInput: `${components.vnTextfield}[name="phone"]`, + mobileInput: `${components.vnTextfield}[name="mobile"]`, + faxInput: `${components.vnTextfield}[name="fax"]`, + emailInput: `${components.vnTextfield}[name="email"]`, + salesPersonInput: `${components.vnAutocomplete}[field="$ctrl.client.salesPersonFk"]`, + channelInput: `${components.vnAutocomplete}[field="$ctrl.client.contactChannelFk"] > vn-vertical > ${components.vnTextfield}`, + channelMetropolisOption: `${components.vnAutocomplete}[field="$ctrl.client.contactChannelFk"] > vn-vertical > vn-drop-down > vn-vertical > vn-one:nth-child(2) > ul > li:nth-child(3)`, + saveButton: `${components.vnSubmit}` + }, + fiscalData: { + fiscalDataButton: `${components.vnMenuItem}[ui-sref="clientCard.fiscalData"]`, + hasToInvoiceCheckboxLabel: `${components.vnCheck}[label='Has to invoice'] > label`, + hasToInvoiceCheckboxInput: `${components.vnCheck}[label='Has to invoice'] > label > label > input`, + invoiceByMailCheckboxLabel: `${components.vnCheck}[label='Invoice by mail'] > label`, + invoiceByMailCheckboxInput: `${components.vnCheck}[label='Invoice by mail'] > label > label > input`, + addressInput: `${components.vnTextfield}[name="street"]`, + cityInput: `${components.vnTextfield}[name="city"]`, + postcodeInput: `${components.vnTextfield}[name="postcode"]`, + provinceInput: `${components.vnAutocomplete}[field="$ctrl.client.provinceFk"] > vn-vertical > ${components.vnTextfield}`, + provinceFifthOption: `${components.vnAutocomplete}[field="$ctrl.client.provinceFk"] > vn-vertical > vn-drop-down > vn-vertical > vn-one:nth-child(2) > ul > li:nth-child(5)`, + countryInput: `${components.vnAutocomplete}[field="$ctrl.client.countryFk"] > vn-vertical > ${components.vnTextfield}`, + countryThirdOption: `${components.vnAutocomplete}[field="$ctrl.client.countryFk"] > vn-vertical > vn-drop-down > vn-vertical > vn-one:nth-child(3) > ul > li:nth-child(3)`, + saveButton: `${components.vnSubmit}` } }; - diff --git a/e2e/paths/create_client_path.spec.js b/e2e/paths/create_client_path.spec.js index ab2466441..b9107bf2c 100644 --- a/e2e/paths/create_client_path.spec.js +++ b/e2e/paths/create_client_path.spec.js @@ -5,16 +5,27 @@ import {catchErrors} from '../../services/utils/jasmineHelpers'; const nightmare = createNightmare(); const moduleAccessViewHashURL = '#!/'; -jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; +describe('create client path', () => { + describe('warm up', () => { + it('should warm up login and fixtures', done => { + nightmare + .login() + .waitForURL(moduleAccessViewHashURL) + .waitToClick(selectors.globalItems.logOutButton) + .then(() => { + done(); + }) + .catch(catchErrors(done)); + }); + }); -describe('Clients path', () => { it('should log in', done => { nightmare .login() .waitForURL(moduleAccessViewHashURL) .url() .then(url => { - expect(url).toBe(config.url + moduleAccessViewHashURL); + expect(url).toEqual(config.url + moduleAccessViewHashURL); done(); }) .catch(catchErrors(done)); @@ -23,24 +34,24 @@ describe('Clients path', () => { it('should access to the clients index by clicking the clients button', done => { nightmare .click(selectors.moduleAccessView.clientsSectionButton) - .wait(selectors.clientsView.createClientButton) + .wait(selectors.clientsIndex.createClientButton) .url() .then(url => { - expect(url).toBe(config.url + '#!/clients'); + expect(url).toEqual(config.url + '#!/clients'); done(); }) .catch(catchErrors(done)); }); - it(`should search for the user Bruce Wayne to confirm it isn't created yet`, done => { + it(`should search for the user Carol Danvers to confirm it isn't created yet`, done => { nightmare - .wait(selectors.clientsView.searchResult) - .type(selectors.clientsView.searchClientInput, 'Bruce Wayne') - .click(selectors.clientsView.searchButton) - .waitForNumberOfElements(selectors.clientsView.searchResult, 0) - .countSearchResults(selectors.clientsView.searchResult) + .wait(selectors.clientsIndex.searchResult) + .type(selectors.clientsIndex.searchClientInput, 'Carol Danvers') + .click(selectors.clientsIndex.searchButton) + .waitForNumberOfElements(selectors.clientsIndex.searchResult, 0) + .countSearchResults(selectors.clientsIndex.searchResult) .then(result => { - expect(result).toBe(0); + expect(result).toEqual(0); done(); }) .catch(catchErrors(done)); @@ -48,11 +59,11 @@ describe('Clients path', () => { it('should access to the create client view by clicking the create-client floating button', done => { nightmare - .click(selectors.clientsView.createClientButton) + .click(selectors.clientsIndex.createClientButton) .wait(selectors.createClientView.createButton) .url() .then(url => { - expect(url).toBe(config.url + '#!/create'); + expect(url).toEqual(config.url + '#!/create'); done(); }) .catch(catchErrors(done)); @@ -64,7 +75,7 @@ describe('Clients path', () => { .wait(selectors.globalItems.snackbarIsActive) .getInnerText(selectors.globalItems.snackbarIsActive) .then(result => { - expect(result).toBe('No hay cambios que guardar'); + expect(result).toEqual('No hay cambios que guardar'); done(); }) .catch(catchErrors(done)); @@ -73,12 +84,12 @@ describe('Clients path', () => { it('should receive an error when clicking the create button having all the form fields empty but name', done => { nightmare .waitForSnackbarReset() - .type(selectors.createClientView.name, 'Bruce Wayne') + .type(selectors.createClientView.name, 'Carol Danvers') .click(selectors.createClientView.createButton) .wait(selectors.globalItems.snackbarIsActive) .getInnerText(selectors.globalItems.snackbarIsActive) .then(result => { - expect(result).toContain(`Error:`); + expect(result).toContain(`Error: La instancia`); done(); }) .catch(catchErrors(done)); @@ -88,12 +99,12 @@ describe('Clients path', () => { nightmare .waitForSnackbarReset() .clearInput(selectors.createClientView.name) - .type(selectors.createClientView.taxNumber, 'Wayne Industries Tax Number') + .type(selectors.createClientView.taxNumber, 'AVG tax') .click(selectors.createClientView.createButton) .wait(selectors.globalItems.snackbarIsActive) .getInnerText(selectors.globalItems.snackbarIsActive) .then(result => { - expect(result).toContain(`Error:`); + expect(result).toContain(`Error: La instancia`); done(); }) .catch(catchErrors(done)); @@ -103,12 +114,12 @@ describe('Clients path', () => { nightmare .waitForSnackbarReset() .clearInput(selectors.createClientView.taxNumber) - .type(selectors.createClientView.businessName, 'Wayne Industries') + .type(selectors.createClientView.socialName, 'Avengers team') .click(selectors.createClientView.createButton) .wait(selectors.globalItems.snackbarIsActive) .getInnerText(selectors.globalItems.snackbarIsActive) .then(result => { - expect(result).toContain(`Error:`); + expect(result).toContain(`Error: La instancia`); done(); }) .catch(catchErrors(done)); @@ -117,13 +128,13 @@ describe('Clients path', () => { it('should receive an error when clicking the create button having all the form fields empty but User Name', done => { nightmare .waitForSnackbarReset() - .clearInput(selectors.createClientView.businessName) - .type(selectors.createClientView.userName, 'Batman') + .clearInput(selectors.createClientView.socialName) + .type(selectors.createClientView.userName, 'CaptainMarvel') .click(selectors.createClientView.createButton) .wait(selectors.globalItems.snackbarIsActive) .getInnerText(selectors.globalItems.snackbarIsActive) .then(result => { - expect(result).toContain(`Error:`); + expect(result).toContain(`Error: La instancia`); done(); }) .catch(catchErrors(done)); @@ -133,12 +144,12 @@ describe('Clients path', () => { nightmare .waitForSnackbarReset() .clearInput(selectors.createClientView.userName) - .type(selectors.createClientView.email, 'I will save Gotham!') + .type(selectors.createClientView.email, 'I will save the Avengers!') .click(selectors.createClientView.createButton) .wait(selectors.globalItems.snackbarIsActive) .getInnerText(selectors.globalItems.snackbarIsActive) .then(result => { - expect(result).toBe(`Algunos campos no son válidos`); + expect(result).toEqual(`Algunos campos no son válidos`); done(); }) .catch(catchErrors(done)); @@ -148,36 +159,63 @@ describe('Clients path', () => { nightmare .waitForSnackbarReset() .clearInput(selectors.createClientView.email) - .type(selectors.createClientView.email, 'IAmBatman@WayneIndustries.gotham') + .type(selectors.createClientView.email, 'CarolDanvers@verdnatura.es') .click(selectors.createClientView.createButton) .wait(selectors.globalItems.snackbarIsActive) .getInnerText(selectors.globalItems.snackbarIsActive) .then(result => { - expect(result).toContain(`Error:`); + expect(result).toContain(`Error: La instancia`); done(); }) .catch(catchErrors(done)); }); - // this test should remain commented until the fixtures are implemented to avoid chainned failures. + it(`should create a new user with all it's data`, done => { + nightmare + .waitForSnackbarReset() + .wait(selectors.createClientView.email) + .clearInput(selectors.createClientView.email) + .type(selectors.createClientView.name, 'Carol Danvers') + .type(selectors.createClientView.taxNumber, 'Avengers Tax Number') + .type(selectors.createClientView.socialName, 'AVG tax') + .type(selectors.createClientView.userName, 'CaptainMarvel') + .type(selectors.createClientView.email, 'CarolDanvers@verdnatura.es') + .click(selectors.createClientView.createButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toContain(`¡Datos guardados!`); + done(); + }) + .catch(catchErrors(done)); + }); - // it(`should create a new user with all it's data`, done => { - // nightmare - // .wait(longWait) - // .clearInput(selectors.createClientView.email) - // .type(selectors.createClientView.name, 'Bruce Wayne') - // .type(selectors.createClientView.taxNumber, 'Wayne Industries Tax Number') - // .type(selectors.createClientView.businessName, 'Wayne Industries') - // .type(selectors.createClientView.userName, 'Batman') - // .type(selectors.createClientView.email, 'IAmBatman@WayneIndustries.gotham') - // .click(selectors.createClientView.createButton) - // .wait(6000) - // .wait(selectors.globalItems.snackbarIsActive) - // .getInnerText(selectors.globalItems.snackbarIsActive) - // .then(result => { - // expect(result).toContain(`some validation message`); - // done(); - // }) - // .catch(catchErrors(done)); - // }); + it('should click on the Clients button of the top bar menu', done => { + nightmare + .waitToClick(selectors.globalItems.applicationsMenuButton) + .wait(selectors.globalItems.applicationsMenuVisible) + .waitToClick(selectors.globalItems.clientsButton) + .wait(selectors.clientsIndex.createClientButton) + .url() + .then(url => { + expect(url).toEqual(config.url + '#!/clients'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should search for the user Carol Danvers to confirm it exists`, done => { + nightmare + .wait(selectors.clientsIndex.searchResult) + .type(selectors.clientsIndex.searchClientInput, 'Carol Danvers') + .click(selectors.clientsIndex.searchButton) + .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) + .countSearchResults(selectors.clientsIndex.searchResult) + .then(result => { + expect(result).toEqual(1); + done(); + }) + .catch(catchErrors(done)); + }); }); + diff --git a/e2e/paths/edit_basic_data.spec.js b/e2e/paths/edit_basic_data.spec.js new file mode 100644 index 000000000..8fcd7dca1 --- /dev/null +++ b/e2e/paths/edit_basic_data.spec.js @@ -0,0 +1,327 @@ +import config from '../helpers/config.js'; +import createNightmare from '../helpers/nightmare'; +import selectors from '../helpers/selectors.js'; +import {catchErrors} from '../../services/utils/jasmineHelpers'; +const nightmare = createNightmare(); +const moduleAccessViewHashURL = '#!/'; + +describe('Edit basicData path', () => { + describe('warm up', () => { + it('should warm up login and fixtures', done => { + nightmare + .login() + .waitForURL(moduleAccessViewHashURL) + .waitToClick(selectors.globalItems.logOutButton) + .then(() => { + done(); + }) + .catch(catchErrors(done)); + }); + }); + + it('should log in', done => { + nightmare + .login() + .waitForURL(moduleAccessViewHashURL) + .url() + .then(url => { + expect(url).toEqual(config.url + moduleAccessViewHashURL); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should click on the Clients button of the top bar menu', done => { + nightmare + .waitToClick(selectors.globalItems.applicationsMenuButton) + .wait(selectors.globalItems.applicationsMenuVisible) + .waitToClick(selectors.globalItems.clientsButton) + .wait(selectors.clientsIndex.createClientButton) + .url() + .then(url => { + expect(url).toEqual(config.url + '#!/clients'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should search for the user Bruce Wayne', done => { + nightmare + .wait(selectors.clientsIndex.searchResult) + .type(selectors.clientsIndex.searchClientInput, 'Bruce Wayne') + .click(selectors.clientsIndex.searchButton) + .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) + .countSearchResults(selectors.clientsIndex.searchResult) + .then(result => { + expect(result).toEqual(1); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should click on the search result to access to the clients basic data', done => { + nightmare + .waitForTextInElement(selectors.clientsIndex.searchResult, 'Bruce Wayne') + .waitToClick(selectors.clientsIndex.searchResult) + .waitForURL('basic-data') + .url() + .then(url => { + expect(url).toContain('basic-data'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should edit the name', done => { + nightmare + .wait(selectors.basicData.nameInput) + .clearInput(selectors.basicData.nameInput) + .type(selectors.basicData.nameInput, 'Carol Danvers Edited') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm the name have been edited', done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.nameInput) + .getInputValue(selectors.basicData.nameInput) + .then(result => { + expect(result).toEqual('Carol Danvers Edited'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should edit the tax number', done => { + nightmare + .wait(selectors.basicData.taxNumberInput) + .clearInput(selectors.basicData.taxNumberInput) + .type(selectors.basicData.taxNumberInput, 'AVG tax Edited') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm the tax number have been edited', done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.taxNumberInput) + .getInputValue(selectors.basicData.taxNumberInput) + .then(result => { + expect(result).toEqual('AVG tax Edited'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should edit the social name', done => { + nightmare + .wait(selectors.basicData.socialNameInput) + .clearInput(selectors.basicData.socialNameInput) + .type(selectors.basicData.socialNameInput, 'Avengers Team Edited') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm the social name have been edited', done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.socialNameInput) + .getInputValue(selectors.basicData.socialNameInput) + .then(result => { + expect(result).toEqual('Avengers Team Edited'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should add the landline phone number', done => { + nightmare + .wait(selectors.basicData.phoneInput) + .clearInput(selectors.basicData.phoneInput) + .type(selectors.basicData.phoneInput, '123456789') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm the landline phone number have been added', done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.phoneInput) + .getInputValue(selectors.basicData.phoneInput) + .then(result => { + expect(result).toEqual('123456789'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should add the mobile phone number', done => { + nightmare + .wait(selectors.basicData.mobileInput) + .clearInput(selectors.basicData.mobileInput) + .type(selectors.basicData.mobileInput, '987654321') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm the mobile phone number have been added', done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.mobileInput) + .getInputValue(selectors.basicData.mobileInput) + .then(result => { + expect(result).toEqual('987654321'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should add the fax number', done => { + nightmare + .wait(selectors.basicData.faxInput) + .clearInput(selectors.basicData.faxInput) + .type(selectors.basicData.faxInput, '432198765') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm the fax number have been added', done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.faxInput) + .getInputValue(selectors.basicData.faxInput) + .then(result => { + expect(result).toEqual('432198765'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should edit the email', done => { + nightmare + .wait(selectors.basicData.emailInput) + .clearInput(selectors.basicData.emailInput) + .type(selectors.basicData.emailInput, 'CarolDanversEdited@verdnatura.es') + .click(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm the email have been edited', done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.emailInput) + .getInputValue(selectors.basicData.emailInput) + .then(result => { + expect(result).toEqual('CarolDanversEdited@verdnatura.es'); + done(); + }) + .catch(catchErrors(done)); + }); + + // it('should select the sales person', done => { + // nightmare + // .wait(selectors.basicData.salesPersonInput) + // .select(selectors.basicData.salesPersonInput, '') // not working quite yet + // .click(selectors.basicData.saveButton) + // .wait(selectors.globalItems.snackbarIsActive) + // .getInnerText(selectors.globalItems.snackbarIsActive) + // .then(result => { + // expect(result).toEqual('¡Datos guardados!'); + // done(); + // }) + // .catch(catchErrors(done)); + // }); + + it('should select the channel', done => { + nightmare + .waitToClick(selectors.basicData.channelInput) + .waitToClick(selectors.basicData.channelMetropolisOption) + .waitToClick(selectors.basicData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm the channel have been selected', done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.basicDataButton) + .getInputValue(selectors.basicData.channelInput) + .then(result => { + expect(result).toEqual('Metropolis newspaper'); + done(); + }) + .catch(catchErrors(done)); + }); +}); diff --git a/e2e/paths/edit_fiscal_data.spec.js b/e2e/paths/edit_fiscal_data.spec.js new file mode 100644 index 000000000..b7cefa28c --- /dev/null +++ b/e2e/paths/edit_fiscal_data.spec.js @@ -0,0 +1,283 @@ +import config from '../helpers/config.js'; +import createNightmare from '../helpers/nightmare'; +import selectors from '../helpers/selectors.js'; +import {catchErrors} from '../../services/utils/jasmineHelpers'; +const nightmare = createNightmare(); +const moduleAccessViewHashURL = '#!/'; + +describe('Edit fiscalData path', () => { + describe('warm up', () => { + it('should warm up login and fixtures', done => { + nightmare + .login() + .waitForURL(moduleAccessViewHashURL) + .waitToClick(selectors.globalItems.logOutButton) + .then(() => { + done(); + }) + .catch(catchErrors(done)); + }); + }); + + it('should log in', done => { + nightmare + .login() + .waitForURL(moduleAccessViewHashURL) + .url() + .then(url => { + expect(url).toEqual(config.url + moduleAccessViewHashURL); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should click on the Clients button of the top bar menu', done => { + nightmare + .waitToClick(selectors.globalItems.applicationsMenuButton) + .wait(selectors.globalItems.applicationsMenuVisible) + .waitToClick(selectors.globalItems.clientsButton) + .wait(selectors.clientsIndex.createClientButton) + .url() + .then(url => { + expect(url).toEqual(config.url + '#!/clients'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should search for the user Bruce Banner', done => { + nightmare + .wait(selectors.clientsIndex.searchResult) + .type(selectors.clientsIndex.searchClientInput, 'Bruce Banner') + .click(selectors.clientsIndex.searchButton) + .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) + .countSearchResults(selectors.clientsIndex.searchResult) + .then(result => { + expect(result).toEqual(1); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should click on the search result to access to the client's fiscal data`, done => { + nightmare + .waitForTextInElement(selectors.clientsIndex.searchResult, 'Bruce Banner') + .waitToClick(selectors.clientsIndex.searchResult) + .waitToClick(selectors.fiscalData.fiscalDataButton) + .waitForURL('fiscal-data') + .url() + .then(url => { + expect(url).toContain('fiscal-data'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should uncheck the hasToInvoice checkbox', done => { + nightmare + .waitToClick(selectors.fiscalData.hasToInvoiceCheckboxLabel) + .waitToClick(selectors.fiscalData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm hasToInvoice checkbox is unchecked', done => { + nightmare + .waitForSnackbarReset() + .waitToClick(selectors.basicData.basicDataButton) + .wait(selectors.basicData.nameInput) + .waitToClick(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.hasToInvoiceCheckboxLabel) + .evaluate(selector => { + return document.querySelector(selector).checked; + }, selectors.fiscalData.hasToInvoiceCheckboxLabel) + .then(value => { + expect(value).toBeFalsy(); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should uncheck the invoiceByMail checkbox', done => { + nightmare + .waitToClick(selectors.fiscalData.invoiceByMailCheckboxLabel) + .waitToClick(selectors.fiscalData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm invoiceByMail checkbox is unchecked', done => { + nightmare + .waitForSnackbarReset() + .waitToClick(selectors.basicData.basicDataButton) + .wait(selectors.basicData.nameInput) + .waitToClick(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.invoiceByMailCheckboxLabel) + .evaluate(selector => { + return document.querySelector(selector).checked; + }, selectors.fiscalData.invoiceByMailCheckboxLabel) + .then(value => { + expect(value).toBeFalsy(); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should edit the address', done => { + nightmare + .wait(selectors.fiscalData.addressInput) + .clearInput(selectors.fiscalData.addressInput) + .type(selectors.fiscalData.addressInput, 'Alpha Flight Low-Orbit') + .click(selectors.fiscalData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm the address have been edited', done => { + nightmare + .waitForSnackbarReset() + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.nameInput) + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .getInputValue(selectors.fiscalData.addressInput) + .then(result => { + expect(result).toEqual('Alpha Flight Low-Orbit'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should edit the city', done => { + nightmare + .wait(selectors.fiscalData.cityInput) + .clearInput(selectors.fiscalData.cityInput) + .type(selectors.fiscalData.cityInput, 'N/A') + .click(selectors.fiscalData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm the city have been edited', done => { + nightmare + .waitForSnackbarReset() + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.nameInput) + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.cityInput) + .getInputValue(selectors.fiscalData.cityInput) + .then(result => { + expect(result).toEqual('N/A'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should edit the postcode', done => { + nightmare + .wait(selectors.fiscalData.postcodeInput) + .clearInput(selectors.fiscalData.postcodeInput) + .type(selectors.fiscalData.postcodeInput, '12345') + .click(selectors.fiscalData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual('¡Datos guardados!'); + done(); + }) + .catch(catchErrors(done)); + }); + + it('should confirm the postcode have been edited', done => { + nightmare + .waitForSnackbarReset() + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.nameInput) + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.postcodeInput) + .getInputValue(selectors.fiscalData.postcodeInput) + .then(result => { + expect(result).toEqual('12345'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should edit the province`, done => { + nightmare + .waitToClick(selectors.fiscalData.provinceInput) + .waitToClick(selectors.fiscalData.provinceFifthOption) + .waitToClick(selectors.fiscalData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual(`¡Datos guardados!`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should confirm the province have been selected`, done => { + nightmare + .waitForSnackbarReset() + .click(selectors.basicData.basicDataButton) + .wait(selectors.basicData.nameInput) + .click(selectors.fiscalData.fiscalDataButton) + .wait(100) + .getInputValue(selectors.fiscalData.provinceInput) + .then(result => { + expect(result).toEqual('Province two'); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should edit the country`, done => { + nightmare + .waitToClick(selectors.fiscalData.countryInput) + .waitToClick(selectors.fiscalData.countryThirdOption) + .waitToClick(selectors.fiscalData.saveButton) + .wait(selectors.globalItems.snackbarIsActive) + .getInnerText(selectors.globalItems.snackbarIsActive) + .then(result => { + expect(result).toEqual(`¡Datos guardados!`); + done(); + }) + .catch(catchErrors(done)); + }); + + it(`should confirm the country have been selected`, done => { + nightmare + .waitForSnackbarReset() + .click(selectors.fiscalData.fiscalDataButton) + .wait(selectors.fiscalData.addressInput) + .click(selectors.fiscalData.basicDataButton) + .wait(100) + .getInputValue(selectors.fiscalData.countryInput) + .then(result => { + expect(result).toEqual('Holanda'); + done(); + }) + .catch(catchErrors(done)); + }); +}); diff --git a/gulpfile.js b/gulpfile.js index 0383a1215..069ff5a89 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -6,13 +6,15 @@ var merge = require('merge-stream'); var extend = require('gulp-extend'); var install = require('gulp-install'); var print = require('gulp-print'); +var runSequence = require('run-sequence'); var del = require('del'); var fs = require('fs'); var webpack = require('webpack'); var WebpackDevServer = require('webpack-dev-server'); -// Configuration +var exec = require('child_process').exec; +// Configuration var srcDir = './client'; var buildDir = './services/nginx/static'; var langs = ['es', 'en']; @@ -35,19 +37,16 @@ gulp.task('client', ['clean'], function() { return gulp.start('watch', 'routes', 'locales', 'webpack-dev-server'); }); -gulp.task('services', function() { - require('./services/mailer/server.js').start(); - - var lbServices = [ - 'auth', - 'salix', - 'client', - 'production', - 'route' - ]; - - for (var service of lbServices) - require(`./services/${service}/server/server.js`).start(); +gulp.task('services', () => { + process.env.NODE_ENV = gutil.env.env || 'development'; + const pathServices = './services/'; + const services = fs.readdirSync(pathServices); + services.splice(services.indexOf('loopback'), 1); + return services.forEach(service => { + const serviceJs = pathServices.concat(service, '/server/server.js'); + if (fs.existsSync(serviceJs)) + require(serviceJs).start(); + }); }); gulp.task('clean', function() { @@ -98,7 +97,7 @@ gulp.task('webpack-dev-server', function() { contentBase: buildDir, quiet: false, noInfo: false, - // hot: true, + // hot: true, stats: { assets: true, colors: true, @@ -137,14 +136,49 @@ var routeFiles = `${srcDir}/**/routes.json`; gulp.task('routes', function() { return gulp.src(routeFiles) - .pipe(concat('routes.js', {newLine: ','})) - .pipe(wrap('var routes = [<%=contents%>\n];')) - .pipe(gulp.dest(buildDir)); + .pipe(concat('routes.js', {newLine: ','})) + .pipe(wrap('var routes = [<%=contents%>\n];')) + .pipe(gulp.dest(buildDir)); }); // Watch - gulp.task('watch', function() { gulp.watch(routeFiles, ['routes']); gulp.watch(localeFiles, ['locales']); }); + +// Test environment +gulp.task('test', callback => { + return require('./services_tests').start(); +}); + +// docker dblocal +gulp.task('docker', callback => { + runSequence('deleteDockerDb', 'deleteDockerImageDb', 'buildDockerDb', 'runDockerDb', callback); +}); + +gulp.task('runDockerDb', callback => { + exec('docker run -d --name dblocal -p 3306:3306 dblocal', (err, stdout, stderr) => { + setTimeout(() => { + callback(err); + }, 15000); + }); +}); + +gulp.task('buildDockerDb', callback => { + exec('docker build -t dblocal:latest ./services/db', (err, stdout, stderr) => { + callback(err); + }); +}); + +gulp.task('deleteDockerImageDb', callback => { + exec('docker rmi dblocal:latest', (err, stdout, stderr) => { + callback(err = null); + }); +}); + +gulp.task('deleteDockerDb', callback => { + exec('docker stop dblocal && docker wait dblocal && docker rm -f dblocal', (err, stdout, stderr) => { + callback(err = null); + }); +}); diff --git a/jasmine.js b/jasmine.js deleted file mode 100644 index e1fdf9fdd..000000000 --- a/jasmine.js +++ /dev/null @@ -1,9 +0,0 @@ -const Jasmine = require('jasmine'); -const jasmine = new Jasmine(); - -jasmine.loadConfig({ - spec_dir: '', - spec_files: ['*[Ss]pec.js'] -}); - -jasmine.execute(); diff --git a/package.json b/package.json index e3cfad2c2..832c538c0 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "flatpickr": "^2.6.3", "material-design-lite": "^1.3.0", "mg-crud": "^1.1.2", + "nodemon": "^1.12.1", "oclazyload": "^0.6.3", "validator": "^6.2.1" }, @@ -30,6 +31,7 @@ "cors": "^2.8.1", "css-loader": "^0.25.0", "del": "^2.2.2", + "electron": "^1.7.9", "eslint": "^3.19.0", "eslint-config-angular": "^0.5.0", "eslint-config-google": "^0.6.0", @@ -58,8 +60,8 @@ "merge-stream": "^1.0.1", "nightmare": "^2.10.0", "node-sass": "^3.11.0", - "nodemon": "^1.12.0", "raw-loader": "*", + "run-sequence": "^2.2.0", "sass-loader": "^4.0.2", "style-loader": "^0.13.1", "webpack": "^2.2.0", diff --git a/services/auth/Dockerfile b/services/auth/Dockerfile index ecac7b8dc..582de9eae 100644 --- a/services/auth/Dockerfile +++ b/services/auth/Dockerfile @@ -1,6 +1,8 @@ FROM node:6.9.1 -COPY . /app +COPY auth /app + +COPY loopback /loopback WORKDIR /app @@ -8,6 +10,6 @@ RUN npm install RUN npm -g install pm2 -CMD ["pm2-docker", "."] +CMD ["pm2-docker", "./server/server.js"] EXPOSE 3000 diff --git a/services/auth/server/boot/routes.js b/services/auth/server/boot/routes.js index a2c808860..f29e648f9 100644 --- a/services/auth/server/boot/routes.js +++ b/services/auth/server/boot/routes.js @@ -53,11 +53,11 @@ module.exports = function(app) { loginUrl = applications[apiKey]; - res.send(JSON.stringify({ + res.json({ token: token.id, continue: continueUrl, loginUrl: loginUrl - })); + }); } function findCb(err, instance) { if (err || !instance || instance.password !== md5(password)) { @@ -78,13 +78,14 @@ module.exports = function(app) { } function badLogin() { res.status(401); - res.send(JSON.stringify({ + res.json({ message: 'Login failed' - })); + }); } }); app.get('/logout', function(req, res) { + console.log(req.accessToken); User.logout(req.accessToken.id, () => res.redirect('/')); }); diff --git a/services/client/Dockerfile b/services/client/Dockerfile index 9f923ab12..2ff9fa445 100644 --- a/services/client/Dockerfile +++ b/services/client/Dockerfile @@ -1,6 +1,8 @@ FROM node:6.9.1 -COPY . /app +COPY client /app + +COPY loopback /loopback WORKDIR /app @@ -8,6 +10,6 @@ RUN npm install RUN npm -g install pm2 -CMD ["pm2-docker", "."] +CMD ["pm2-docker", "./server/server.js"] EXPOSE 3002 \ No newline at end of file diff --git a/services/client/common/methods/client/addressesPropagateRe.js b/services/client/common/methods/client/addressesPropagateRe.js index b5aec246c..ec960a912 100644 --- a/services/client/common/methods/client/addressesPropagateRe.js +++ b/services/client/common/methods/client/addressesPropagateRe.js @@ -30,7 +30,7 @@ module.exports = function(Client) { }); Client.addressesPropagateRe = (id, data, callback) => { - if(data.hasOwnProperty('isEqualizated')) { + if (data.hasOwnProperty('isEqualizated')) { Client.app.models.Address.updateAll({clientFk: id}, data, (err, info) => { if (err) return callback(err, null); diff --git a/services/client/common/methods/client/before-save.js b/services/client/common/methods/client/before-save.js index e8d892be8..74b9ce7a6 100644 --- a/services/client/common/methods/client/before-save.js +++ b/services/client/common/methods/client/before-save.js @@ -1,10 +1,14 @@ +var app = require('../../../server/server'); module.exports = function(Client) { var CREDIT_CARD = 5; + var models = app.models; Client.observe('before save', function(ctx, next) { if (ctx.currentInstance) { let dataChange = Object.assign({}, ctx.data); + let userId = ctx.options.accessToken.userId; + Object.assign(ctx.data, doIfNullSalesPerson(ctx.currentInstance)); if (!ctx.data.dueDay) @@ -12,12 +16,12 @@ module.exports = function(Client) { if (dataChange.hasOwnProperty('equalizationTax') && !canMarkEqualizationTax(ctx.data)) next(generateErrorEqualizationTax()); + else if (dataChange.hasOwnProperty('credit')) + canChangeCredit(dataChange, userId, next); else next(); - - } else { - Client.findById(ctx.where.id, (_, instance) => { - + } else if (ctx.where && ctx.where.id) { + Client.findById(ctx.where.id, (_, instance) => { Object.assign(ctx.data, doIfNullSalesPerson(instance)); if (instance @@ -33,6 +37,9 @@ module.exports = function(Client) { next(); } }); + } else { + // newInstance + next(); } }); @@ -59,5 +66,87 @@ module.exports = function(Client) { error.status = 500; return error; } + + function generateErrorCredit() { + var error = new Error(); + error.message = "No tienes privilegios para modificar el crédito"; + error.status = 500; + return error; + } + + function canChangeCredit(data, userId, done) { + let filter = { + fields: ['roleFk'], + where: { + maxAmount: {gt: data.credit} + } + }; + + models.ClientCreditLimit.find(filter, + (_, res) => limitCb(_, res)); + + function limitCb(_, instances) { + let requiredRoles = []; + for (instance of instances) + requiredRoles.push(instance.roleFk); + + let where = { + roleId: {inq: requiredRoles}, + principalType: 'USER', + principalId: userId + }; + models.RoleMapping.count(where, + (_, res) => roleCb(_, res)); + } + function roleCb(_, count) { + // si el usuario no tiene alguno de los roles no continua + if (count <= 0) { + done(generateErrorCredit()); + return; + } + // si tiene el rol hay que validar que el último movimiento no fuese crédito 0 insertado por gerencia + validate(); + } + + // Si se puso a 0 por gerencia, solo gerencia puede aumentarlo + function validate() { + let query = 'SELECT * FROM ClientCredit WHERE clientFk = ? ORDER BY created DESC LIMIT 1'; + Client.dataSource.connector.execute(query, [data.id], + (_, res) => maxCb(_, res)); + } + + function maxCb(_, instances) { + if (!instances) { + done(generateErrorCredit()); + return; + } + + if (instances.length !== 1 || instances[0].employeeFk == userId || instances[0].amount > 0) { + done(); + return; + } + + // el ultimo registro tiene valor 0, hay que comprobar que no fue editado por un gerente + let sql = `SELECT count(distinct r.id) as hasManagerRole + FROM ClientCredit cc + JOIN Employee em ON (em.id = cc.employeeFk) + JOIN Account ac ON (ac.id = em.userFk) + JOIN RoleMapping rm ON (rm.principalId = ac.id) + JOIN Role r on (r.id = rm.roleId) + WHERE rm.principalType = 'USER' + AND cc.employeeFk = ? + AND r.\`name\` = 'manager'`; + + Client.dataSource.connector.execute(sql, [instances[0].employeeFk], (_, res) => clientCreditCb(_, res)); + } + + function clientCreditCb(_, instance) { + if (!instance || (instance.length && instance[0].hasManagerRole > 0)) { + done(generateErrorCredit()); + return; + } + done(); + } + } }; diff --git a/services/client/common/methods/client/card.js b/services/client/common/methods/client/card.js index 4bfc66005..bd2c4ca81 100644 --- a/services/client/common/methods/client/card.js +++ b/services/client/common/methods/client/card.js @@ -36,7 +36,7 @@ module.exports = function(Client) { function formatCard(card) { let cardFormated = JSON.parse(JSON.stringify(card)); - if(cardFormated.salesPersonFk) + if (cardFormated.salesPersonFk) cardFormated.salesPerson = { id: card.salesPerson().id, name: `${card.salesPerson().name} ${card.salesPerson().surname}` diff --git a/services/client/common/methods/client/create.js b/services/client/common/methods/client/create.js index 84ff937d2..58e947e3f 100644 --- a/services/client/common/methods/client/create.js +++ b/services/client/common/methods/client/create.js @@ -19,7 +19,7 @@ module.exports = function(Client) { }); Client.createUserProfile = (data, callback) => { - let firstEmail = data.email.split(',')[0]; + let firstEmail = data.email ? data.email.split(',')[0] : null; let user = { name: data.userName, email: firstEmail, @@ -41,14 +41,14 @@ module.exports = function(Client) { email: data.email }; - Client.create(client, {transaction}, (error, client) => { + Client.create(client, {transaction}, (error, newClient) => { if (error) { transaction.rollback(); return callback(error); } transaction.commit(); - callback(null, true); + callback(null, newClient); }); }); }); diff --git a/services/client/common/methods/client/employee.js b/services/client/common/methods/client/employee.js index 40a6e19d3..8ad6dbbaa 100644 --- a/services/client/common/methods/client/employee.js +++ b/services/client/common/methods/client/employee.js @@ -13,20 +13,30 @@ module.exports = function(Client) { } }); - Client.employeeList = function(cb) { - var include = {include: {relation: 'user'}, where: {userFk: {neq: null}}}; - Client.app.models.Employee.find(include, function(err, instances) { - if (err) - cb(err, null); - cb(null, generateEmployees(instances)); - }); + let getEmployees = listEmployees => { + let employees = []; + listEmployees.forEach(function(e) { + employees.push({id: e.id, name: e.name}); + }, this); + return employees; }; - function generateEmployees(instances) { - var emps = []; - instances.forEach(function(e) { - emps.push({id: e.id, name: e.user().name}); - }, this); - return emps; - } + Client.employeeList = function(callback) { + let query = `SELECT em.id, CASE em.surname WHEN NULL THEN em.name ELSE concat(em.name, " ", em.surname) END \`name\` + FROM Employee em + JOIN Account ac ON em.userFk = ac.id + JOIN RoleMapping rm on ac.id=rm.principalId + JOIN Role rl on rm.roleId = rl.id + WHERE ac.active + and rl.\`name\`='employee' + ORDER BY em.name ASC`; + + Client.rawSql(query, [], callback) + .then(response => { + callback(null, getEmployees(response)); + }) + .catch(reject => { + callback(reject, null); + }); + }; }; diff --git a/services/client/common/methods/client/salesperson.js b/services/client/common/methods/client/salesperson.js index 6b493f996..dde54fe9f 100644 --- a/services/client/common/methods/client/salesperson.js +++ b/services/client/common/methods/client/salesperson.js @@ -29,11 +29,11 @@ module.exports = (Client) => { FROM Employee em JOIN Account ac ON em.userFk = ac.id JOIN Role ON Role.id = ac.roleFK - WHERE ac.active AND Role.\`name\`='salesPerson' ${where} + WHERE ac.active AND Role.\`name\`='salesPerson' ${where.cond} ORDER BY em.name ASC - LIMIT ${limit} OFFSET ${skip}`; - - Client.rawSql(query, [], callback) + LIMIT ? OFFSET ?`; + + Client.rawSql(query, [where.value, parseInt(limit, 10), parseInt(skip, 10)], callback) .then(response => { callback(null, formatSalesPerson(response)); }) @@ -43,31 +43,16 @@ module.exports = (Client) => { }; function getCondition(where) { - let out = []; - if(typeof where === 'object') { - Object.keys(where).forEach((k) => { - let value = where[k]; - if (typeof value === 'number') { - out.push(`em.${k}=${value}`); - } else if (typeof value === 'string') { - out.push(`em.${k}='${value}'`); - } else if (typeof value === 'boolean' || value === null) { - out.push(`em.${k} IS ${String(value).toUpperCase()}`); - } else if (Object.keys(value).length) { - let firstProperty = Object.keys(value)[0]; - out.push(`em.${k} ${firstProperty} '${value[firstProperty]}'`); - } else { - throw new Error ('Error: unexpected type'); - } - }); - } - return out.length ? `AND (${out.join(' AND ')})` : ''; + let out = {}; + out.cond = (typeof where === 'object' && where.name && where.name.regexp) ? `AND em.name regexp ?` : '?'; + out.value = (typeof where === 'object' && where.name && where.name.regexp) ? where.name.regexp : ''; + return out; } - function formatSalesPerson (response) { + function formatSalesPerson(response) { let results = []; - response.forEach( person => { + response.forEach(person => { results.push({ id: person.id, name: `${person.name} ${person.surname}` diff --git a/services/client/common/methods/client/specs/create.spec.js b/services/client/common/methods/client/specs/create.spec.js index e168e6b33..a19ef074c 100644 --- a/services/client/common/methods/client/specs/create.spec.js +++ b/services/client/common/methods/client/specs/create.spec.js @@ -3,7 +3,7 @@ let app = require('../../../../server/server'); describe('Client Create()', () => { let data = { - name: 'Max Eisenhardt', + name: 'MaxEisenhardt', userName: 'Magneto', email: 'magneto@marvel.com', fi: 'X-tax number', diff --git a/services/client/common/models/address.js b/services/client/common/models/address.js index 2d6d38a2b..53c0bcbad 100644 --- a/services/client/common/models/address.js +++ b/services/client/common/models/address.js @@ -1,23 +1,23 @@ module.exports = function(Self) { - Self.validate('default',isEnabled,{message: 'No se puede poner predeterminado un consignatario desactivado'}); + Self.validate('default', isEnabled, {message: 'No se puede poner predeterminado un consignatario desactivado'}); function isEnabled(err) { - if (!this.isEnabled && this.isDefaultAddress) err(); + if (!this.isEnabled && this.isDefaultAddress) err(); } - Self.beforeRemote('create',function(ctx, modelInstance, next){ + Self.beforeRemote('create', function(ctx, modelInstance, next) { var data = ctx.req.body; create(data, next); }); - function create(data, next){ - if(data.isDefaultAddress){ - removeAllDefault(data.client, next); - } else { + function create(data, next) { + if (data.isDefaultAddress) { + removeAllDefault(data, next); + } else { next(); } } - Self.beforeRemote('prototype.patchAttributes',function(ctx, modelInstance, next){ + Self.beforeRemote('prototype.patchAttributes', function(ctx, modelInstance, next) { let newData = ctx.req.body; newData.id = ctx.req.params.id; getAddress(ctx, newData, next); @@ -25,45 +25,47 @@ module.exports = function(Self) { Self.beforeRemote('findById', function(ctx, modelInstance, next) { ctx.args.filter = { - "include": { - "relation": "province", - "scope": { - "fields": ["id", "name"] + include: [{ + relation: "province", + scope: { + fields: ["id", "name"] + } + }, + { + relation: "defaultAgency", + scope: { + fields: ["id", "name"] } } + ] }; next(); }); - function getAddress(ctx, newData, next){ - Self.findOne( {where: { id: newData.id}}, function (err, oldData){ - if(oldData) + function getAddress(ctx, newData, next) { + Self.findOne({where: {id: newData.id}}, (_, oldData) => { + if (oldData) callbackGetAddress(ctx, newData, oldData, next); - }); + }); } - function callbackGetAddress(ctx, newData, oldData, next){ - if (newData.isDefaultAddress){ - removeAllDefault(oldData.client, next); - } - else if (oldData.isDefaultAddress && newData.hasOwnProperty('isDefaultAddress') && !newData.isDefaultAddress) + function callbackGetAddress(ctx, newData, oldData, next) { + if (newData.isDefaultAddress) { + removeAllDefault(oldData, next); + } else if (oldData.isDefaultAddress && newData.hasOwnProperty('isDefaultAddress') && !newData.isDefaultAddress) { next(generateErrorDefaultAddress()); - else + } else next(); } - function getData(ctx){ - if (ctx.data) - return ctx.data; + function removeAllDefault(client, next) { + if (client && client.clientFk) + Self.updateAll({clientFk: client.clientFk, isDefaultAddress: {neq: 0}}, {isDefaultAddress: false}, next); else - return ctx.instance; + next(); } - function removeAllDefault(client, next){ - Self.updateAll({clientFk: client.id, isDefaultAddress: true}, {isDefaultAddress: false}, next); - } - - function generateErrorDefaultAddress(){ + function generateErrorDefaultAddress() { var error = new Error(); error.message = "No se puede desmarcar el consignatario predeterminado"; error.status = 500; diff --git a/services/client/common/models/address.json b/services/client/common/models/address.json index 42ac6d696..937073d16 100644 --- a/services/client/common/models/address.json +++ b/services/client/common/models/address.json @@ -58,7 +58,7 @@ }, "defaultAgency": { "type": "belongsTo", - "model": "Agency", + "model": "AgencyMode", "foreignKey": "defaultAgencyFk" } } diff --git a/services/client/common/models/agency-service.json b/services/client/common/models/agency-mode.json similarity index 95% rename from services/client/common/models/agency-service.json rename to services/client/common/models/agency-mode.json index 4f4da9a4b..4e1b4b048 100644 --- a/services/client/common/models/agency-service.json +++ b/services/client/common/models/agency-mode.json @@ -1,5 +1,5 @@ { - "name": "AgencyService", + "name": "AgencyMode", "base": "VnModel", "properties": { "id": { diff --git a/services/client/common/models/client-observation.js b/services/client/common/models/client-observation.js index b7ce8837a..39470f4c7 100644 --- a/services/client/common/models/client-observation.js +++ b/services/client/common/models/client-observation.js @@ -1,6 +1,4 @@ module.exports = function(Self) { - let loopBackContext = require('loopback-context'); - Self.validate('text', isEnabled, {message: 'Se debe rellenar el campo de texto'}); function isEnabled(err) { if (!this.text) err(); @@ -8,12 +6,12 @@ module.exports = function(Self) { Self.observe('before save', function(ctx, next) { ctx.instance.created = Date(); - let cctx = loopBackContext.getCurrentContext(); - let userId = cctx.get('currentUser'); - let app = require('../../server/server'); + let token = ctx.options.accessToken; + let userId = token && token.userId; + let app = require('../../server/server'); let Employee = app.models.Employee; Employee.findOne({where: {userFk: userId}}, function (err, user){ - if (user) { + if (user){ ctx.instance.employeeFk = user.id; next(); } diff --git a/services/client/common/models/client.js b/services/client/common/models/client.js index 3304b9edf..0340042d3 100644 --- a/services/client/common/models/client.js +++ b/services/client/common/models/client.js @@ -2,7 +2,7 @@ var app = require('../../server/server'); module.exports = function(Self) { var models = app.models; - var loopBackContext = require('loopback-context'); + // Methods require('../methods/client/activate.js')(Self); @@ -53,6 +53,11 @@ module.exports = function(Self) { message: 'El iban no tiene el formato correcto' }); + let validateDni = require('../validations/validateDni'); + Self.validateBinded('fi', validateDni, { + message: 'DNI Incorrecto' + }); + Self.validate('payMethod', hasSalesMan, { message: 'No se puede cambiar la forma de pago si no hay comercial asignado' }); @@ -63,6 +68,7 @@ module.exports = function(Self) { Self.validateAsync('payMethodFk', hasIban, { message: 'El método de pago seleccionado requiere que se especifique el IBAN' }); + function hasIban(err, done) { models.PayMethod.findById(this.payMethodFk, (_, instance) => { if (instance && instance.ibanRequired && !this.iban) @@ -70,85 +76,4 @@ module.exports = function(Self) { done(); }); } - - Self.validateAsync('credit', validateCredit, { - message: 'No tienes privilegios para modificar el crédito' - }); - function validateCredit(err, done) { - let ctx = loopBackContext.getCurrentContext(); - let userId = ctx && ctx.get('currentUser'); - let self = this; - - // Comprueba si el rol del usuario puede asignar esa cantidad - // para ello mira que roles pueden asignar la cantidad que el usuario ha indicado - let filter = { - fields: ['roleFk'], - where: { - maxAmount: {gt: self.credit} - } - }; - models.ClientCreditLimit.find(filter, - (_, res) => limitCb(_, res)); - - function limitCb(_, instances) { - let requiredRoles = []; - for (instance of instances) - requiredRoles.push(instance.roleFk); - - let where = { - roleId: {inq: requiredRoles}, - principalType: 'USER', - principalId: userId - }; - models.RoleMapping.count(where, - (_, res) => roleCb(_, res)); - } - function roleCb(_, count) { - // Si el usuario no tiene alguno de los roles no continua - if (!(count > 0)) { - err(); - done(); - } else - validate(); // Si tiene el rol hay que validar que el último movimiento no fuese crédito 0 insertado por gerencia - } - - // Si se puso a 0 por gerencia, solo gerencia puede aumentarlo - function validate() { - let query = 'SELECT * FROM ClientCredit WHERE clientFk = ? ORDER BY created DESC LIMIT 1'; - Self.dataSource.connector.execute(query, [self.id], - (_, res) => maxCb(_, res)); - } - - function maxCb(_, instances) { - // console.log('maxCb', instances); - if (!instances) { - err(); - return; - } - - if (instances.length !== 1 || instances[0].employeeFk == userId || instances[0].amount > 0) { - done(); - return; - } - - // El ultimo registro tiene valor 0, hay que comprobar que no fue editado por un gerente - let sql = `SELECT count(distinct r.id) as hasManagerRole - FROM ClientCredit cc - JOIN Employee em ON (em.id = cc.employeeFk) - JOIN Account ac ON (ac.id = em.userFk) - JOIN RoleMapping rm ON (rm.principalId = ac.id) - JOIN Role r on (r.id = rm.roleId) - WHERE rm.principalType = 'USER' - AND cc.employeeFk = ${instances[0].employeeFk} - AND r.\`name\` = 'manager'`; - - Self.dataSource.connector.execute(sql, [], (_, res) => clientCreditCb(_, res)); - } - - function clientCreditCb(_, instance) { - if (!instance || (instance.length && instance[0].hasManagerRole > 0)) - err(); - done(); - } - } }; diff --git a/services/client/common/models/client.json b/services/client/common/models/client.json index ddb59bbd7..3ef9b48f2 100644 --- a/services/client/common/models/client.json +++ b/services/client/common/models/client.json @@ -64,6 +64,10 @@ "type": "boolean", "description": "The client has equalization tax" }, + "hasToInvoiceByAddress": { + "type": "boolean", + "description": "The client has to be invoiced by address" + }, "hasToInvoice": { "type": "boolean", "description": "Global invoicing enabled for the client" diff --git a/services/client/common/validations/validateDni.js b/services/client/common/validations/validateDni.js new file mode 100644 index 000000000..ab9008605 --- /dev/null +++ b/services/client/common/validations/validateDni.js @@ -0,0 +1,94 @@ +module.exports = fi => { + let dni = fi; + let getLetterDni = dni => { + const regExpDni = 'TRWAGMYFPDXBNJZSQVHLCKE'; + const letterDni = dni.toUpperCase().substring(0, 1); + let positionLetter = parseInt(dni) % 23; + let getLetter = regExpDni.substring(positionLetter + 1, positionLetter); + switch (letterDni) { + case 'X': case 'Y': case 'Z': + positionLetter = parseInt(dni.replace(letterDni, letterDni.charCodeAt(0) - 88)) % 23; + getLetter = regExpDni.substring(positionLetter + 1, positionLetter); + console.log(letterDni.charCodeAt(0)); + } + return getLetter; + }; + + let getDniSpain = (dniNumeric, dniLetter) => { + let returnValue = false; + switch (dni.length) { + case 9: + if (dniLetter === getLetterDni(dni)) + returnValue = true; + } + return returnValue; + }; + + let getDniForeign = (dniNumeric, dniLetter) => { + let returnValue = false; + switch (dni.length) { + case 9: + if (dniLetter === getLetterDni(dni)) + returnValue = true; + } + return returnValue; + }; + + let getDniBusiness = () => { + if (dni.length == 9) + return true; + return false; + }; + + let getDniFrance = dniLetterCountry => { + let returnValue = false; + switch (dni.length) { + case 13: + if (dniLetter === 'R') + returnValue = true; + } + return returnValue; + }; + + let getDniItaly = dniLetterCountry => { + let returnValue = false; + switch (dni.length) { + case 13: + if (dniLetter === 'T') + returnValue = true; + } + return returnValue; + }; + + let getDni = () => { + const dniNumeric = dni.substring(0, 8); + const dniLetter = dni.substring(8, 9); + const dniLetterCountry = dni.substring(0, 1); + const dniLetterAscii = parseInt(dniLetterCountry.charCodeAt(0)); + let dniValue = false; + switch (true) { + case (dniLetterAscii >= 88 && dniLetterAscii <= 90): // X-Z + dniValue = getDniForeign(dniNumeric, dniLetter); + break; + case (dniLetterAscii === 66): // B + dniValue = getDniBusiness(); + break; + case (dniLetterAscii === 70): // F + dniValue = getDniFrance(dniLetterCountry); + break; + case (dniLetterAscii === 73): // I + dniValue = getDniItaly(dniLetterCountry); + break; + case (dniLetterAscii >= 48 && dniLetterAscii <= 57): // 0- 9 + console.log('dni spain'); + dniValue = getDniSpain(dniNumeric, dniLetter); + break; + default: + console.log('default'); + dniValue = true; + } + return dniValue; + }; + + return getDni(); +}; diff --git a/services/client/package.json b/services/client/package.json index 2291a3c94..d6a815f19 100644 --- a/services/client/package.json +++ b/services/client/package.json @@ -11,5 +11,8 @@ "repository": { "type": "git", "url": "https://git.verdnatura.es/salix" + }, + "dependencies": { + "request": "^2.83.0" } } diff --git a/services/client/server/model-config.json b/services/client/server/model-config.json index 292458022..fd4618730 100644 --- a/services/client/server/model-config.json +++ b/services/client/server/model-config.json @@ -42,7 +42,7 @@ "Address": { "dataSource": "vn" }, - "AgencyService": { + "AgencyMode": { "dataSource": "vn" }, "Province": { diff --git a/services/db/.gitignore b/services/db/.gitignore deleted file mode 100644 index 48e029b16..000000000 --- a/services/db/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.sql \ No newline at end of file diff --git a/services/db/Dockerfile b/services/db/Dockerfile index 7452424bd..3826138f6 100644 --- a/services/db/Dockerfile +++ b/services/db/Dockerfile @@ -1,12 +1,12 @@ FROM mysql:5.6.37 -MAINTAINER Vicente Falco - ENV MYSQL_ALLOW_EMPTY_PASSWORD yes COPY localDB01Structure.sql /docker-entrypoint-initdb.d COPY localDB02Inserts.sql /docker-entrypoint-initdb.d +RUN chmod -R 755 /docker-entrypoint-initdb.d + CMD ["mysqld"] EXPOSE 3306 \ No newline at end of file diff --git a/services/db/localDB01Structure.sql b/services/db/localDB01Structure.sql new file mode 100644 index 000000000..ce134804a --- /dev/null +++ b/services/db/localDB01Structure.sql @@ -0,0 +1,68877 @@ +-- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64) +-- +-- Host: 127.0.0.1 Database: vncontrol +-- ------------------------------------------------------ +-- Server version 5.6.37 + +/*!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 */; + +-- +-- Current Database: `vncontrol` +-- + +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `vncontrol` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; + +USE `vncontrol`; + +-- +-- Table structure for table `accion` +-- + +DROP TABLE IF EXISTS `accion`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `accion` ( + `accion_id` int(11) NOT NULL AUTO_INCREMENT, + `accion` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`accion_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `clientes_match` +-- + +DROP TABLE IF EXISTS `clientes_match`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `clientes_match` ( + `Id_cliente` int(11) NOT NULL, + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `daily_task_log` +-- + +DROP TABLE IF EXISTS `daily_task_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `daily_task_log` ( + `state` varchar(250) COLLATE utf8_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='No he encontrado el lugar en el que vicente almacena la hora en que se ejecutan las daily tasks, asi que he hecho esta tabla, a eliminar cuando se considere oportuno'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `fallo` +-- + +DROP TABLE IF EXISTS `fallo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `fallo` ( + `queja_id` int(10) unsigned NOT NULL, + `accion_id` int(11) NOT NULL, + PRIMARY KEY (`queja_id`,`accion_id`), + KEY `accion` (`accion_id`,`queja_id`), + KEY `fallo` (`queja_id`), + CONSTRAINT `accion` FOREIGN KEY (`accion_id`) REFERENCES `accion` (`accion_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `inter` +-- + +DROP TABLE IF EXISTS `inter`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `inter` ( + `inter_id` int(11) NOT NULL AUTO_INCREMENT, + `state_id` tinyint(3) unsigned NOT NULL, + `fallo_id` int(10) unsigned NOT NULL DEFAULT '21', + `nota` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Ticket` int(11) DEFAULT NULL, + `Id_Trabajador` int(11) DEFAULT NULL, + `Id_Supervisor` int(11) DEFAULT NULL, + PRIMARY KEY (`inter_id`), + KEY `currante` (`Id_Trabajador`), + KEY `responsable` (`Id_Supervisor`), + KEY `ticket` (`Id_Ticket`), + KEY `inter_state` (`state_id`), + CONSTRAINT `currante` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, + CONSTRAINT `inter_ibfk_1` FOREIGN KEY (`Id_Ticket`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `inter_state` FOREIGN KEY (`state_id`) REFERENCES `vn2008`.`state` (`id`) ON UPDATE CASCADE, + CONSTRAINT `responsable` FOREIGN KEY (`Id_Supervisor`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `interBeforeInsert` +BEFORE INSERT ON `inter` FOR EACH ROW +BEGIN + + DECLARE contados INT; + DECLARE vSupervisor INT; + + SELECT Id_Trabajador INTO vSupervisor FROM vn2008.Trabajadores WHERE user_id = account.userGetId(); + + SET NEW.Id_Supervisor = IFNULL(vSupervisor,5); + + IF NEW.state_id = 5 + THEN + SELECT count(Id_Ticket) INTO contados + FROM vncontrol.inter + WHERE state_id = 5 + AND Id_Ticket = NEW.Id_Ticket + AND IFNULL(Id_Supervisor,-1) <> vSupervisor + AND TIMESTAMPADD(SECOND, 60, odbc_date) >= NOW(); + + IF contados <> 0 THEN + CALL util.throw ('FALLO_AL_INSERTAR'); + END IF; + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vncontrol`.`interAfterInsert` +AFTER INSERT ON `inter` FOR EACH ROW +BEGIN + REPLACE vn2008.Tickets_state(Id_Ticket, inter_id,state_name) + SELECT NEW.Id_Ticket, NEW.inter_id, s.`name` FROM vn2008.state s WHERE s.id = NEW.state_id; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vncontrol`.`interAfterUpdate` +AFTER UPDATE ON `inter` FOR EACH ROW +BEGIN + DECLARE intIdTicket INT; + DECLARE intInterId INT; + DECLARE strName VARCHAR(15); + + IF (NEW.state_id <> OLD.state_id) THEN + REPLACE INTO vn2008.Tickets_state(Id_Ticket, inter_id,state_name) + SELECT NEW.Id_Ticket, NEW.inter_id, s.`name` + FROM vn2008.state s WHERE s.id = NEW.state_id; + END IF; + IF (NEW.Id_Ticket <> OLD.Id_Ticket) THEN + + SELECT i.Id_Ticket, i.inter_id, s.`name` + INTO intIdTicket, intInterId, strName + FROM vncontrol.inter i + JOIN vn2008.state s ON i.state_id = s.id + WHERE Id_Ticket = NEW.Id_Ticket + ORDER BY odbc_date DESC + LIMIT 1; + IF intIdTicket > 0 THEN + REPLACE INTO vn2008.Tickets_state(Id_Ticket, inter_id,state_name) + VALUES(intIdTicket, intInterId, strName); + END IF; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vncontrol`.`interAfterDelete` +AFTER DELETE ON `inter` FOR EACH ROW +BEGIN + DECLARE intIdTicket INT; + DECLARE intInterId INT; + DECLARE strName VARCHAR(15); + + DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' + BEGIN + DELETE FROM vn2008.Tickets_state + WHERE Id_Ticket = OLD.Id_Ticket; + END; + + IF OLD.odbc_date > TIMESTAMPADD(WEEK, -1, CURDATE()) THEN + + SELECT i.Id_Ticket, i.inter_id, s.`name` + INTO intIdTicket, intInterId, strName + FROM vncontrol.inter i + JOIN vn2008.state s ON i.state_id = s.id + WHERE Id_Ticket = OLD.Id_Ticket + ORDER BY odbc_date DESC + LIMIT 1; + + IF intIdTicket > 0 THEN + REPLACE INTO vn2008.Tickets_state(Id_Ticket, inter_id,state_name) + VALUES (intIdTicket, intInterId, strName); + END IF; + + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Dumping routines for database 'vncontrol' +-- +/*!50003 DROP PROCEDURE IF EXISTS `clean` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `clean`() +BEGIN + + DECLARE v_date2 DATETIME DEFAULT TIMESTAMPADD(MONTH, -2,CURDATE()); + + INSERT INTO vncontrol.daily_task_log(state) VALUES('clean START'); + + DELETE FROM vncontrol.inter WHERE odbc_date <= v_date2; + + INSERT INTO vncontrol.daily_task_log(state) VALUES('clean END'); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Resumen` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Resumen`() +BEGIN + +select accion, CodigoTrabajador, semana, Pedidos, Lineas +from accion +join +( + SELECT * FROM + ( + select count(*) as Pedidos, semana, Id_Trabajador, accion_id + from + (select distinct * + from + ( + select vn2008.semana(odbc_date) as semana + ,Id_Trabajador + ,accion_id + ,Id_Ticket + from vncontrol.inter + ) sub + ) sub2 + group by semana, Id_Trabajador, accion_id + ) subpedidos + + inner join + ( + + select semana, Id_Trabajador, accion_id, count(*) as Lineas + from vn2008.Movimientos + inner join + ( + select distinct vn2008.semana(odbc_date) as semana, Id_Ticket, Id_Trabajador, accion_id from vncontrol.inter + ) vnc using(Id_Ticket) + group by semana, Id_Trabajador, accion_id + + ) sublineas using(semana, Id_Trabajador, accion_id) + +) sub3 using(accion_id) + +join vn2008.Trabajadores using(Id_Trabajador) +; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Current Database: `edi` +-- + +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `edi` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; + +USE `edi`; + +-- +-- Table structure for table `batch` +-- + +DROP TABLE IF EXISTS `batch`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `batch` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `message_id` int(10) unsigned NOT NULL, + `type_id` smallint(5) unsigned NOT NULL, + `buy_edi_id` int(10) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `type_id` (`type_id`,`buy_edi_id`), + KEY `message_id` (`message_id`), + KEY `buy_edi_id` (`buy_edi_id`), + CONSTRAINT `batch_ibfk_1` FOREIGN KEY (`message_id`) REFERENCES `message` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `batch_ibfk_2` FOREIGN KEY (`buy_edi_id`) REFERENCES `vn2008`.`buy_edi` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `batch_type` +-- + +DROP TABLE IF EXISTS `batch_type`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `batch_type` ( + `id` mediumint(8) unsigned NOT NULL, + `description` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `bucket` +-- + +DROP TABLE IF EXISTS `bucket`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `bucket` ( + `bucket_id` int(11) unsigned NOT NULL, + `bucket_type_id` mediumint(8) unsigned NOT NULL, + `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `x_size` mediumint(8) unsigned NOT NULL, + `y_size` mediumint(8) unsigned NOT NULL, + `z_size` mediumint(8) unsigned NOT NULL, + `entry_date` date DEFAULT NULL, + `expiry_date` date DEFAULT NULL, + `change_date_time` datetime DEFAULT NULL, + PRIMARY KEY (`bucket_id`), + KEY `group_id` (`y_size`), + KEY `plant_id` (`x_size`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/VBN020101/CK090916.txt'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `bucket_type` +-- + +DROP TABLE IF EXISTS `bucket_type`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `bucket_type` ( + `bucket_type_id` mediumint(8) unsigned NOT NULL, + `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `entry_date` date DEFAULT NULL, + `expiry_date` date DEFAULT NULL, + `change_date_time` datetime DEFAULT NULL, + PRIMARY KEY (`bucket_type_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/VBN020101/FB090916.txt'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `config` +-- + +DROP TABLE IF EXISTS `config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `config` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `log_mail` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Mail where the log information is sent', + `presale_id` mediumint(8) unsigned DEFAULT NULL, + `default_kop` int(10) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `presale_id` (`presale_id`), + CONSTRAINT `config_ibfk_1` FOREIGN KEY (`presale_id`) REFERENCES `batch_type` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Configuration parameters'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `feature` +-- + +DROP TABLE IF EXISTS `feature`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `feature` ( + `item_id` int(11) unsigned NOT NULL, + `feature_type_id` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `feature_value` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `entry_date` date NOT NULL, + `expiry_date` date NOT NULL, + `change_date_time` datetime NOT NULL, + PRIMARY KEY (`item_id`,`feature_type_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FF130916.txt'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `file_config` +-- + +DROP TABLE IF EXISTS `file_config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `file_config` ( + `file_name` varchar(2) COLLATE utf8_unicode_ci NOT NULL, + `to_table` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `file` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `updated` date DEFAULT NULL, + PRIMARY KEY (`file_name`), + UNIQUE KEY `to_table` (`to_table`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `ftp_config` +-- + +DROP TABLE IF EXISTS `ftp_config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ftp_config` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `host` varchar(255) CHARACTER SET utf8 NOT NULL, + `user` varchar(50) CHARACTER SET utf8 NOT NULL, + `password` varchar(50) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Configuration parameters'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `genus` +-- + +DROP TABLE IF EXISTS `genus`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `genus` ( + `genus_id` mediumint(8) unsigned NOT NULL, + `latin_genus_name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `entry_date` date DEFAULT NULL, + `expiry_date` date DEFAULT NULL, + `change_date_time` datetime DEFAULT NULL, + PRIMARY KEY (`genus_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FG130916.txt'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `goodCharacteristic` +-- + +DROP TABLE IF EXISTS `goodCharacteristic`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `goodCharacteristic` ( + `supplyResponse` varchar(26) COLLATE utf8_unicode_ci NOT NULL, + `type` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'edi.type', + `value` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'edi.value', + PRIMARY KEY (`supplyResponse`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `imap_config` +-- + +DROP TABLE IF EXISTS `imap_config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `imap_config` ( + `id` tinyint(3) unsigned NOT NULL, + `host` varchar(150) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'localhost', + `user` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `pass` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `clean_period` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'How long the old mails are preserved', + `success_folder` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, + `error_folder` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='IMAP configuration parameters'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `item` +-- + +DROP TABLE IF EXISTS `item`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `item` ( + `id` int(11) unsigned NOT NULL, + `product_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `plant_id` mediumint(8) unsigned DEFAULT NULL, + `group_id` int(11) DEFAULT NULL, + `entry_date` date DEFAULT NULL, + `expiry_date` date DEFAULT NULL, + `change_date_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `group_id` (`group_id`), + KEY `plant_id` (`plant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FP130916.txt'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `item_feature` +-- + +DROP TABLE IF EXISTS `item_feature`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `item_feature` ( + `item_id` int(11) NOT NULL, + `presentation_order` tinyint(11) unsigned NOT NULL, + `feature` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `regulation_type` tinyint(3) unsigned NOT NULL, + `entry_date` date NOT NULL, + `expiry_date` date DEFAULT NULL, + `change_date_time` datetime NOT NULL, + PRIMARY KEY (`item_id`,`presentation_order`,`entry_date`,`change_date_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FY130916.txt'; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `item_feature_bi` BEFORE INSERT ON `item_feature` FOR EACH ROW +BEGIN + IF NEW.expiry_date = '0000-00-00' THEN + SET NEW.expiry_date = NULL; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `item_group` +-- + +DROP TABLE IF EXISTS `item_group`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `item_group` ( + `group_code` int(11) unsigned NOT NULL, + `dutch_group_description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `entry_date` date NOT NULL, + `expiry_date` date NOT NULL, + `change_date_time` datetime NOT NULL, + PRIMARY KEY (`group_code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FO130916.txt'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `item_track` +-- + +DROP TABLE IF EXISTS `item_track`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `item_track` ( + `item_id` int(10) unsigned NOT NULL, + `s1` tinyint(3) NOT NULL DEFAULT '0', + `s2` tinyint(3) NOT NULL DEFAULT '0', + `s3` tinyint(3) NOT NULL DEFAULT '0', + `s4` tinyint(3) NOT NULL DEFAULT '0', + `pac` tinyint(3) NOT NULL DEFAULT '0', + `cat` tinyint(3) NOT NULL DEFAULT '0', + `ori` tinyint(3) NOT NULL DEFAULT '0', + `pro` tinyint(3) NOT NULL DEFAULT '0', + `package` tinyint(3) NOT NULL DEFAULT '0', + `s5` tinyint(3) NOT NULL DEFAULT '0', + `s6` tinyint(3) NOT NULL DEFAULT '0', + `kop` tinyint(3) NOT NULL DEFAULT '0', + `sub` tinyint(3) NOT NULL DEFAULT '0', + PRIMARY KEY (`item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mail` +-- + +DROP TABLE IF EXISTS `mail`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mail` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `mail` varchar(150) COLLATE utf8_unicode_ci NOT NULL, + `kop` int(10) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `mail` (`mail`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='List of allowed mailers'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `message` +-- + +DROP TABLE IF EXISTS `message`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `message` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `sender_id` int(10) unsigned DEFAULT NULL, + `mail_id` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `mail_id` (`mail_id`), + KEY `sender_id` (`sender_id`), + CONSTRAINT `message_ibfk_2` FOREIGN KEY (`sender_id`) REFERENCES `mail` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `param` +-- + +DROP TABLE IF EXISTS `param`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `param` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `code` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(5) COLLATE utf8_unicode_ci NOT NULL, + `subname` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `position` tinyint(3) unsigned NOT NULL DEFAULT '1', + `type` enum('INTEGER','DOUBLE','STRING','DATE','TIME') COLLATE utf8_unicode_ci NOT NULL, + `required` tinyint(3) unsigned NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`,`subname`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Parameters to capture of every exchange'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `plant` +-- + +DROP TABLE IF EXISTS `plant`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `plant` ( + `plant_id` mediumint(8) unsigned NOT NULL, + `genus_id` mediumint(8) unsigned NOT NULL, + `specie_id` mediumint(8) unsigned DEFAULT NULL, + `entry_date` date DEFAULT NULL, + `expiry_date` date DEFAULT NULL, + `change_date_time` datetime DEFAULT NULL, + PRIMARY KEY (`plant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FT130916.txt'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `specie` +-- + +DROP TABLE IF EXISTS `specie`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `specie` ( + `specie_id` mediumint(8) unsigned NOT NULL, + `genus_id` mediumint(8) unsigned NOT NULL, + `latin_species_name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `entry_date` date DEFAULT NULL, + `expiry_date` date DEFAULT NULL, + `change_date_time` datetime DEFAULT NULL, + PRIMARY KEY (`specie_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FS130916.txt'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `supplier` +-- + +DROP TABLE IF EXISTS `supplier`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `supplier` ( + `supplier_id` int(10) unsigned NOT NULL COMMENT 'FHRegistrationNr', + `glnAddressCode` varchar(13) CHARACTER SET utf8 DEFAULT NULL, + `company_name` varchar(70) COLLATE utf8_unicode_ci NOT NULL, + `entry_date` date NOT NULL, + `expiry_date` date NOT NULL, + `change_date_time` datetime NOT NULL, + PRIMARY KEY (`supplier_id`), + KEY `glnaddressCodeidx` (`glnAddressCode`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/FEC010104/CC090916.txt'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `supplyResponse` +-- + +DROP TABLE IF EXISTS `supplyResponse`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `supplyResponse` ( + `id` varchar(26) COLLATE utf8_unicode_ci NOT NULL, + `marketPlace` varchar(13) COLLATE utf8_unicode_ci NOT NULL, + `imageReference` varchar(2048) COLLATE utf8_unicode_ci DEFAULT NULL, + `supplierParty` varchar(13) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'company GLN code', + `productVnhCode` varchar(7) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Industry Assigned Id', + `productDescription` varchar(70) COLLATE utf8_unicode_ci DEFAULT NULL, + `quantity` int(8) DEFAULT NULL, + `incrementalOrderableQuantity` int(8) DEFAULT NULL, + `chargeAmount` decimal(10,2) DEFAULT NULL, + `unitCode` tinyint(2) unsigned DEFAULT NULL, + `packageQuantity` int(8) DEFAULT NULL, + `earliestDespatch` datetime DEFAULT NULL, + `latestDelivery` datetime DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `type` +-- + +DROP TABLE IF EXISTS `type`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `type` ( + `type_id` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `type_group_id` tinyint(3) unsigned NOT NULL, + `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `entry_date` date NOT NULL, + `expiry_date` date NOT NULL, + `change_date_time` datetime NOT NULL, + PRIMARY KEY (`type_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FE130916.txt'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `value` +-- + +DROP TABLE IF EXISTS `value`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `value` ( + `type_id` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `type_value` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `type_description` varchar(70) COLLATE utf8_unicode_ci NOT NULL, + `entry_date` date NOT NULL, + `expiry_date` date NOT NULL, + `change_date_time` datetime NOT NULL, + PRIMARY KEY (`type_id`,`type_value`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='/tmp/floricode/florecompc2/FV130916.txt'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping routines for database 'edi' +-- +/*!50003 DROP PROCEDURE IF EXISTS `batchNew` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `batchNew`( + vMessage INT + ,vItem VARCHAR(255) + ,vType MEDIUMINT + ,vDeliveryNumber BIGINT + ,vDate DATE + ,vHour TIME + ,vRef INT + ,vAgj INT + ,vCat VARCHAR(2) + ,vPac INT + ,vSub MEDIUMINT + ,vKop INT + ,vPtd VARCHAR(6) + ,vPro MEDIUMINT + ,vOrigin VARCHAR(3) + ,vPtj MEDIUMINT + ,vQuantiy INT + ,vPrice DOUBLE + ,vClock SMALLINT + ,vS1 VARCHAR(3) + ,vS2 VARCHAR(3) + ,vS3 VARCHAR(3) + ,vS4 VARCHAR(4) + ,vS5 VARCHAR(3) + ,vS6 VARCHAR(3) + ,vK1 SMALLINT + ,vK2 SMALLINT + ,vP1 TINYINT + ,vP2 TINYINT + ,vAuction SMALLINT + ,vPackage INT +) +BEGIN +/** + * Añade un nuevo lote, genera su código de barras y + * inserta/actualiza el registro en la tabla #vn2008.buy_edi + */ + DECLARE vEdi INT; + DECLARE vRewriteKop INT DEFAULT NULL; + DECLARE vBarcode CHAR(15) DEFAULT NULL; + DECLARE vIsDuplicated BOOLEAN DEFAULT FALSE; + DECLARE vUpdateExistent BOOLEAN DEFAULT FALSE; + + DECLARE CONTINUE HANDLER FOR 1062 -- ER_DUP_KEY + SET vIsDuplicated = TRUE; + + -- Genera el código de barras + + IF vAgj != 0 AND vAgj IS NOT NULL + THEN + SET vBarcode = CONCAT( + LPAD(vAuction, 2, 0), + LPAD(IFNULL(vClock, 99), 2, 0), + LPAD(DAYOFYEAR(vDate), 3, 0), + IF(vClock IS NULL OR vClock = 99, + LPAD(vAgj, 7, 0), + CONCAT(LPAD(vAgj, 5, 0), '01') + ), + '0' + ); + END IF; + + -- Reescribe el parámetro kop + + IF vKop IS NULL + THEN + SELECT default_kop INTO vKop FROM config; + END IF; + + SELECT e.kop INTO vRewriteKop + FROM mail e + JOIN message m ON m.sender_id = e.id + WHERE m.id = vMessage; + + SET vKop = IFNULL(vRewriteKop, vKop); + + -- Inserta el nuevo EKT + + INSERT INTO vn2008.buy_edi SET + barcode = IFNULL(vBarcode, barcode) + ,delivery_number = vDeliveryNumber + ,entry_year = YEAR(vDate) + ,fec = vDate + ,hor = vHour + ,ref = vRef + ,item = vItem + ,agj = vAgj + ,cat = vCat + ,pac = vPac + ,sub = vSub + ,kop = vKop + ,ptd = vPtd + ,pro = vPro + ,ori = vOrigin + ,ptj = vPtj + ,qty = vQuantiy + ,pri = vPrice + ,klo = vClock + ,s1 = vS1 + ,s2 = vS2 + ,s3 = vS3 + ,s4 = vS4 + ,s5 = vS5 + ,s6 = vS6 + ,k01 = vK1 + ,k02 = vK2 + ,k03 = vP1 + ,k04 = vP2 + ,auction = vAuction + ,package = vPackage; + + + -- Si el EKT está duplicado y el que habia en la tabla era uno + -- provisional, lo actualiza con los nuevos valores. + + IF NOT vIsDuplicated + THEN + SET vEdi = LAST_INSERT_ID(); + CALL ediLoad (vEdi); + + ELSEIF vDeliveryNumber != 0 + AND vDeliveryNumber IS NOT NULL + THEN + SELECT id INTO vEdi + FROM vn2008.buy_edi + WHERE delivery_number = vDeliveryNumber; + + SELECT COUNT(*) = 0 INTO vUpdateExistent + FROM vn2008.buy_edi e + JOIN batch b ON b.buy_edi_id = e.id + JOIN config c + WHERE e.delivery_number = vDeliveryNumber + AND b.type_id != c.presale_id; + END IF; + + IF vUpdateExistent + THEN + UPDATE vn2008.buy_edi SET + barcode = IFNULL(vBarcode, barcode) + ,fec = vDate + ,hor = vHour + ,ref = vRef + ,item = vItem + ,agj = vAgj + ,cat = vCat + ,pac = vPac + ,sub = vSub + ,kop = vKop + ,ptd = vPtd + ,pro = vPro + ,ori = vOrigin + ,ptj = vPtj + ,qty = vQuantiy + ,pri = vPrice + ,klo = vClock + ,s1 = vS1 + ,s2 = vS2 + ,s3 = vS3 + ,s4 = vS4 + ,s5 = vS5 + ,s6 = vS6 + ,k01 = vK1 + ,k02 = vK2 + ,k03 = vP1 + ,k04 = vP2 + ,auction = vAuction + ,package = vPackage + WHERE id = vEdi; + END IF; + + -- Registra el lote + + INSERT INTO batch SET + message_id = vMessage + ,type_id = vType + ,buy_edi_id = vEdi; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ediLoad` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ediLoad`(vEdi INT) +BEGIN + DECLARE vRef INT; + DECLARE vBuy INT; + DECLARE vItem INT; + DECLARE vQty INT; + DECLARE vPackage INT; + DECLARE vIsLot BOOLEAN; + + -- Carga los datos necesarios del EKT + + SELECT ref, qty, package INTO vRef, vQty, vPackage + FROM vn2008.buy_edi e + LEFT JOIN item i ON e.ref = i.id + WHERE e.id = vEdi; + + -- Inserta el cubo si no existe + + IF vPackage = 800 + THEN + SET vPackage = 800 + vQty; + + INSERT IGNORE INTO vn2008.Cubos SET + Id_Cubo = vPackage, + x = 7200 / vQty, + y = 1; + ELSE + INSERT IGNORE INTO vn2008.Cubos (Id_Cubo, X, Y, Z) + SELECT bucket_id, ROUND(x_size/10), ROUND(y_size/10), ROUND(z_size/10) + FROM bucket WHERE bucket_id = vPackage; + + IF ROW_COUNT() > 0 + THEN + INSERT INTO vn2008.mail SET + `subject` = 'Cubo añadido', + `text` = CONCAT('Se ha añadido el cubo: ', vPackage), + `to` = 'ekt@verdnatura.es'; + END IF; + END IF; + + -- Intenta obtener el artículo en base a los atributos holandeses + + INSERT IGNORE INTO item_track SET + item_id = vRef; + + SELECT c.Id_Compra, c.Id_Article INTO vBuy, vItem + FROM vn2008.buy_edi e + JOIN item_track t ON t.item_id = e.ref + LEFT JOIN vn2008.buy_edi l ON l.ref = e.ref + LEFT JOIN vn2008.Compres c ON c.buy_edi_id = l.id + JOIN vn2008.config cfg + WHERE e.id = vEdi + AND l.id != vEdi + AND c.Id_Article != cfg.generic_item + AND IF(t.s1, l.s1 = e.s1, TRUE) + AND IF(t.s2, l.s2 = e.s2, TRUE) + AND IF(t.s3, l.s3 = e.s3, TRUE) + AND IF(t.s4, l.s4 = e.s4, TRUE) + AND IF(t.s5, l.s5 = e.s5, TRUE) + AND IF(t.s6, l.s6 = e.s6, TRUE) + AND IF(t.kop, l.kop = e.kop, TRUE) + AND IF(t.pac, l.pac = e.pac, TRUE) + AND IF(t.cat, l.cat = e.cat, TRUE) + AND IF(t.ori, l.ori = e.ori, TRUE) + AND IF(t.pro, l.pro = e.pro, TRUE) + AND IF(t.sub, l.sub = e.sub, TRUE) + AND IF(t.package, l.package = e.package, TRUE) + AND c.Id_Article < 170000 + ORDER BY l.now DESC, c.Id_Compra ASC LIMIT 1; + + -- Determina si el articulo se vende por lotes + + IF vItem + THEN + SELECT COUNT(*) > 0 INTO vIsLot + FROM vn2008.Articles a + LEFT JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + WHERE a.Id_Article = vItem + AND t.`transaction`; + + -- Si el articulo se vende por lotes se inserta un nuevo artículo + + IF vIsLot + THEN + INSERT INTO vn2008.Articles ( + Article + ,Medida + ,Categoria + ,Id_Origen + ,iva_group_id + ,Foto + ,Color + ,Codintrastat + ,tipo_id + ,Tallos + ) + SELECT + i.`name` + ,IFNULL(e.s1, e.pac) + ,e.cat + ,IFNULL(o.id, 17) + ,IFNULL(a.iva_group_id, 1) + ,a.Foto + ,a.Color + ,a.Codintrastat + ,IFNULL(a.tipo_id, 10) + ,IF(a.tipo_id = 15, 0, 1) + FROM vn2008.buy_edi e + LEFT JOIN item i ON i.id = e.ref + LEFT JOIN vn2008.Origen o ON o.Abreviatura = e.ori + LEFT JOIN vn2008.Articles a ON a.Id_Article = vItem + WHERE e.id = vEdi; + + SET vItem = LAST_INSERT_ID(); + END IF; + END IF; + + -- Inserta la compra asociada al EKT + + INSERT INTO vn2008.Compres + ( + Id_Entrada + ,buy_edi_id + ,Costefijo + ,Id_Article + ,grouping + ,caja + ,Packing + ,Cantidad + ,Productor + ,Etiquetas + ,Id_Cubo + ) + SELECT + cfg.edi_entry + ,vEdi + ,(@t := IF(a.Tallos, a.Tallos, 1)) * e.pri + ,IFNULL(vItem, cfg.generic_item) + ,IFNULL(c.grouping, e.pac) + ,IFNULL(c.caja, TRUE) + ,@pac := e.pac / @t + ,@pac * e.qty + ,s.company_name + ,e.qty + ,IFNULL(c.Id_Cubo, e.package) + FROM vn2008.buy_edi e + LEFT JOIN vn2008.Compres c ON c.Id_Compra = vBuy + LEFT JOIN vn2008.Articles a ON a.Id_Article = c.Id_Article + LEFT JOIN supplier s ON e.pro = s.supplier_id + JOIN vn2008.config cfg + WHERE e.id = vEdi + LIMIT 1; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `messageNew` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `messageNew`( + vMailId VARCHAR(100) + ,vSender VARCHAR(150) + ,OUT vMessageId INT +) +BEGIN +/** + * Registra un correo electronico. + * + * @param vMailId Message-ID del correo electrónico + * @param vSender Id del correo electrónio del remitente + */ + DECLARE vSenderId INT; + + SELECT id INTO vSenderId FROM mail + WHERE mail = vSender; + + INSERT IGNORE INTO message SET + sender_id = vSenderId + ,mail_id = vMailId; + + SET vMessageId = LAST_INSERT_ID(); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `__batch_new` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `__batch_new`( + v_message INT + ,v_type MEDIUMINT + ,v_delivery_number BIGINT + ,v_fec DATE + ,v_hor TIME + ,v_ref INT + ,v_agj INT + ,v_cat VARCHAR(2) + ,v_pac INT + ,v_sub MEDIUMINT + ,v_kop INT + ,v_ptd VARCHAR(6) + ,v_pro MEDIUMINT + ,v_ori VARCHAR(3) + ,v_ptj MEDIUMINT + ,v_qty INT + ,v_pri DOUBLE + ,v_klo SMALLINT + ,v_s1 VARCHAR(3) + ,v_s2 VARCHAR(3) + ,v_s3 VARCHAR(3) + ,v_s4 VARCHAR(4) + ,v_s5 VARCHAR(3) + ,v_s6 VARCHAR(3) + ,v_k1 SMALLINT + ,v_k2 SMALLINT + ,v_p1 TINYINT + ,v_p2 TINYINT + ,v_auction SMALLINT + ,v_package INT +) +BEGIN +/** + * Añade un nuevo lote, genera su código de barras y + * inserta/actualiza el registro en la tabla #vn2008.buy_edi + **/ + + DECLARE v_edi INT; + DECLARE v_barcode CHAR(15) DEFAULT NULL; + DECLARE v_is_duplicated BOOLEAN DEFAULT FALSE; + DECLARE v_update_existent BOOLEAN DEFAULT FALSE; + + DECLARE CONTINUE HANDLER FOR 1062 -- ER_DUP_KEY + SET v_is_duplicated = TRUE; + + -- Genera el código de barras + + IF v_agj != 0 AND v_agj IS NOT NULL + THEN + SET v_barcode = CONCAT( + LPAD(v_auction, 2, 0), + LPAD(IFNULL(v_klo, 99), 2, 0), + LPAD(DAYOFYEAR(v_fec), 3, 0), + IF(v_klo IS NULL OR v_klo = 99, + LPAD(v_agj, 7, 0), + CONCAT(LPAD(v_agj, 5, 0), '01') + ), + '0' + ); + END IF; + + IF v_kop IS NULL + THEN + SELECT default_kop INTO v_kop FROM config; + END IF; + + -- Inserta el nuevo EKT + + INSERT INTO vn2008.buy_edi SET + barcode = IFNULL(v_barcode, barcode) + ,delivery_number = v_delivery_number + ,entry_year = YEAR(v_fec) + ,fec = v_fec + ,hor = v_hor + ,ref = v_ref + ,agj = v_agj + ,cat = v_cat + ,pac = v_pac + ,sub = v_sub + ,kop = v_kop + ,ptd = v_ptd + ,pro = v_pro + ,ori = v_ori + ,ptj = v_ptj + ,qty = v_qty + ,pri = v_pri + ,klo = v_klo + ,s1 = v_s1 + ,s2 = v_s2 + ,s3 = v_s3 + ,s4 = v_s4 + ,s5 = v_s5 + ,s6 = v_s6 + ,k01 = v_k1 + ,k02 = v_k2 + ,k03 = v_p1 + ,k04 = v_p2 + ,auction = v_auction + ,package = v_package; + + + -- Si el EKT está duplicado y el que habia en la tabla era uno + -- provisional, lo actualiza con los nuevos valores. + + IF NOT v_is_duplicated + THEN + SET v_edi = LAST_INSERT_ID(); + CALL edi_load (v_edi); + + ELSEIF v_delivery_number != 0 + AND v_delivery_number IS NOT NULL + THEN + SELECT id INTO v_edi + FROM vn2008.buy_edi + WHERE delivery_number = v_delivery_number; + + SELECT COUNT(*) = 0 INTO v_update_existent + FROM vn2008.buy_edi e + JOIN batch b ON b.buy_edi_id = e.id + JOIN config c + WHERE e.delivery_number = v_delivery_number + AND b.type_id != c.presale_id; + END IF; + + IF v_update_existent + THEN + UPDATE vn2008.buy_edi SET + barcode = IFNULL(v_barcode, barcode) + ,fec = v_fec + ,hor = v_hor + ,ref = v_ref + ,agj = v_agj + ,cat = v_cat + ,pac = v_pac + ,sub = v_sub + ,kop = v_kop + ,ptd = v_ptd + ,pro = v_pro + ,ori = v_ori + ,ptj = v_ptj + ,qty = v_qty + ,pri = v_pri + ,klo = v_klo + ,s1 = v_s1 + ,s2 = v_s2 + ,s3 = v_s3 + ,s4 = v_s4 + ,s5 = v_s5 + ,s6 = v_s6 + ,k01 = v_k1 + ,k02 = v_k2 + ,k03 = v_p1 + ,k04 = v_p2 + ,auction = v_auction + ,package = v_package + WHERE id = v_edi; + END IF; + + -- Registra el lote + + INSERT INTO batch SET + message_id = v_message + ,type_id = v_type + ,buy_edi_id = v_edi; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `__edi_load` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `__edi_load`(v_edi INT) +BEGIN + DECLARE v_ref INT; + DECLARE v_buy INT; + DECLARE v_item INT; + DECLARE v_qty INT; + DECLARE v_package INT; + DECLARE v_is_lot BOOLEAN; + + -- Carga los datos necesarios del EKT + + SELECT ref, qty, package INTO v_ref, v_qty, v_package + FROM vn2008.buy_edi e + LEFT JOIN item i ON e.ref = i.id + WHERE e.id = v_edi; + + -- Inserta el cubo si no existe + + IF v_package = 800 + THEN + SET v_package = 800 + v_qty; + + INSERT IGNORE INTO vn2008.Cubos SET + Id_Cubo = v_package, + x = 7200 / v_qty, + y = 1; + ELSE + INSERT IGNORE INTO vn2008.Cubos (Id_Cubo, X, Y, Z) + SELECT bucket_id, ROUND(x_size/10), ROUND(y_size/10), ROUND(z_size/10) + FROM bucket WHERE bucket_id = v_package; + + IF ROW_COUNT() > 0 + THEN + INSERT INTO vn2008.mail SET + `subject` = 'Cubo añadido', + `text` = CONCAT('Se ha añadido el cubo: ', v_package), + `to` = 'ekt@verdnatura.es'; + END IF; + END IF; + + -- Intenta obtener el artículo en base a los atributos holandeses + + INSERT IGNORE INTO item_track SET + item_id = v_ref; + + SELECT c.Id_Compra, c.Id_Article INTO v_buy, v_item + FROM vn2008.buy_edi e + JOIN item_track t ON t.item_id = e.ref + LEFT JOIN vn2008.buy_edi l ON l.ref = e.ref + LEFT JOIN vn2008.Compres c ON c.buy_edi_id = l.id + JOIN vn2008.config cfg + WHERE e.id = v_edi + AND l.id != v_edi + AND c.Id_Article != cfg.generic_item + AND IF(t.s1, l.s1 = e.s1, TRUE) + AND IF(t.s2, l.s2 = e.s2, TRUE) + AND IF(t.s3, l.s3 = e.s3, TRUE) + AND IF(t.s4, l.s4 = e.s4, TRUE) + AND IF(t.s5, l.s5 = e.s5, TRUE) + AND IF(t.s6, l.s6 = e.s6, TRUE) + AND IF(t.kop, l.kop = e.kop, TRUE) + AND IF(t.pac, l.pac = e.pac, TRUE) + AND IF(t.cat, l.cat = e.cat, TRUE) + AND IF(t.ori, l.ori = e.ori, TRUE) + AND IF(t.pro, l.pro = e.pro, TRUE) + AND IF(t.sub, l.sub = e.sub, TRUE) + AND IF(t.package, l.package = e.package, TRUE) + AND c.Id_Article < 170000 + ORDER BY l.now DESC, c.Id_Compra ASC LIMIT 1; + + -- Determina si el articulo se vende por lotes + + IF v_item + THEN + SELECT COUNT(*) > 0 INTO v_is_lot + FROM vn2008.Articles a + LEFT JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + WHERE a.Id_Article = v_item + AND t.`transaction`; + + -- Si el articulo se vende por lotes se inserta un nuevo artículo + + IF v_is_lot + THEN + INSERT INTO vn2008.Articles ( + Article + ,Medida + ,Categoria + ,Id_Origen + ,iva_group_id + ,Foto + ,Color + ,Codintrastat + ,tipo_id + ,Tallos + ) + SELECT + i.`name` + ,IFNULL(e.s1, e.pac) + ,e.cat + ,IFNULL(o.id, 17) + ,IFNULL(a.iva_group_id, 1) + ,a.Foto + ,a.Color + ,a.Codintrastat + ,IFNULL(a.tipo_id, 10) + ,IF(a.tipo_id = 15, 0, 1) + FROM vn2008.buy_edi e + LEFT JOIN item i ON i.id = e.ref + LEFT JOIN vn2008.Origen o ON o.Abreviatura = e.ori + LEFT JOIN vn2008.Articles a ON a.Id_Article = v_item + WHERE e.id = v_edi; + + SET v_item = LAST_INSERT_ID(); + END IF; + END IF; + + -- Inserta la compra asociada al EKT + + INSERT INTO vn2008.Compres + ( + Id_Entrada + ,buy_edi_id + ,Costefijo + ,Id_Article + ,grouping + ,caja + ,Packing + ,Cantidad + ,Productor + ,Etiquetas + ,Id_Cubo + ) + SELECT + cfg.edi_entry + ,v_edi + ,(@t := IF(a.Tallos, a.Tallos, 1)) * e.pri + ,IFNULL(v_item, cfg.generic_item) + ,IFNULL(c.grouping, e.pac) + ,IFNULL(c.caja, TRUE) + ,@pac := e.pac / @t + ,@pac * e.qty + ,s.company_name + ,e.qty + ,IFNULL(c.Id_Cubo, e.package) + FROM vn2008.buy_edi e + LEFT JOIN vn2008.Compres c ON c.Id_Compra = v_buy + LEFT JOIN vn2008.Articles a ON a.Id_Article = c.Id_Article + LEFT JOIN supplier s ON e.pro = s.supplier_id + JOIN vn2008.config cfg + WHERE e.id = v_edi + LIMIT 1; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `__message_new` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `__message_new`( + v_mail_id VARCHAR(100) + ,v_sender VARCHAR(150) + ,OUT v_message_id INT +) +BEGIN +/** + * Registra un correo electronico. + * + * @param v_mail_id Message-ID del correo electrónico + * @param v_sender Id del correo electrónio del remitente + **/ + + DECLARE v_sender_id INT; + + SELECT id INTO v_sender_id FROM mail + WHERE mail = v_sender; + + INSERT IGNORE INTO message SET + sender_id = v_sender_id + ,mail_id = v_mail_id; + + SET v_message_id = LAST_INSERT_ID(); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Current Database: `vn2008` +-- + +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `vn2008` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; + +USE `vn2008`; + +-- +-- Table structure for table `Agencias` +-- + +DROP TABLE IF EXISTS `Agencias`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Agencias` ( + `Id_Agencia` int(11) NOT NULL AUTO_INCREMENT, + `Agencia` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Vista` int(11) DEFAULT '0', + `m3` double DEFAULT '0', + `cod71` tinyint(3) unsigned DEFAULT '0', + `web` smallint(1) unsigned zerofill NOT NULL DEFAULT '0', + `agency_id` smallint(6) NOT NULL, + `agency_service_id` tinyint(4) NOT NULL DEFAULT '1', + `inflacion` decimal(5,2) NOT NULL DEFAULT '0.00' COMMENT 'Este valor se utiliza para aumentar el valor del componente porte.', + `is_volumetric` tinyint(1) NOT NULL DEFAULT '0', + `send_mail` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `show_AgencyName` tinyint(1) DEFAULT '1', + `tpv` tinyint(1) NOT NULL DEFAULT '1', + `externalAgency` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`Id_Agencia`), + KEY `Agencias` (`Agencia`), + KEY `Vista` (`Vista`) +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Agencias_dits` +-- + +DROP TABLE IF EXISTS `Agencias_dits`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Agencias_dits` ( + `idAgencia_dits` int(11) NOT NULL AUTO_INCREMENT, + `idaccion_dits` int(11) NOT NULL, + `ODBC_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Ticket` int(11) NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `value_old` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `value_new` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`idAgencia_dits`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Agencias_province` +-- + +DROP TABLE IF EXISTS `Agencias_province`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Agencias_province` ( + `province_id` smallint(6) unsigned NOT NULL, + `agency_id` smallint(5) unsigned NOT NULL, + `zona` tinyint(4) NOT NULL, + `warehouse_id` smallint(6) unsigned NOT NULL, + `route` tinyint(4) NOT NULL COMMENT 'Etiqueta zeleris', + PRIMARY KEY (`province_id`,`agency_id`,`warehouse_id`), + KEY `warehouse_id` (`warehouse_id`), + KEY `agency_id` (`agency_id`), + CONSTRAINT `Agencias_province_ibfk_1` FOREIGN KEY (`province_id`) REFERENCES `province` (`province_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `Agencias_province_ibfk_2` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `Agencias_province_ibfk_3` FOREIGN KEY (`agency_id`) REFERENCES `agency` (`agency_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Agencias_zonas` +-- + +DROP TABLE IF EXISTS `Agencias_zonas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Agencias_zonas` ( + `Id_Agencia` int(11) NOT NULL, + `zona` tinyint(4) NOT NULL, + `price` double NOT NULL, + `Id_Article` int(10) NOT NULL DEFAULT '71', + `warehouse_id` smallint(6) NOT NULL DEFAULT '1', + `porte_minimo` tinyint(1) NOT NULL DEFAULT '0', + `inflacion` decimal(5,2) NOT NULL DEFAULT '1.00', + PRIMARY KEY (`Id_Agencia`,`zona`,`Id_Article`,`warehouse_id`), + KEY `Id_Article` (`Id_Article`), + CONSTRAINT `Agencias_zonas_ibfk_1` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `Agencias_zonas_ibfk_2` FOREIGN KEY (`Id_Agencia`) REFERENCES `Agencias` (`Id_Agencia`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Articles` +-- + +DROP TABLE IF EXISTS `Articles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Articles` ( + `Id_Article` int(11) NOT NULL AUTO_INCREMENT, + `Equivalente` int(11) unsigned DEFAULT NULL, + `Article` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Medida` int(10) unsigned DEFAULT NULL, + `Tallos` int(11) DEFAULT '1', + `PVP` double DEFAULT '0', + `Imprimir` tinyint(1) NOT NULL DEFAULT '0', + `Albaranero` tinyint(1) NOT NULL DEFAULT '0', + `iva_group_id` tinyint(4) unsigned NOT NULL DEFAULT '1', + `Familia` varchar(3) COLLATE utf8_unicode_ci DEFAULT 'VT', + `caja` tinyint(1) NOT NULL DEFAULT '0', + `Categoria` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `id_origen` tinyint(2) unsigned NOT NULL, + `do_photo` tinyint(4) NOT NULL DEFAULT '0', + `Foto` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Color` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `Nicho` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `Codintrastat` int(8) unsigned zerofill DEFAULT NULL, + `Min` tinyint(1) NOT NULL DEFAULT '0', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `offer` tinyint(4) NOT NULL DEFAULT '0', + `bargain` tinyint(4) NOT NULL DEFAULT '0', + `comments` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'renombrar: reference', + `tipo_id` smallint(5) unsigned NOT NULL, + `generic` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0', + `producer_id` mediumint(3) unsigned DEFAULT NULL, + `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `density` double NOT NULL DEFAULT '167' COMMENT 'Almacena la densidad en kg/m3 para el calculo de los portes ', + `relevancy` tinyint(1) NOT NULL DEFAULT '0', + `expenceFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '7001000000', + PRIMARY KEY (`Id_Article`), + KEY `Article` (`Article`), + KEY `Color` (`Color`), + KEY `id_origen` (`id_origen`), + KEY `Codintrastat` (`Codintrastat`), + KEY `iva_group_id` (`iva_group_id`), + KEY `tipo_id` (`tipo_id`), + KEY `producer_id` (`producer_id`), + KEY `expenceFk_idx` (`expenceFk`), + CONSTRAINT `Articles_ibfk_1` FOREIGN KEY (`id_origen`) REFERENCES `Origen` (`id`) ON UPDATE CASCADE, + CONSTRAINT `Articles_ibfk_2` FOREIGN KEY (`Codintrastat`) REFERENCES `Intrastat` (`Codintrastat`) ON UPDATE CASCADE, + CONSTRAINT `Articles_ibfk_4` FOREIGN KEY (`iva_group_id`) REFERENCES `iva_group` (`iva_group_id`) ON UPDATE CASCADE, + CONSTRAINT `Articles_ibfk_5` FOREIGN KEY (`tipo_id`) REFERENCES `Tipos` (`tipo_id`) ON UPDATE CASCADE, + CONSTRAINT `expenceFk` FOREIGN KEY (`expenceFk`) REFERENCES `Gastos` (`Id_Gasto`) ON UPDATE CASCADE, + CONSTRAINT `producer_id` FOREIGN KEY (`producer_id`) REFERENCES `producer` (`producer_id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ArticlesBeforeInsert` + BEFORE INSERT ON `Articles` FOR EACH ROW +BEGIN + DECLARE vDensity DOUBLE; + DECLARE vInsertId INT; + + IF NEW.density IS NULL + THEN + SELECT density INTO vDensity + FROM Tipos WHERE tipo_id = NEW.tipo_id; + + SET NEW.density = vDensity; + END IF; + + IF NEW.Foto IS NULL + THEN + SELECT `auto_increment` INTO vInsertId + FROM `information_schema`.TABLES + WHERE `table_name` = 'Articles' + AND `table_schema` = DATABASE(); + + SET NEW.Foto = vInsertId; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Articles_AFTER_INSERT` AFTER INSERT ON `Articles` FOR EACH ROW +BEGIN + + CALL itemTagArrangedUpdate(NEW.Id_Article); + + INSERT INTO vn.itemTaxCountry(itemFk, countryFk, taxClassFk) + SELECT NEW.Id_Article, 1, NEW.iva_group_id; + + INSERT INTO vn.itemTaxCountry(itemFk, countryFk, taxClassFk) + SELECT NEW.Id_Article, 5, NEW.iva_group_id; + + INSERT INTO vn.itemTaxCountry(itemFk, countryFk, taxClassFk) + SELECT NEW.Id_Article, 30, NEW.iva_group_id; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Articles_AFTER_UPDATE` AFTER UPDATE ON `Articles` FOR EACH ROW +BEGIN + + CALL itemTagArrangedUpdate(NEW.Id_Article); + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Articles_PVP` +-- + +DROP TABLE IF EXISTS `Articles_PVP`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Articles_PVP` ( + `Id_Article` int(11) NOT NULL, + `PVP` double DEFAULT NULL, + `Id_Cliente` int(11) NOT NULL, + `Fecha` date NOT NULL, + KEY `id_article_pvp_idx` (`Id_Article`), + KEY `id_cliente_pvp_idx` (`Id_Cliente`), + CONSTRAINT `id_article_pvp` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `id_cliente_pvp` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena los precios para etiquetar los articulos a los clientes'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Articles_botanical` +-- + +DROP TABLE IF EXISTS `Articles_botanical`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Articles_botanical` ( + `Id_Article` int(11) NOT NULL, + `botanical` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `genus_id` mediumint(8) unsigned DEFAULT NULL, + `specie_id` mediumint(8) unsigned DEFAULT NULL, + PRIMARY KEY (`Id_Article`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Sustituye a antiguo NomBotanic de Articles'; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `Articles_botanical_bi` BEFORE INSERT ON `Articles_botanical` FOR EACH ROW +BEGIN + IF NEW.botanical = '' THEN + SET NEW.botanical = NULL; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `Articles_botanical_bu` BEFORE UPDATE ON `Articles_botanical` FOR EACH ROW +BEGIN + IF NEW.botanical = '' THEN + SET NEW.botanical = NULL; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Articles_dits` +-- + +DROP TABLE IF EXISTS `Articles_dits`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Articles_dits` ( + `idArticles_dits` int(11) NOT NULL AUTO_INCREMENT, + `idaccion_dits` int(11) NOT NULL, + `ODBC_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Ticket` int(11) NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `value_old` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `value_new` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`idArticles_dits`), + KEY `fgkey1_idx` (`idaccion_dits`), + KEY `fgkey2_idx` (`Id_Ticket`), + KEY `fgkey3_idx` (`Id_Trabajador`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Articles_nicho` +-- + +DROP TABLE IF EXISTS `Articles_nicho`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Articles_nicho` ( + `Id_Article` int(11) NOT NULL AUTO_INCREMENT, + `warehouse_id` smallint(6) unsigned NOT NULL DEFAULT '1', + `nicho` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `modificationDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`Id_Article`,`warehouse_id`), + KEY `Articles_nicho_wh_fk` (`warehouse_id`), + CONSTRAINT `Articles_nicho_wh_fk` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `Articles_nichos_fk` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Articles_nichoBeforeInsert` + BEFORE INSERT ON `Articles_nicho` FOR EACH ROW +BEGIN + -- XXX: Intenta localizar al usuario que introduce BIO en esta tabla. + + IF NEW.nicho IS NOT NULL AND NEW.nicho LIKE '%BIO%' + THEN + CALL util.debugAdd ('nicho', NEW.nicho); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Articles_nicho_AFTER_INSERT` AFTER INSERT ON `Articles_nicho` FOR EACH ROW +BEGIN + +DECLARE mailText VARCHAR(90); + +IF NEW.nicho LIKE 'BIONIC%' THEN + + SELECT IFNULL(CONCAT(Id_Trabajador, ' ', CodigoTrabajador, ' ' ,Nombre, ' ' , Apellidos),'TRABAJADOR NO ENCONTRADO') + INTO mailText + FROM Trabajadores + WHERE Id_Trabajador = vn2008.get_Trabajador(); + + SELECT CONCAT(mailText, ' ', Article, ' ', Medida) + INTO mailText + FROM Articles + WHERE Id_Article = NEW.Id_Article; + + INSERT INTO mail(`to`,reply_to,subject,text) + VALUES('pako@verdnatura.es,nelo@verdnatura.es','informatica@verdnatura.es','BIONIC INSERT',mailText); + + +END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Articles_nichoBeforeUpdate` + BEFORE UPDATE ON `Articles_nicho` FOR EACH ROW +BEGIN + -- XXX: Intenta localizar al usuario que introduce BIO en esta tabla. + + IF NOT (NEW.nicho <=> OLD.nicho) AND NEW.nicho LIKE '%BIO%' + THEN + CALL util.debugAdd ('nicho', NEW.nicho); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Articles_nicho_AFTER_UPDATE` AFTER UPDATE ON `Articles_nicho` FOR EACH ROW +BEGIN + +DECLARE mailText VARCHAR(90); + +IF NEW.nicho LIKE 'BIONIC%' THEN + + SELECT IFNULL(CONCAT(Id_Trabajador, ' ', CodigoTrabajador, ' ' ,Nombre, ' ' , Apellidos),'TRABAJADOR NO ENCONTRADO') + INTO mailText + FROM Trabajadores + WHERE Id_Trabajador = vn2008.get_Trabajador(); + + SELECT CONCAT(mailText, ' ', Article, ' ', Medida) + INTO mailText + FROM Articles + WHERE Id_Article = NEW.Id_Article; + + INSERT INTO mail(`to`,reply_to,subject,text) + VALUES('pako@verdnatura.es,nelo@verdnatura.es','informatica@verdnatura.es','BIONIC UPDATE',mailText); + + +END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Articles_old` +-- + +DROP TABLE IF EXISTS `Articles_old`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Articles_old` ( + `Id_Article` int(11) NOT NULL DEFAULT '0', + `Equivalente` int(11) unsigned DEFAULT NULL, + `Article` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Medida` int(10) unsigned DEFAULT NULL, + `Tallos` int(11) DEFAULT '1', + `PVP` double DEFAULT '0', + `Imprimir` tinyint(1) NOT NULL DEFAULT '0', + `Albaranero` tinyint(1) NOT NULL DEFAULT '0', + `iva_group_id` tinyint(4) unsigned NOT NULL DEFAULT '1', + `Familia` varchar(3) COLLATE utf8_unicode_ci DEFAULT 'VT', + `caja` tinyint(1) NOT NULL DEFAULT '0', + `Categoria` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `id_origen` tinyint(2) unsigned NOT NULL, + `do_photo` tinyint(4) NOT NULL DEFAULT '0', + `Foto` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Color` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `Nicho` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `Codintrastat` int(8) unsigned zerofill DEFAULT NULL, + `Min` tinyint(1) NOT NULL DEFAULT '0', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `offer` tinyint(4) NOT NULL DEFAULT '0', + `bargain` tinyint(4) NOT NULL DEFAULT '0', + `comments` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'renombrar: reference', + `tipo_id` smallint(5) unsigned NOT NULL, + `generic` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0', + `producer_id` mediumint(3) unsigned DEFAULT NULL, + `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Baldas` +-- + +DROP TABLE IF EXISTS `Baldas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Baldas` ( + `Id_Estanterias` int(11) NOT NULL, + `Id_Baldas` int(11) NOT NULL, + `h` int(11) NOT NULL, + PRIMARY KEY (`Id_Estanterias`,`Id_Baldas`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Bancos` +-- + +DROP TABLE IF EXISTS `Bancos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Bancos` ( + `Id_Banco` int(11) NOT NULL DEFAULT '0', + `Banco` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Cuenta` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `cash` smallint(6) NOT NULL DEFAULT '0', + `warehouse_id` smallint(5) unsigned NOT NULL DEFAULT '1', + `entity_id` int(10) unsigned NOT NULL, + `activo` tinyint(4) NOT NULL DEFAULT '1', + PRIMARY KEY (`Id_Banco`), + KEY `BancosBanco` (`Banco`), + KEY `fk_Bancos_entity1_idx` (`entity_id`), + KEY `foreignkey1_idx` (`cash`), + CONSTRAINT `foreignkey1` FOREIGN KEY (`cash`) REFERENCES `vn`.`accountingType` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Apunta a la vista vn.Accounting\nLa columna cash es la FK de vn.AccountingType'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Bancos_poliza` +-- + +DROP TABLE IF EXISTS `Bancos_poliza`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Bancos_poliza` ( + `poliza_id` int(11) NOT NULL AUTO_INCREMENT, + `referencia` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `importe` double NOT NULL, + `com_dispuesto` double DEFAULT NULL, + `com_no_dispuesto` double DEFAULT NULL, + `com_anual` double DEFAULT NULL, + `apertura` date NOT NULL, + `cierre` date DEFAULT NULL, + `Id_Banco` int(11) NOT NULL, + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + PRIMARY KEY (`poliza_id`), + KEY `Id_Banco_Poliza_idx` (`Id_Banco`), + KEY `Id_Poliza_Empresa_idx` (`empresa_id`), + CONSTRAINT `Id_Banco_Poliza` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE, + CONSTRAINT `Id_Poliza_Empresa` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lineas de credito asociadas a cuentas corrientes'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Brasa` +-- + +DROP TABLE IF EXISTS `Brasa`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Brasa` ( + `Id_Cliente` int(10) unsigned NOT NULL DEFAULT '0', + `Cliente` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `Vista` int(10) unsigned NOT NULL DEFAULT '0', + `Reg` bigint(21) unsigned NOT NULL DEFAULT '0', + `Consumo` double NOT NULL, + `Grupo` int(10) unsigned NOT NULL, + PRIMARY KEY (`Id_Cliente`), + KEY `Index_1` (`Id_Cliente`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Cajas` +-- + +DROP TABLE IF EXISTS `Cajas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Cajas` ( + `Id_Caja` int(11) NOT NULL AUTO_INCREMENT, + `Cajafecha` date NOT NULL, + `Partida` tinyint(1) NOT NULL DEFAULT '0', + `Serie` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, + `Numero` int(11) DEFAULT NULL, + `Concepto` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `Entrada` decimal(10,2) DEFAULT NULL, + `Salida` decimal(10,2) DEFAULT NULL, + `Id_Banco` int(11) DEFAULT '1', + `Id_Trabajador` int(11) DEFAULT NULL, + `empresa_id` smallint(5) unsigned DEFAULT NULL COMMENT 'kakear', + `linked` tinyint(4) DEFAULT '0', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `ok` tinyint(4) NOT NULL DEFAULT '0', + `warehouse_id` smallint(5) unsigned NOT NULL DEFAULT '1' COMMENT 'to kak\n', + `conciliado` int(2) NOT NULL DEFAULT '0', + `Proveedores_account_Id` mediumint(8) unsigned NOT NULL, + `id_calculated` varchar(90) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Id_Caja`), + UNIQUE KEY `id_calculated_UNIQUE` (`id_calculated`), + KEY `CajasCajafecha` (`Cajafecha`), + KEY `Id_Banco` (`Id_Banco`), + KEY `Id_Trabajador` (`Id_Trabajador`), + KEY `empresa_id` (`empresa_id`), + KEY `warehouse_id` (`warehouse_id`), + KEY `fk_Cajas_Proveedores_account1_idx` (`Proveedores_account_Id`), + CONSTRAINT `Cajas_ibfk_2` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`CajasBeforeInsert` BEFORE INSERT ON `Cajas` FOR EACH ROW +BEGIN + IF IFNULL(NEW.Concepto,"") = "" THEN + CALL util.throw ('Error. El concepto esta vacío'); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Cajas eliminadas` +-- + +DROP TABLE IF EXISTS `Cajas eliminadas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Cajas eliminadas` ( + `Id_Caja` int(11) NOT NULL DEFAULT '0', + `Cajafecha` datetime DEFAULT NULL, + `Partida` tinyint(1) NOT NULL DEFAULT '0', + `Serie` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, + `Numero` int(11) DEFAULT NULL, + `Concepto` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `Entrada` double DEFAULT NULL, + `Salida` double DEFAULT NULL, + PRIMARY KEY (`Id_Caja`), + KEY `CajasCajafecha` (`Cajafecha`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Clases` +-- + +DROP TABLE IF EXISTS `Clases`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Clases` ( + `Id_Clase` int(11) NOT NULL DEFAULT '0', + `Clase` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Id_Clase`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Clientes` +-- + +DROP TABLE IF EXISTS `Clientes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Clientes` ( + `id_cliente` int(11) NOT NULL AUTO_INCREMENT, + `cliente` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `descuento` tinyint(3) unsigned NOT NULL DEFAULT '0', + `default_address` int(11) DEFAULT NULL, + `domicilio` longtext COLLATE utf8_unicode_ci, + `if` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `telefono` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `fax` varchar(11) COLLATE utf8_unicode_ci DEFAULT NULL, + `e-mail` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, + `cc` varchar(23) COLLATE utf8_unicode_ci DEFAULT NULL, + `vencimiento` smallint(6) NOT NULL DEFAULT '5', + `recibo` int(11) DEFAULT '1' COMMENT 'Deprecated', + `oficial` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'Deprecated', + `contabilizado` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Deprecated', + `movil` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `Cuenta` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `RE` tinyint(1) NOT NULL DEFAULT '0', + `poblacion` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, + `province_id` smallint(5) unsigned DEFAULT NULL, + `codPostal` varchar(8) COLLATE utf8_unicode_ci DEFAULT NULL, + `razonSocial` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, + `contacto` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `mayorista` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Deprecated', + `reexpedicion` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Deprecated', + `invoice` tinyint(1) NOT NULL DEFAULT '1', + `notas` text COLLATE utf8_unicode_ci COMMENT 'Deprecated', + `notas_administracion` text COLLATE utf8_unicode_ci NOT NULL COMMENT 'Deprecated', + `copiaFactura` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Deprecated', + `retener` tinyint(1) NOT NULL DEFAULT '0', + `congelado` tinyint(1) NOT NULL DEFAULT '0', + `Id_Trabajador` int(11) DEFAULT NULL, + `credito` double NOT NULL DEFAULT '0', + `cyc` double DEFAULT NULL, + `Id_Pais` mediumint(8) unsigned NOT NULL DEFAULT '1', + `activo` tinyint(1) NOT NULL DEFAULT '1', + `gestdoc_id` int(11) DEFAULT NULL, + `calidad` int(2) DEFAULT '11', + `pay_met_id` tinyint(3) unsigned NOT NULL DEFAULT '5', + `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `mail` tinyint(1) NOT NULL DEFAULT '1', + `chanel_id` smallint(6) DEFAULT NULL, + `vies` tinyint(4) NOT NULL DEFAULT '0', + `split_holland` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'eliminar', + `sepaFth` tinyint(1) DEFAULT '0' COMMENT 'campo para recibir los escritos de los clientes para el sepa', + `sepaVnl` tinyint(1) DEFAULT '0', + `coreFth` tinyint(1) DEFAULT '0', + `coreVnl` tinyint(1) DEFAULT '0', + `risk_calculated` date NOT NULL, + `coreVnh` tinyint(1) DEFAULT '0', + `real` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'Define los clientes cuyas ventas hay que tener en cuenta en los calculos estadisticos.', + `clientes_tipo_id` int(11) NOT NULL DEFAULT '1', + `postcode_id` int(11) unsigned DEFAULT NULL, + `mail_address` int(11) DEFAULT NULL, + `codpos` char(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `creditInsurance` int(11) DEFAULT NULL, + `EYPBC` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Email\nYesterday\nPurchases\nBy\nConsigna', + `invoiceByAddress` tinyint(1) DEFAULT '0', + `cplusTerIdNifFk` int(11) NOT NULL DEFAULT '1', + PRIMARY KEY (`id_cliente`), + UNIQUE KEY `IF` (`if`), + KEY `Id_Trabajador` (`Id_Trabajador`), + KEY `Id_Pais` (`Id_Pais`), + KEY `pay_met_id` (`pay_met_id`), + KEY `canal_nuevo_cliente` (`chanel_id`), + KEY `Cuenta` (`Cuenta`), + KEY `province_id` (`province_id`), + KEY `default_address` (`default_address`), + KEY `Telefono` (`telefono`), + KEY `movil` (`movil`), + KEY `tipos_de_cliente_idx` (`clientes_tipo_id`), + KEY `cpostcode_fk_idx` (`postcode_id`), + KEY `codpos` (`codpos`,`codPostal`), + KEY `clientes_fk_6_idx` (`cplusTerIdNifFk`), + CONSTRAINT `Clientes_ibfk_1` FOREIGN KEY (`Id_Pais`) REFERENCES `Paises` (`Id`) ON UPDATE CASCADE, + CONSTRAINT `Clientes_ibfk_2` FOREIGN KEY (`pay_met_id`) REFERENCES `pay_met` (`id`) ON UPDATE CASCADE, + CONSTRAINT `Clientes_ibfk_3` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `Clientes_ibfk_4` FOREIGN KEY (`default_address`) REFERENCES `Consignatarios` (`id_consigna`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `Clientes_ibfk_5` FOREIGN KEY (`province_id`) REFERENCES `province` (`province_id`) ON UPDATE CASCADE, + CONSTRAINT `Clientes_postcode` FOREIGN KEY (`postcode_id`) REFERENCES `postcodeKK` (`postcode_id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `canal_nuevo_cliente` FOREIGN KEY (`chanel_id`) REFERENCES `chanel` (`chanel_id`) ON UPDATE CASCADE, + CONSTRAINT `clientes_fk_6` FOREIGN KEY (`cplusTerIdNifFk`) REFERENCES `vn`.`cplusTerIdNif` (`id`) ON UPDATE CASCADE, + CONSTRAINT `tipos_de_cliente` FOREIGN KEY (`clientes_tipo_id`) REFERENCES `clientes_tipo` (`clientes_tipo_id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `ClientesBeforeInsert` + BEFORE INSERT ON `Clientes` + FOR EACH ROW +BEGIN + CALL pbx.phoneIsValid (NEW.telefono); + CALL pbx.phoneIsValid (NEW.movil); + CALL pbx.phoneIsValid (NEW.fax); + + SET NEW.cuenta = 4300000000 + NEW.Id_Cliente; + + IF NEW.pay_met_id = 4 AND NEW.Vencimiento = 0 THEN + SET NEW.Vencimiento = 5; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ClientesAfterInsert` + AFTER INSERT ON `vn2008`.`Clientes` + FOR EACH ROW +BEGIN + INSERT INTO Consignatarios SET + Id_Cliente = NEW.Id_Cliente, + Domicilio = NEW.domicilio, + Poblacion = NEW.POBLACION, + province_id = NEW.province_id, + Codpostal = NEW.CODPOSTAL, + Consignatario = NEW.Cliente, + Predeterminada = TRUE, + Id_Agencia = 2, + isEqualizated = NEW.RE; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `ClientesBeforeUpdate` + BEFORE UPDATE ON `Clientes` + FOR EACH ROW +BEGIN + DECLARE vEmployee INT; + DECLARE vText VARCHAR(255) DEFAULT NULL; + + -- Comprueba que el formato de los teléfonos es válido + + IF !(NEW.telefono <=> OLD.telefono) THEN + CALL pbx.phoneIsValid (NEW.telefono); + END IF; + + IF !(NEW.movil <=> OLD.movil) THEN + CALL pbx.phoneIsValid (NEW.movil); + END IF; + + IF !(NEW.fax <=> OLD.fax) THEN + CALL pbx.phoneIsValid (NEW.fax); + END IF; + + -- Actualiza el crédito + + SELECT Id_Trabajador INTO vEmployee + FROM Trabajadores WHERE user_id = account.userGetId(); + + IF vEmployee IS NULL THEN + SET vEmployee = 20; + END IF; + + IF !(NEW.Credito <=> OLD.Credito) AND IFNULL(NEW.Credito, 0) >= 0 + THEN + INSERT INTO credit SET + Id_Cliente = NEW.Id_Cliente, + amount = NEW.Credito, + Id_Trabajador = vEmployee; + END IF; + + -- Avisar al comercial si ha llegado la documentación sepa/core + + IF NEW.sepavnl AND !OLD.sepavnl THEN + SET vText = 'Sepa de VNL'; + END IF; + + IF NEW.corevnl AND !OLD.corevnl THEN + SET vText = 'Core de VNL'; + END IF; + + IF vText IS NOT NULL + THEN + INSERT INTO mail(`to`, reply_to, subject, text) + SELECT + CONCAT(IF(ac.id,name, 'jgallego'), '@verdnatura.es'), + 'administracion@verdnatura.es', + CONCAT('Cliente ', NEW.Id_Cliente), + CONCAT('Recibida la documentación: ', vText) + FROM Trabajadores t + LEFT JOIN account.user u ON t.user_id = u.id AND active + LEFT JOIN account.account ac ON ac.id = u.id + WHERE t.Id_Trabajador = NEW.Id_Trabajador; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Clientes_cedidos` +-- + +DROP TABLE IF EXISTS `Clientes_cedidos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Clientes_cedidos` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `Id_Cliente` int(11) NOT NULL, + `Id_Trabajador_old` int(11) NOT NULL, + `Id_Trabajador_new` int(11) NOT NULL, + `datSTART` date NOT NULL, + `datEND` date NOT NULL, + `comision_old` double NOT NULL DEFAULT '0.5', + `comision_new` double NOT NULL DEFAULT '0.5', + PRIMARY KEY (`id`), + KEY `trabajador_fk_idx` (`Id_Trabajador_old`), + KEY `new_trabajador_fk_idx` (`Id_Trabajador_new`), + KEY `cliente_cedido_fk_idx` (`Id_Cliente`), + CONSTRAINT `cliente_cedido_fk` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `new_trabajador_fk` FOREIGN KEY (`Id_Trabajador_new`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `trabajador_fk` FOREIGN KEY (`Id_Trabajador_old`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Clientes que se han cambiado de comercial, pero durante un tiempo comisionan a los dos, al anterior y al actual'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Clientes_dits` +-- + +DROP TABLE IF EXISTS `Clientes_dits`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Clientes_dits` ( + `idClientes_dits` int(11) NOT NULL AUTO_INCREMENT, + `idaccion_dits` int(11) NOT NULL, + `ODBC_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Ticket` int(11) NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `value_old` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `value_new` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`idClientes_dits`), + KEY `idaccion_dits` (`idaccion_dits`), + CONSTRAINT `Clientes_dits_ibfk_1` FOREIGN KEY (`idaccion_dits`) REFERENCES `accion_dits` (`idaccion_dits`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Clientes_empresa` +-- + +DROP TABLE IF EXISTS `Clientes_empresa`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Clientes_empresa` ( + `Id_Clientes_empresa` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `Id_Cliente` int(11) NOT NULL, + `empresa_id` smallint(5) unsigned NOT NULL, + `fecha_ini` date NOT NULL, + `fecha_fin` date NOT NULL, + PRIMARY KEY (`Id_Clientes_empresa`), + KEY `empresa_id_idx` (`empresa_id`), + CONSTRAINT `empresa_id` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON DELETE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Empresa por defecto para crear los tickets'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Clientes_event` +-- + +DROP TABLE IF EXISTS `Clientes_event`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Clientes_event` ( + `Id_Cliente` int(11) NOT NULL, + `quantity` tinyint(3) unsigned NOT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`Id_Cliente`), + CONSTRAINT `Clientes_event_ibfk_1` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Clientes_potenciales` +-- + +DROP TABLE IF EXISTS `Clientes_potenciales`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Clientes_potenciales` ( + `id` int(11) NOT NULL, + `PAIS` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, + `ACTIVIDAD` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `NOMBRE` varchar(45) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `PROVINCIA` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, + `POBLACION` varchar(45) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `CP` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `DIR_POSTAL` varchar(45) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `TELEFONO` varchar(12) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `TELEFONO2` varchar(12) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `FAX` varchar(12) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `E-MAIL` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `pagweb` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `SERVICIOS` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `state_id` smallint(6) DEFAULT '0' COMMENT '0 no se ha hecho nada\n1 ya existe el cliente\n2 cliente conseguido\n3 desestimado', + `Id_Trabajador` smallint(6) DEFAULT NULL, + `Notas` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`NOMBRE`,`POBLACION`,`DIR_POSTAL`,`TELEFONO`,`TELEFONO2`,`FAX`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Colas` +-- + +DROP TABLE IF EXISTS `Colas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Colas` ( + `Id_Cola` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Id_Impresora` tinyint(3) unsigned DEFAULT '0', + `Id_Prioridad` tinyint(3) unsigned DEFAULT '2', + `Id_Informe` tinyint(3) unsigned DEFAULT '0', + `Id_Estado` tinyint(3) unsigned DEFAULT '1', + `Hora_Inicio` datetime DEFAULT NULL, + `Hora_Fin` datetime DEFAULT NULL, + `Cola` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Id_Trabajador` int(11) DEFAULT '20', + `Cola2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `Cola3` text COLLATE utf8_unicode_ci, + `error` text COLLATE utf8_unicode_ci, + PRIMARY KEY (`Id_Cola`), + UNIQUE KEY `Id_Impresora_2` (`Id_Impresora`,`Id_Prioridad`,`Id_Informe`,`Id_Estado`,`Cola`,`Id_Trabajador`,`Cola2`), + KEY `Id_estado` (`Id_Estado`), + KEY `Id_Impresora` (`Id_Impresora`), + KEY `Id_Informe` (`Id_Informe`), + KEY `Id_Prioridad` (`Id_Prioridad`), + KEY `Id_Trabajador` (`Id_Trabajador`), + CONSTRAINT `Colas_ibfk_1` FOREIGN KEY (`Id_Informe`) REFERENCES `Informes` (`Id_Informe`) ON UPDATE CASCADE, + CONSTRAINT `Colas_ibfk_2` FOREIGN KEY (`Id_Estado`) REFERENCES `Estados` (`Id_Estado`) ON UPDATE CASCADE, + CONSTRAINT `Colas_ibfk_3` FOREIGN KEY (`Id_Prioridad`) REFERENCES `Prioridades` (`Id_Prioridad`) ON UPDATE CASCADE, + CONSTRAINT `Colas_ibfk_4` FOREIGN KEY (`Id_Impresora`) REFERENCES `Impresoras` (`Id_Impresora`) ON UPDATE CASCADE, + CONSTRAINT `Colas_ibfk_5` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Colores` +-- + +DROP TABLE IF EXISTS `Colores`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Colores` ( + `Id_Color` int(11) NOT NULL DEFAULT '0', + `Color` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Id_Color`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Comparativa` +-- + +DROP TABLE IF EXISTS `Comparativa`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Comparativa` ( + `Periodo` int(11) NOT NULL, + `Id_Article` bigint(20) NOT NULL, + `warehouse_id` int(11) NOT NULL, + `Cantidad` mediumint(9) NOT NULL DEFAULT '0', + `price` mediumint(8) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`Periodo`,`Id_Article`,`warehouse_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Compres` +-- + +DROP TABLE IF EXISTS `Compres`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Compres` ( + `Id_Compra` int(11) NOT NULL AUTO_INCREMENT, + `Id_Entrada` int(11) NOT NULL DEFAULT '0', + `Id_Article` int(11) NOT NULL DEFAULT '90', + `Cantidad` int(11) DEFAULT '0', + `dispatched` int(11) NOT NULL DEFAULT '0', + `Costefijo` decimal(10,3) DEFAULT '0.000', + `Portefijo` decimal(10,3) DEFAULT '0.000', + `Novincular` tinyint(1) NOT NULL DEFAULT '0', + `Etiquetas` int(11) DEFAULT '0', + `Packing` int(11) DEFAULT '0', + `grouping` smallint(5) unsigned NOT NULL DEFAULT '1', + `caja` tinyint(4) NOT NULL COMMENT '0=sin obligar 1=groping 2=packing', + `container_id` smallint(5) unsigned NOT NULL DEFAULT '36', + `Comisionfija` decimal(10,3) DEFAULT '0.000', + `Embalajefijo` decimal(10,3) DEFAULT '0.000', + `Nicho` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `Id_Cubo` varchar(10) COLLATE utf8_unicode_ci DEFAULT '--', + `Tarifa1` decimal(10,2) DEFAULT '0.00', + `Tarifa2` decimal(10,2) DEFAULT '0.00', + `Tarifa3` decimal(10,2) DEFAULT '0.00', + `PVP` decimal(10,2) DEFAULT '0.00', + `Productor` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Vida` int(11) DEFAULT '0', + `Id_Trabajador` int(11) DEFAULT '0', + `punteo` tinyint(1) NOT NULL DEFAULT '0', + `Volumenkk` int(11) DEFAULT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `cm2kk` int(10) unsigned NOT NULL DEFAULT '0', + `buy_edi_id` int(11) DEFAULT NULL, + PRIMARY KEY (`Id_Compra`), + KEY `CompresId_Trabajador` (`Id_Trabajador`), + KEY `Id_Cubo` (`Id_Cubo`), + KEY `Id_Entrada` (`Id_Entrada`), + KEY `container_id` (`container_id`), + KEY `buy_edi_id` (`buy_edi_id`), + KEY `itemFk_entryFk` (`Id_Article`,`Id_Entrada`), + CONSTRAINT `Compres_ibfk_1` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON UPDATE CASCADE, + CONSTRAINT `Compres_ibfk_2` FOREIGN KEY (`Id_Cubo`) REFERENCES `Cubos` (`Id_Cubo`) ON UPDATE CASCADE, + CONSTRAINT `Compres_ibfk_3` FOREIGN KEY (`container_id`) REFERENCES `container` (`container_id`) ON UPDATE CASCADE, + CONSTRAINT `buy_id` FOREIGN KEY (`Id_Entrada`) REFERENCES `Entradas` (`Id_Entrada`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`compresBeforeInsert` + BEFORE INSERT ON `vn2008`.`Compres` FOR EACH ROW +BEGIN + DECLARE vWarehouse INT; + DECLARE vLanding DATE; + DECLARE vGroup INT; + DECLARE vIsBox BOOL; + + IF NEW.grouping = 0 THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT ='ERROR_GROUPING_ZERO'; + END IF; + + SELECT warehouse_id, landing INTO vWarehouse, vLanding + FROM Entradas E + JOIN travel T ON T.id = E.travel_id + WHERE E.Id_Entrada = NEW.Id_Entrada; + + SELECT grouping, caja INTO vGroup, vIsBox + FROM Compres C + JOIN Entradas E USING(Id_Entrada) + JOIN travel T ON T.id = E.travel_id + WHERE T.landing <= vLanding + AND C.Id_Article = NEW.Id_Article + AND NOT C.Novincular + ORDER BY warehouse_id = vWarehouse DESC,landing DESC, Id_Compra DESC + LIMIT 1; + + SET NEW.grouping = IFNULL(vGroup,IFNULL( NEW.grouping,1)); + SET NEW.caja = IFNULL(vIsBox, IFNULL( NEW.caja,0)); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `CompresAfterInsert` AFTER INSERT ON `Compres` FOR EACH ROW BEGIN + DECLARE vWarehouse INT; + DECLARE vWarehouseOut INT; + + CALL stock.queueAdd ('buy', NEW.Id_Compra, NULL); + + SELECT warehouse_id, warehouse_id_out INTO vWarehouse, vWarehouseOut + FROM Entradas E + JOIN travel T ON T.id = E.travel_id + WHERE E.Id_Entrada = NEW.Id_Entrada; + + -- Actualiza el volumen unitario + + REPLACE bi.rotacion(Id_Article, warehouse_id, cm3) + VALUES (NEW.Id_ARticle, vWarehouse, vn2008.cm3_unidad(NEW.Id_Compra)); + + IF (SELECT fuente FROM warehouse where id = vWarehouseOut AND id <> 13) AND + (SELECT has_notify_passport(NEW.Id_Article,NEW.Id_Compra)) + THEN + CALL notify_passport(NEW.Id_Article, NEW.Etiquetas, NEW.Packing,NEW.Id_Compra); + CALL insert_producer_plantpassport(NEW.Id_Compra); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `CompresBeforeUpdate` + BEFORE UPDATE ON `Compres` FOR EACH ROW +BEGIN + IF NEW.grouping = 0 AND OLD.grouping <> 0 THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT ='ERROR_GROUPING_ZERO'; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `CompresAfterUpdate` + AFTER UPDATE ON `Compres` FOR EACH ROW +BEGIN + DECLARE vWarehouse INT; + DECLARE vWarehouseOut INT; + + CALL stock.queueAdd ('buy', NEW.Id_Compra, OLD.Id_Compra); + + SELECT warehouse_id, warehouse_id_out INTO vWarehouse, vWarehouseOut + FROM Entradas E + JOIN travel T ON T.id = E.travel_id + WHERE E.Id_Entrada = NEW.Id_Entrada; + + IF NOT(NEW.Id_Cubo <=> OLD.Id_Cubo AND NEW.Id_Entrada <=> OLD.Id_Entrada) + THEN + REPLACE bi.rotacion(Id_Article, warehouse_id, cm3) + VALUES (NEW.Id_ARticle, vWarehouse, vn2008.cm3_unidad(NEW.Id_Compra)); + END IF; + + IF (SELECT fuente FROM warehouse where id = vWarehouseOut AND id <> 13) AND + (SELECT has_notify_passport(NEW.Id_Article,NEW.Id_Compra)) > 0 + THEN + CALL notify_passport(NEW.Id_Article, NEW.Etiquetas, NEW.Packing,NEW.Id_Compra); + CALL insert_producer_plantpassport(NEW.Id_Compra); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`CompresAfterDelete` + AFTER DELETE ON `Compres` FOR EACH ROW +BEGIN + DECLARE vProvider INT; + + CALL stock.queueAdd ('buy', NULL, OLD.Id_Compra); + + SELECT Id_Proveedor INTO vProvider + FROM Entradas WHERE Id_Entrada = OLD.Id_Entrada; + + IF OLD.Vida > 0 AND vProvider <> 4 THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT ='ERROR_DELETING_LIFE'; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Compres_2014` +-- + +DROP TABLE IF EXISTS `Compres_2014`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Compres_2014` ( + `Id_Compra` int(11) NOT NULL AUTO_INCREMENT, + `Id_Entrada` int(11) NOT NULL DEFAULT '0', + `Id_Article` int(11) NOT NULL DEFAULT '90', + `Cantidad` int(11) DEFAULT '0', + `Costefijo` decimal(10,3) DEFAULT '0.000', + `Portefijo` decimal(10,3) DEFAULT '0.000', + `Novincular` tinyint(1) NOT NULL DEFAULT '0', + `Etiquetas` int(11) DEFAULT '0', + `Packing` int(11) DEFAULT '0', + `grouping` smallint(5) unsigned NOT NULL DEFAULT '1', + `caja` tinyint(4) NOT NULL COMMENT '0=sin obligar 1=groping 2=packing', + `container_id` smallint(5) unsigned NOT NULL DEFAULT '36', + `Comisionfija` decimal(10,3) DEFAULT '0.000', + `Embalajefijo` decimal(10,3) DEFAULT '0.000', + `Nicho` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `Id_Cubo` varchar(10) COLLATE utf8_unicode_ci DEFAULT '--', + `Tarifa1` decimal(10,2) DEFAULT '0.00', + `Tarifa2` decimal(10,2) DEFAULT '0.00', + `Tarifa3` decimal(10,2) DEFAULT '0.00', + `PVP` decimal(10,2) DEFAULT '0.00', + `Productor` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Vida` int(11) DEFAULT '0', + `Id_Trabajador` int(11) DEFAULT '0', + `punteo` tinyint(1) NOT NULL DEFAULT '0', + `Volumenkk` int(11) DEFAULT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `cm2kk` int(10) unsigned NOT NULL DEFAULT '0', + `buy_edi_id` int(11) DEFAULT NULL, + PRIMARY KEY (`Id_Compra`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Compres_mark` +-- + +DROP TABLE IF EXISTS `Compres_mark`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Compres_mark` ( + `Id_Compra` int(11) NOT NULL, + `comment` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `mark` tinyint(1) DEFAULT NULL, + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`Id_Compra`), + CONSTRAINT `Compres_mark_ibfk_1` FOREIGN KEY (`Id_Compra`) REFERENCES `Compres` (`Id_Compra`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Compres_ok` +-- + +DROP TABLE IF EXISTS `Compres_ok`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Compres_ok` ( + `Id_Compra` int(11) NOT NULL, + `valor` tinyint(3) unsigned NOT NULL DEFAULT '0', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `original_quantity` double DEFAULT NULL, + `Id_Trabajador` int(11) NOT NULL, + `Id_Accion` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `Id_Compra_ok` int(11) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`Id_Compra_ok`), + KEY `Id_Movimiento` (`Id_Compra`), + KEY `Id_Accion` (`Id_Accion`), + CONSTRAINT `Compres_ok_ibfk_1` FOREIGN KEY (`Id_Compra`) REFERENCES `Compres` (`Id_Compra`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Consignatarios` +-- + +DROP TABLE IF EXISTS `Consignatarios`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Consignatarios` ( + `id_consigna` int(11) NOT NULL AUTO_INCREMENT, + `Id_cliente` int(11) NOT NULL DEFAULT '0', + `warehouse_id` smallint(6) unsigned DEFAULT '1', + `domicilio` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `poblacion` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, + `province_id` smallint(5) unsigned DEFAULT NULL, + `codPostal` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `telefono` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `movil` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `consignatario` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, + `predeterminada` tinyint(1) NOT NULL DEFAULT '1', + `Id_Agencia` int(11) NOT NULL DEFAULT '2', + `especificaciones` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `seguro` tinyint(1) NOT NULL DEFAULT '0', + `porte` double DEFAULT NULL, + `active` tinyint(4) NOT NULL DEFAULT '1', + `postcode_id` int(11) unsigned DEFAULT NULL, + `longitude` decimal(11,7) DEFAULT NULL, + `latitude` decimal(11,7) DEFAULT NULL, + `codPos` char(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `isEqualizated` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id_consigna`), + KEY `Id_Agencia` (`Id_Agencia`), + KEY `Id_cliente` (`Id_cliente`), + KEY `warehouse_id` (`warehouse_id`), + KEY `province_id` (`province_id`), + KEY `telefono` (`telefono`), + KEY `movil` (`movil`), + KEY `Consignatarios_postcode_idx` (`postcode_id`), + KEY `CODPOSTAL` (`codPostal`), + CONSTRAINT `Consignatarios_ibfk_1` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `Consignatarios_ibfk_3` FOREIGN KEY (`province_id`) REFERENCES `province` (`province_id`) ON UPDATE CASCADE, + CONSTRAINT `Consignatarios_ibfk_4` FOREIGN KEY (`Id_Agencia`) REFERENCES `Agencias` (`Id_Agencia`) ON UPDATE CASCADE, + CONSTRAINT `Consignatarios_postcode` FOREIGN KEY (`postcode_id`) REFERENCES `postcodeKK` (`postcode_id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `address_customer_id` FOREIGN KEY (`Id_cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ConsignatariosBeforeInsert` +BEFORE INSERT ON `vn2008`.`Consignatarios` +FOR EACH ROW +BEGIN + DECLARE v_has_default BOOLEAN; + DECLARE vIsEqualizated BOOLEAN; + + CALL pbx.phoneIsValid (NEW.telefono); + CALL pbx.phoneIsValid (NEW.movil); + + SELECT COUNT(*) > 0 INTO v_has_default + FROM Consignatarios + WHERE Id_Cliente = NEW.Id_Cliente + AND Predeterminada <> FALSE; + + IF NEW.Predeterminada AND v_has_default THEN + SET NEW.Predeterminada = FALSE; + END IF; + + IF NEW.isEqualizated IS NULL THEN + SELECT RE + INTO vIsEqualizated + FROM Clientes + WHERE Id_Cliente = NEW.Id_Cliente; + + SET NEW.isEqualizated = vIsEqualizated; + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ConsignatariosBeforeUpdate` +BEFORE UPDATE ON `vn2008`.`Consignatarios` +FOR EACH ROW +BEGIN + DECLARE vHasDefault BOOLEAN; + + CALL pbx.phoneIsValid (NEW.telefono); + CALL pbx.phoneIsValid (NEW.movil); + + SELECT COUNT(*) > 0 INTO vHasDefault + FROM Consignatarios + WHERE Id_Cliente = NEW.Id_Cliente + AND Predeterminada <> FALSE; + + IF NOT OLD.Predeterminada AND NEW.Predeterminada AND vHasDefault THEN + SET NEW.Predeterminada = FALSE; + END IF; + + IF NOT NEW.active AND (NEW.active != OLD.active) AND NEW.Predeterminada THEN + CALL util.throw ('NO SE PUEDE DESACTIVAR EL CONSIGNATARIO PREDETERMINADO'); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ConsignatariosAfterUpdate` AFTER UPDATE ON `Consignatarios` FOR EACH ROW +BEGIN + DECLARE vCurDefault INT; + DECLARE vNewDefault INT; + + IF NEW.Predeterminada AND (NEW.Predeterminada != OLD.Predeterminada) + THEN + UPDATE Clientes SET default_address = NEW.Id_Consigna + WHERE Id_cliente = NEW.Id_cliente; + END IF; + + IF NOT NEW.active AND (NEW.active != OLD.active) + THEN + SELECT default_address INTO vCurDefault + FROM Clientes + WHERE Id_Cliente = NEW.Id_Cliente; + + IF vCurDefault = NEW.Id_Consigna + THEN + SELECT Id_Consigna INTO vNewDefault + FROM Consignatarios + WHERE Id_Cliente = NEW.Id_Cliente AND active + LIMIT 1; + + UPDATE Clientes SET default_address = vNewDefault + WHERE Id_Cliente = NEW.Id_Cliente; + END IF; + END IF; + + -- Recargos de equivalencia distintos implican facturacion por consignatario + IF NEW.isEqualizated != OLD.isEqualizated THEN + + IF + (SELECT COUNT(*) FROM + ( + SELECT DISTINCT (isEqualizated = FALSE) as Equ + FROM Consignatarios + WHERE Id_Cliente = NEW.Id_Cliente + ) t1 + ) > 1 + + THEN + + UPDATE Clientes + SET invoiceByAddress = TRUE + WHERE Id_Cliente = NEW.Id_Cliente; + + END IF; + + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Consignatarios_devices` +-- + +DROP TABLE IF EXISTS `Consignatarios_devices`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Consignatarios_devices` ( + `Id_Consigna` int(11) NOT NULL, + `serialNumber` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `notas` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Id_Consigna`,`serialNumber`), + CONSTRAINT `Condigna_devices` FOREIGN KEY (`Id_Consigna`) REFERENCES `Consignatarios` (`id_consigna`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Contactos` +-- + +DROP TABLE IF EXISTS `Contactos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Contactos` ( + `Id_Contacto` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Nombre` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `Apellidos` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `Empresa` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `Cargo` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `Telefono` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `Movil` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `email` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL, + `Fax` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `Notas` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Id_Contacto`), + KEY `Telefono` (`Telefono`), + KEY `Movil` (`Movil`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ContactosBeforeInsert` +BEFORE INSERT ON `Contactos` FOR EACH ROW +BEGIN + CALL pbx.phoneIsValid (NEW.telefono); + CALL pbx.phoneIsValid (NEW.movil); + CALL pbx.phoneIsValid (NEW.fax); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ContactosBeforeUpdate` +BEFORE UPDATE ON `Contactos` FOR EACH ROW +BEGIN + CALL pbx.phoneIsValid (NEW.telefono); + CALL pbx.phoneIsValid (NEW.movil); + CALL pbx.phoneIsValid (NEW.fax); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Conteo` +-- + +DROP TABLE IF EXISTS `Conteo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Conteo` ( + `Id_Conteo` int(11) NOT NULL AUTO_INCREMENT, + `Id_Article` int(11) NOT NULL, + `Fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `dispositivo` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `warehouse_id` int(10) unsigned NOT NULL DEFAULT '1', + PRIMARY KEY (`Id_Conteo`) +) ENGINE=MyISAM AUTO_INCREMENT=1079623 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `Conteo_ai` AFTER INSERT ON `Conteo` FOR EACH ROW +BEGIN + DECLARE intTravel INTEGER; + SELECT t.id INTO intTravel FROM Compres c JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel t ON t.id = e.travel_id + WHERE landing = CURDATE() AND c.Id_Article = NEW.Id_Article AND warehouse_id = NEW.warehouse_id AND received <> TRUE LIMIT 1; + IF (intTravel) then + UPDATE travel SET received = TRUE WHERE id = intTravel; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Cubos` +-- + +DROP TABLE IF EXISTS `Cubos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Cubos` ( + `Id_Cubo` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `Volumen` double DEFAULT '0', + `X` double DEFAULT '0', + `Y` double DEFAULT '0', + `Z` double DEFAULT '0', + `Valor` double DEFAULT '0', + `Retornable` tinyint(1) NOT NULL DEFAULT '0', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `idCubos_Retorno` int(11) DEFAULT NULL, + `Bajan` int(11) DEFAULT NULL, + `Suben` int(11) DEFAULT NULL, + `Base` double DEFAULT NULL, + `item_id` int(11) DEFAULT NULL, + `pvp` double NOT NULL, + `box` tinyint(1) NOT NULL DEFAULT '0', + `bultoCubico` double DEFAULT NULL, + PRIMARY KEY (`Id_Cubo`), + KEY `Article` (`item_id`), + CONSTRAINT `Article` FOREIGN KEY (`item_id`) REFERENCES `Articles` (`Id_Article`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Cubos_Retorno` +-- + +DROP TABLE IF EXISTS `Cubos_Retorno`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Cubos_Retorno` ( + `idCubos_Retorno` int(11) NOT NULL AUTO_INCREMENT, + `Soporte` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `Vacio` double NOT NULL DEFAULT '0', + `Lleno` double NOT NULL DEFAULT '0', + PRIMARY KEY (`idCubos_Retorno`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Enlaces Facturas` +-- + +DROP TABLE IF EXISTS `Enlaces Facturas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Enlaces Facturas` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `Asiento` int(11) DEFAULT '0', + `Apunte` int(11) DEFAULT '0', + `Data` datetime DEFAULT NULL, + `Concepto` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, + `Cuenta` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `Debe` double DEFAULT NULL, + `Haber` double DEFAULT NULL, + `Contrapartida` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `Contabilizado` tinyint(1) NOT NULL DEFAULT '0', + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + PRIMARY KEY (`id`), + KEY `empresa_id` (`empresa_id`), + CONSTRAINT `Enlaces@0020Facturas_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Entradas` +-- + +DROP TABLE IF EXISTS `Entradas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Entradas` ( + `Id_Entrada` int(11) NOT NULL AUTO_INCREMENT, + `Id_Proveedor` int(11) NOT NULL DEFAULT '644', + `Fecha` datetime NOT NULL, + `Referencia` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Anotadoencaja` tinyint(1) NOT NULL DEFAULT '0', + `Inventario` tinyint(1) NOT NULL DEFAULT '0', + `Notas` longtext COLLATE utf8_unicode_ci, + `Confirmada` tinyint(1) NOT NULL DEFAULT '0', + `Pedida` tinyint(1) NOT NULL DEFAULT '0', + `Redada` tinyint(1) NOT NULL DEFAULT '0', + `comision` float NOT NULL DEFAULT '0', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Notas_Eva` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `travel_id` int(11) unsigned DEFAULT NULL, + `Id_Moneda` tinyint(3) unsigned DEFAULT '1', + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + `gestdoc_id` int(11) DEFAULT NULL, + `recibida_id` mediumint(8) unsigned DEFAULT NULL, + `blocked` tinyint(4) NOT NULL DEFAULT '0', + `loadPriority` int(11) DEFAULT NULL, + PRIMARY KEY (`Id_Entrada`), + KEY `Id_Proveedor` (`Id_Proveedor`), + KEY `Fecha` (`Fecha`), + KEY `travel_id` (`travel_id`), + KEY `empresa_id` (`empresa_id`), + KEY `gestdoc_id` (`gestdoc_id`), + KEY `recibida_id` (`recibida_id`), + CONSTRAINT `Entradas_ibfk_1` FOREIGN KEY (`Id_Proveedor`) REFERENCES `Proveedores` (`Id_Proveedor`) ON UPDATE CASCADE, + CONSTRAINT `Entradas_ibfk_6` FOREIGN KEY (`travel_id`) REFERENCES `travel` (`id`) ON UPDATE CASCADE, + CONSTRAINT `Entradas_ibfk_7` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='InnoDB free: 88064 kB; (`Id_Proveedor`) REFER `vn2008/Provee'; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`EntradasBeforeInsert` + BEFORE INSERT ON `Entradas` FOR EACH ROW +BEGIN + IF (SELECT cuenta LIKE '___4______' FROM Proveedores WHERE Id_Proveedor = NEW.Id_Proveedor) THEN + SET NEW.Id_Moneda = 2; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`EntradasBeforeUpdate` + BEFORE UPDATE ON `vn2008`.`Entradas` FOR EACH ROW +BEGIN + IF (SELECT Id_Entrada FROM Entradas_Auto WHERE Id_Entrada = NEW.Id_Entrada) AND (NEW.travel_id <> OLD.travel_id) THEN + IF + (SELECT warehouse_id FROM travel WHERE id = NEW.travel_id) <> (SELECT warehouse_id FROM travel WHERE id = OLD.travel_id) OR + (SELECT warehouse_id_out FROM travel WHERE id = NEW.travel_id) <> (SELECT warehouse_id_out FROM travel WHERE id = OLD.travel_id) + THEN + SET NEW.travel_id = OLD.travel_id; + END IF; + END IF; + + IF (NEW.gestdoc_id IS NOT NULL) AND (NEW.gestdoc_id <> OLD.gestdoc_id) THEN + UPDATE + recibida_entrada re + INNER JOIN recibida r ON re.recibida_id = r.id + INNER JOIN Entradas e ON e.Id_Entrada = re.Id_Entrada + SET r.gestdoc_id = e.gestdoc_id + WHERE + e.Id_Entrada = NEW.Id_Entrada + AND r.gestdoc_id IS NULL; + END IF; + + IF NEW.anotadoencaja <> OLD.anotadoencaja THEN + INSERT INTO Entradas_dits (idaccion_dits,Id_Trabajador,Id_Ticket,value_old,value_new) + VALUES (105,get_Trabajador(),NEW.Id_Entrada,OLD.anotadoencaja,NEW.anotadoencaja); + END IF; + + IF NEW.Id_Proveedor <> OLD.Id_Proveedor THEN + IF (SELECT cuenta LIKE '___4______' FROM Proveedores WHERE Id_Proveedor = NEW.Id_Proveedor) THEN + SET NEW.Id_Moneda = 2; + END IF; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`EntradasAfterUpdate` + AFTER UPDATE ON `Entradas` FOR EACH ROW +BEGIN + CALL stock.queueAdd ('entry', NEW.Id_Entrada, OLD.Id_Entrada); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`EntradasAfterDelete` + AFTER DELETE ON `Entradas` FOR EACH ROW +BEGIN + CALL stock.queueAdd ('entry', NULL, OLD.Id_Entrada); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Entradas_Auto` +-- + +DROP TABLE IF EXISTS `Entradas_Auto`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Entradas_Auto` ( + `Id_Entrada` int(11) NOT NULL, + PRIMARY KEY (`Id_Entrada`), + CONSTRAINT `Entradas_Auto_ibfk_1` FOREIGN KEY (`Id_Entrada`) REFERENCES `Entradas` (`Id_Entrada`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Entradas_dits` +-- + +DROP TABLE IF EXISTS `Entradas_dits`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Entradas_dits` ( + `idEntrada_dits` int(11) NOT NULL AUTO_INCREMENT, + `idaccion_dits` int(11) NOT NULL, + `ODBC_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Ticket` int(11) NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `value_old` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `value_new` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`idEntrada_dits`), + KEY `fgkey_entradas_1_idx` (`idaccion_dits`), + KEY `fgkey_entradas_2_idx` (`Id_Ticket`), + KEY `fgkey_entradas_3_idx` (`Id_Trabajador`), + CONSTRAINT `Entradas_dits_ibfk_1` FOREIGN KEY (`Id_Ticket`) REFERENCES `Entradas` (`Id_Entrada`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fgkey_entradas_1` FOREIGN KEY (`idaccion_dits`) REFERENCES `accion_dits` (`idaccion_dits`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `fgkey_entradas_3` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Entradas_kop` +-- + +DROP TABLE IF EXISTS `Entradas_kop`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Entradas_kop` ( + `Id_Entradas_kop` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `Id_Entrada` int(11) NOT NULL, + `kop` int(11) DEFAULT NULL, + `sub` mediumint(8) unsigned DEFAULT NULL, + PRIMARY KEY (`Id_Entradas_kop`), + KEY `entradas_entradas_kop_idx` (`Id_Entrada`), + CONSTRAINT `entradas_entradas_kop` FOREIGN KEY (`Id_Entrada`) REFERENCES `Entradas` (`Id_Entrada`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relaciona las entradas con los origenes de compra'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Entradas_orden` +-- + +DROP TABLE IF EXISTS `Entradas_orden`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Entradas_orden` ( + `Id_Entrada` int(11) NOT NULL, + `orden` int(11) NOT NULL DEFAULT '1' COMMENT '1.- Ordenar por articulo\n2.- Ordenar por compra\n', + PRIMARY KEY (`Id_Entrada`), + CONSTRAINT `entradas_entradas_orden` FOREIGN KEY (`Id_Entrada`) REFERENCES `Entradas` (`Id_Entrada`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Entradas_stack` +-- + +DROP TABLE IF EXISTS `Entradas_stack`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Entradas_stack` ( + `Id_Entrada` int(11) NOT NULL, + `label_number` smallint(6) DEFAULT '0', + PRIMARY KEY (`Id_Entrada`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Entradas_turno` +-- + +DROP TABLE IF EXISTS `Entradas_turno`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Entradas_turno` ( + `Id_Entrada` int(11) NOT NULL, + `weekDay` tinyint(2) NOT NULL DEFAULT '0', + PRIMARY KEY (`Id_Entrada`), + CONSTRAINT `entrada_entrada_turno` FOREIGN KEY (`Id_Entrada`) REFERENCES `Entradas` (`Id_Entrada`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Estas entradas se clonan al mismo tiempo que los turnos'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `EnvioMasivo` +-- + +DROP TABLE IF EXISTS `EnvioMasivo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `EnvioMasivo` ( + `Id` int(11) NOT NULL AUTO_INCREMENT, + `Cliente` varchar(40) COLLATE utf8_unicode_ci NOT NULL, + `Direccion` varchar(80) COLLATE utf8_unicode_ci NOT NULL, + `CP` varchar(5) COLLATE utf8_unicode_ci NOT NULL, + `Poblacion` varchar(40) COLLATE utf8_unicode_ci NOT NULL, + `Telefono` varchar(9) COLLATE utf8_unicode_ci NOT NULL, + `Bultos` int(11) NOT NULL, + `Observaciones` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, + `IdTicket` int(11) NOT NULL, + PRIMARY KEY (`Id`) +) ENGINE=MyISAM AUTO_INCREMENT=3373 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Generación de etiquetas a través de Zeleris con los clientes de esta tabla'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Equipos` +-- + +DROP TABLE IF EXISTS `Equipos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Equipos` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `alias` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `trabajador_id` int(11) DEFAULT NULL, + `descripcion` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `predet` int(1) unsigned zerofill DEFAULT '0', + `Left` int(5) DEFAULT '3000', + `Top` int(5) DEFAULT '3000', + `Width` int(5) DEFAULT '6360', + `Height` int(5) DEFAULT '5595', + PRIMARY KEY (`id`), + KEY `trabajador_id` (`trabajador_id`), + CONSTRAINT `Equipos_ibfk_1` FOREIGN KEY (`trabajador_id`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Espionajes` +-- + +DROP TABLE IF EXISTS `Espionajes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Espionajes` ( + `idEspionaje` int(11) NOT NULL AUTO_INCREMENT, + `Id_Trabajador` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `Fecha` date DEFAULT NULL, + `HoraEntrada` time DEFAULT NULL, + `HoraSalida` time DEFAULT NULL, + `Id_Equipo` int(11) DEFAULT NULL, + PRIMARY KEY (`idEspionaje`), + KEY `index` (`Id_Trabajador`,`Fecha`) +) ENGINE=MyISAM AUTO_INCREMENT=75646 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Estados` +-- + +DROP TABLE IF EXISTS `Estados`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Estados` ( + `Id_Estado` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `Estado` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Id_Estado`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Estanterias` +-- + +DROP TABLE IF EXISTS `Estanterias`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Estanterias` ( + `Id_Estanterias` int(11) NOT NULL AUTO_INCREMENT, + `w` int(11) DEFAULT NULL, + `d` int(11) DEFAULT NULL, + `modelo` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Id_Estanterias`) +) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Estanterias_distri` +-- + +DROP TABLE IF EXISTS `Estanterias_distri`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Estanterias_distri` ( + `idEstanterias_distri` int(11) NOT NULL, + `posinicial` int(11) NOT NULL, + `posfinal` int(11) NOT NULL, + `Id_Estanterias` int(11) NOT NULL, + PRIMARY KEY (`Id_Estanterias`,`idEstanterias_distri`), + KEY `Estanterias_fgkey1_idx` (`Id_Estanterias`), + KEY `est_distrib_fgkey1_idx` (`idEstanterias_distri`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Estanterias_distri_name` +-- + +DROP TABLE IF EXISTS `Estanterias_distri_name`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Estanterias_distri_name` ( + `idEstanterias_distri` int(11) NOT NULL AUTO_INCREMENT, + `Descripcion` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`idEstanterias_distri`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Extractos` +-- + +DROP TABLE IF EXISTS `Extractos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Extractos` ( + `Id_Extracto` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Fecha` datetime NOT NULL, + `Concepto` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `Debe` double unsigned zerofill NOT NULL DEFAULT '0000000000000000000000', + `Haber` double unsigned zerofill NOT NULL DEFAULT '0000000000000000000000', + `Concepto2` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `Concepto3` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`Id_Extracto`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Facturas` +-- + +DROP TABLE IF EXISTS `Facturas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Facturas` ( + `factura_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Id_Factura` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `Serie` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `Fecha` date DEFAULT NULL, + `Importe` decimal(12,2) DEFAULT '0.00', + `Vencimiento` datetime DEFAULT NULL, + `Id_Banco` int(11) DEFAULT '0', + `Id_Cliente` int(11) DEFAULT '0', + `Id_Remesa` int(11) DEFAULT NULL, + `Remesar` tinyint(1) NOT NULL DEFAULT '0', + `BI7` decimal(12,2) DEFAULT '0.00', + `BI16` decimal(12,2) DEFAULT '0.00', + `RE1` decimal(12,2) DEFAULT '0.00', + `RE4` decimal(12,2) DEFAULT '0.00', + `IVA7` decimal(12,2) DEFAULT '0.00', + `IVA16` decimal(12,2) DEFAULT '0.00', + `Id_Trabajador` int(11) DEFAULT '0', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + `liquidacion` smallint(6) DEFAULT '0', + `pdf` tinyint(3) unsigned NOT NULL DEFAULT '0', + `booked` date DEFAULT NULL, + `cplusInvoiceType477Fk` int(10) unsigned NOT NULL DEFAULT '1', + `cplusTaxBreakFk` int(10) unsigned NOT NULL DEFAULT '1', + `cplusSubjectOpFk` int(10) unsigned NOT NULL DEFAULT '1', + `cplusTrascendency477Fk` int(10) unsigned NOT NULL DEFAULT '1', + PRIMARY KEY (`factura_id`,`Id_Factura`), + UNIQUE KEY `Id_Factura` (`Id_Factura`), + KEY `Id_Banco` (`Id_Banco`), + KEY `Id_Cliente` (`Id_Cliente`), + KEY `Id_Remesa` (`Id_Remesa`), + KEY `Id_Trabajador` (`Id_Trabajador`), + KEY `empresa_id` (`empresa_id`), + KEY `Fecha` (`Fecha`), + KEY `Facturas_ibfk_2_idx` (`cplusInvoiceType477Fk`), + KEY `Facturas_ibfk_3_idx` (`cplusSubjectOpFk`), + KEY `Facturas_ibfk_4_idx` (`cplusTaxBreakFk`), + KEY `Facturas_ibfk_5_idx` (`cplusTrascendency477Fk`), + CONSTRAINT `Facturas_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, + CONSTRAINT `Facturas_ibfk_2` FOREIGN KEY (`cplusInvoiceType477Fk`) REFERENCES `vn`.`cplusInvoiceType477` (`id`) ON UPDATE CASCADE, + CONSTRAINT `Facturas_ibfk_3` FOREIGN KEY (`cplusSubjectOpFk`) REFERENCES `vn`.`cplusSubjectOp` (`id`) ON UPDATE CASCADE, + CONSTRAINT `Facturas_ibfk_4` FOREIGN KEY (`cplusTaxBreakFk`) REFERENCES `vn`.`cplusTaxBreak` (`id`) ON UPDATE CASCADE, + CONSTRAINT `invoice_bank_id` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE, + CONSTRAINT `invoice_customer_id` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `FacturasBeforeInsert` +BEFORE INSERT ON `Facturas` FOR EACH ROW +-- Edit trigger body code below this line. Do not edit lines above this one +BEGIN + + DECLARE v_Id_Factura_serie CHAR(9) DEFAULT '0000001'; + DECLARE v_Id_Factura INT; + DECLARE max_id, intLast, intProv INT; + + -- Evitamos la generacion de nuevas facturas tras el cese de actividad de EFL + IF NEW.empresa_id = 792 AND NEW.Fecha > '2012-12-20' THEN + SET NEW.empresa_id = 791; + END IF; + + SELECT IFNULL(MAX(factura_id),0) into max_id + from Facturas + WHERE Serie LIKE NEW.Serie + AND ((Year(NEW.Fecha) = Year(Fecha) + AND empresa_id = NEW.empresa_id)); + + IF max_id THEN + + SELECT right(max(Id_Factura), LENGTH(Id_Factura)-1) + 1 + into v_Id_Factura_serie + from Facturas + WHERE Serie LIKE NEW.Serie + AND ((Year(NEW.Fecha) = Year(Fecha) + AND length(Id_Factura) > 6 + AND empresa_id = NEW.empresa_id) /*OR (NEW.Serie LIKE 'B' AND length(Id_Factura) > 7)*/ ); + + + ELSE + + SELECT CONCAT(digito_factura,RIGHT(YEAR(CURDATE()),1),'00001') INTO v_Id_Factura_serie + FROM empresa WHERE id = NEW.empresa_id; + +/*Primer digito la empresa, segundo el año, despues la numeracion correlativa con 5 digitos*/ + + + END IF; + + +SELECT CONCAT(NEW.serie, lpad(v_Id_Factura_serie,7,'0')) into v_Id_Factura_serie; +SET NEW.Id_Factura = v_Id_Factura_serie; + + + +/* + IF intProv > 0 THEN -- No contabiliza bien las facturas holandesas + INSERT INTO recibida(proveedor_id,fecha,sref,empresa_id) + VALUES (NEW.empresa_id,NEW.Fecha,NEW.Id_Factura,intProv); + + SELECT LAST_INSERT_ID() INTO intLast; + + IF NEW.BI7 > 0 THEN + INSERT INTO recibida_iva(recibida_id,iva_id,bi,gastos_id) + VALUES(intLast,57,NEW.BI7,'6001000000'); + END IF; + + IF NEW.BI16 > 0 THEN + INSERT INTO recibida_iva(recibida_id,iva_id,bi,gastos_id) + VALUES(intLast,58,NEW.BI16,'6001000000'); + END IF; + + INSERT INTO recibida_vencimiento(recibida_id,fecha,banco_id,cantidad) + SELECT intLast,TIMESTAMPADD(DAY,15,NEW.Fecha),3117,SUM((1 + (IVA / 100)) * bi) + FROM recibida r INNER JOIN recibida_iva ri ON r.id = ri.recibida_id + INNER JOIN iva_codigo AS i ON ri.iva_id=i.id INNER JOIN Proveedores p ON p.Id_Proveedor=r.proveedor_id + LEFT JOIN (SELECT recibida_id, SUM(cantidad) cantidad FROM recibida_vencimiento rv WHERE rv.recibida_id = intLast + GROUP BY recibida_id) t ON t.recibida_id = r.id WHERE r.id = intLast ; + UPDATE recibida SET contabilizada = 0 WHERE id = intLast; + UPDATE recibida SET contabilizada = 1 WHERE id = intLast; + END IF; +*/ + END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`FacturasAfterInsert` +AFTER INSERT ON `Facturas` +FOR EACH ROW + CALL bi.customer_risk_update (NEW.Id_Cliente, NEW.empresa_id, NEW.Importe) */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`FacturasBeforeUpdate` +BEFORE UPDATE ON `Facturas` +FOR EACH ROW +BEGIN + CALL bi.customer_risk_update (OLD.Id_Cliente, OLD.empresa_id, -OLD.Importe); + CALL bi.customer_risk_update (NEW.Id_Cliente, NEW.empresa_id, NEW.Importe); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`FacturasBeforeDelete` +BEFORE DELETE ON `Facturas` +FOR EACH ROW + CALL bi.customer_risk_update (OLD.Id_Cliente, OLD.empresa_id, -OLD.Importe) */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Familias` +-- + +DROP TABLE IF EXISTS `Familias`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Familias` ( + `Familia` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `Subcuenta` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `Descripcion` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Familia`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Forms` +-- + +DROP TABLE IF EXISTS `Forms`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Forms` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `titulo` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Gastos` +-- + +DROP TABLE IF EXISTS `Gastos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Gastos` ( + `Id_Gasto` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `iva_tipo_id` tinyint(4) NOT NULL, + `Gasto` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `conbase` tinyint(4) NOT NULL DEFAULT '1', + `isWithheld` tinyint(4) NOT NULL DEFAULT '0', + `isForSale` tinyint(4) NOT NULL DEFAULT '0', + PRIMARY KEY (`Id_Gasto`,`iva_tipo_id`), + KEY `iva_tipo_id` (`iva_tipo_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Greuges` +-- + +DROP TABLE IF EXISTS `Greuges`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Greuges` ( + `Id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Id_Cliente` int(10) unsigned NOT NULL, + `Comentario` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `Importe` decimal(10,2) NOT NULL, + `Fecha` datetime NOT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `Greuges_type_id` int(11) DEFAULT NULL, + `Id_Ticket` int(11) DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `greuges_type_fk_idx` (`Greuges_type_id`), + KEY `Id_Ticket_Greuge_Ticket_idx` (`Id_Ticket`), + CONSTRAINT `Id_Ticket_Greuge_Ticket` FOREIGN KEY (`Id_Ticket`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `greuges_type_fk` FOREIGN KEY (`Greuges_type_id`) REFERENCES `Greuges_type` (`Greuges_type_id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=FIXED; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Greuges_BEFORE_UPDATE` BEFORE UPDATE ON `Greuges` FOR EACH ROW +BEGIN + + DECLARE vMaxDate DATETIME DEFAULT TIMESTAMPADD(YEAR,1,CURDATE()); + + IF NEW.Fecha > vMaxDate THEN + + SET NEW.Fecha = vMaxDate; + + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Greuges_type` +-- + +DROP TABLE IF EXISTS `Greuges_type`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Greuges_type` ( + `Greuges_type_id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`Greuges_type_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Grupos` +-- + +DROP TABLE IF EXISTS `Grupos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Grupos` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `Grupo` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `observation_type_id` tinyint(3) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Impresoras` +-- + +DROP TABLE IF EXISTS `Impresoras`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Impresoras` ( + `Id_Impresora` tinyint(3) unsigned NOT NULL, + `Ruta` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Impresora` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `referencia` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `2C` tinyint(4) DEFAULT '0', + PRIMARY KEY (`Id_Impresora`), + UNIQUE KEY `referencia` (`referencia`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Informes` +-- + +DROP TABLE IF EXISTS `Informes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Informes` ( + `Id_Informe` tinyint(3) unsigned NOT NULL, + `Informe` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Id_Informe`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Intrastat` +-- + +DROP TABLE IF EXISTS `Intrastat`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Intrastat` ( + `Codintrastat` int(8) unsigned zerofill NOT NULL, + `Definicion` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `import` tinyint(4) NOT NULL DEFAULT '0', + `iva_group_id` tinyint(3) unsigned NOT NULL DEFAULT '2', + `iva_codigo_id` tinyint(2) unsigned NOT NULL DEFAULT '64', + PRIMARY KEY (`Codintrastat`), + KEY `iva_group_id` (`iva_group_id`), + CONSTRAINT `Intrastat_ibfk_1` FOREIGN KEY (`iva_group_id`) REFERENCES `iva_group` (`iva_group_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Jefes` +-- + +DROP TABLE IF EXISTS `Jefes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Jefes` ( + `Id_Trabajador` int(11) NOT NULL, + `Id_Jefe` int(11) NOT NULL, + `Departamento` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`Id_Trabajador`,`Id_Jefe`), + KEY `trabajador_jefe_idx` (`Id_Jefe`), + CONSTRAINT `trabajador_jefe` FOREIGN KEY (`Id_Jefe`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `trabajador_trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Es una tabla que se rellena desde la comparativa, tomando los datos de postgress.'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Monedas` +-- + +DROP TABLE IF EXISTS `Monedas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Monedas` ( + `Id_Moneda` tinyint(3) unsigned NOT NULL, + `Moneda` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `Descripcion` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `Cambio` double NOT NULL DEFAULT '1', + PRIMARY KEY (`Id_Moneda`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Monitoring` +-- + +DROP TABLE IF EXISTS `Monitoring`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Monitoring` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `equipo_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + `form_id` int(11) NOT NULL, + `cliente_id` int(11) NOT NULL, + `ticket_id` int(11) NOT NULL, + `ODBC_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `equipo_id` (`equipo_id`,`user_id`,`form_id`,`cliente_id`,`ticket_id`), + KEY `user_id` (`user_id`), + KEY `form_id` (`form_id`), + KEY `cliente_id` (`cliente_id`), + KEY `ticket_id` (`ticket_id`), + CONSTRAINT `Monitoring_ibfk_1` FOREIGN KEY (`equipo_id`) REFERENCES `Equipos` (`id`) ON UPDATE CASCADE, + CONSTRAINT `Monitoring_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, + CONSTRAINT `Monitoring_ibfk_3` FOREIGN KEY (`form_id`) REFERENCES `Forms` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Movimientos` +-- + +DROP TABLE IF EXISTS `Movimientos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Movimientos` ( + `Id_Movimiento` int(11) NOT NULL AUTO_INCREMENT, + `Id_Article` int(11) NOT NULL, + `Id_Ticket` int(11) NOT NULL, + `Concepte` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Cantidad` decimal(10,2) NOT NULL DEFAULT '0.00', + `quantity` double(9,1) DEFAULT NULL, + `Preu` decimal(10,2) DEFAULT '0.00', + `Descuento` tinyint(2) unsigned NOT NULL DEFAULT '0', + `CostFixat` decimal(10,2) NOT NULL DEFAULT '0.00', + `Reservado` tinyint(1) NOT NULL DEFAULT '0', + `OK` tinyint(1) NOT NULL DEFAULT '0', + `PrecioFijado` tinyint(1) NOT NULL DEFAULT '0', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`Id_Movimiento`), + KEY `Id_Ticket` (`Id_Ticket`), + KEY `itemFk_ticketFk` (`Id_Article`,`Id_Ticket`), + CONSTRAINT `Movimientos_ibfk_1` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON UPDATE CASCADE, + CONSTRAINT `movement_ticket_id` FOREIGN KEY (`Id_Ticket`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`MovimientosAfterInsert` + AFTER INSERT ON `Movimientos` FOR EACH ROW +BEGIN + CALL stock.queueAdd ('sale', NEW.Id_Movimiento, NULL); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `MovimientosBeforeUpdate` + BEFORE UPDATE ON `Movimientos` FOR EACH ROW +BEGIN + IF NEW.Descuento > 100 THEN + SET NEW.Descuento = 0; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`MovimientosAfterUpdate` + AFTER UPDATE ON `Movimientos` FOR EACH ROW +BEGIN + CALL stock.queueAdd ('sale', NEW.Id_Movimiento, OLD.Id_Movimiento); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`MovimientosAfterDelete` + AFTER DELETE ON `Movimientos` FOR EACH ROW +BEGIN + CALL stock.queueAdd ('sale', NULL, OLD.Id_Movimiento); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Movimientos_avisar` +-- + +DROP TABLE IF EXISTS `Movimientos_avisar`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Movimientos_avisar` ( + `Id_Movimiento` int(11) NOT NULL, + `Id_Remitente` int(11) DEFAULT NULL, + PRIMARY KEY (`Id_Movimiento`), + KEY `Movimiento` (`Id_Movimiento`), + KEY `Remitente` (`Id_Remitente`), + CONSTRAINT `Id_Movimientos_avisar_fk` FOREIGN KEY (`Id_Movimiento`) REFERENCES `Movimientos` (`Id_Movimiento`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Movimientos_checked` +-- + +DROP TABLE IF EXISTS `Movimientos_checked`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Movimientos_checked` ( + `Id_Movimiento` int(11) NOT NULL, + `checked` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`Id_Movimiento`), + CONSTRAINT `fk_Movimientos_checked_1` FOREIGN KEY (`Id_Movimiento`) REFERENCES `Movimientos` (`Id_Movimiento`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Movimientos_componentes` +-- + +DROP TABLE IF EXISTS `Movimientos_componentes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Movimientos_componentes` ( + `Id_Movimiento` int(11) NOT NULL, + `Id_Componente` int(11) NOT NULL, + `Valor` double NOT NULL, + `greuge` tinyint(4) NOT NULL DEFAULT '0', + PRIMARY KEY (`Id_Movimiento`,`Id_Componente`), + KEY `fk_comp_mov_idx` (`Id_Movimiento`), + KEY `fk_mov_comp_idx` (`Id_Componente`), + CONSTRAINT `mc_fk1` FOREIGN KEY (`Id_Movimiento`) REFERENCES `Movimientos` (`Id_Movimiento`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `mc_fk2` FOREIGN KEY (`Id_Componente`) REFERENCES `bi`.`tarifa_componentes` (`Id_Componente`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Movimientos_mark` +-- + +DROP TABLE IF EXISTS `Movimientos_mark`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Movimientos_mark` ( + `Id_Movimiento` int(11) NOT NULL, + `valor` tinyint(3) unsigned NOT NULL DEFAULT '0', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `original_quantity` double DEFAULT NULL, + `Id_Trabajador` int(11) NOT NULL, + `Id_Accion` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `Id_Movimiento_mark` int(11) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`Id_Movimiento_mark`), + KEY `Id_Movimiento` (`Id_Movimiento`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Movimientos_revisar` +-- + +DROP TABLE IF EXISTS `Movimientos_revisar`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Movimientos_revisar` ( + `Id_Movimiento` int(11) NOT NULL, + `Comentario` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `Revisado` tinyint(1) NOT NULL DEFAULT '0', + `Id_Remitente` int(11) DEFAULT NULL, + `Id_Destinatario` int(11) DEFAULT NULL, + PRIMARY KEY (`Id_Movimiento`), + KEY `Remitente` (`Id_Remitente`), + KEY `Destinatario` (`Id_Destinatario`), + CONSTRAINT `Movimientos_revisar_ibfk_1` FOREIGN KEY (`Id_Movimiento`) REFERENCES `Movimientos` (`Id_Movimiento`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Objetivos` +-- + +DROP TABLE IF EXISTS `Objetivos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Objetivos` ( + `Periodo` int(11) NOT NULL, + `Objetivo` double NOT NULL, + PRIMARY KEY (`Periodo`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Ordenes` +-- + +DROP TABLE IF EXISTS `Ordenes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Ordenes` ( + `Id_ORDEN` int(11) NOT NULL AUTO_INCREMENT, + `ORDEN` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `datORDEN` datetime DEFAULT NULL, + `datTICKET` datetime DEFAULT NULL, + `CodVENDEDOR` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `CodCOMPRADOR` varchar(3) CHARACTER SET utf8 NOT NULL DEFAULT 'NOE', + `CANTIDAD` int(11) DEFAULT NULL, + `PRECIOMAX` double DEFAULT NULL, + `PREU` double DEFAULT NULL, + `Id_ARTICLE` double DEFAULT NULL, + `Id_CLIENTE` int(11) DEFAULT NULL, + `COMENTARIO` longtext COLLATE utf8_unicode_ci, + `OK` tinyint(1) NOT NULL DEFAULT '0', + `TOTAL` int(11) DEFAULT NULL, + `datCOMPRA` datetime DEFAULT NULL, + `KO` tinyint(1) NOT NULL DEFAULT '0', + `Id_Movimiento` int(11) DEFAULT NULL, + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`Id_ORDEN`), + UNIQUE KEY `Id_Movimiento_UNIQUE` (`Id_Movimiento`), + KEY `Id_ARTICLE` (`Id_ARTICLE`), + KEY `Id_CLIENTE` (`Id_CLIENTE`), + KEY `Id_Comprador` (`CodCOMPRADOR`), + KEY `Id_Movimiento` (`Id_Movimiento`), + KEY `Id_Vendedor` (`CodVENDEDOR`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Origen` +-- + +DROP TABLE IF EXISTS `Origen`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Origen` ( + `id` tinyint(2) unsigned NOT NULL AUTO_INCREMENT, + `Abreviatura` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `Origen` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `warehouse_id` smallint(5) unsigned DEFAULT '4', + `bandera` blob, + `nl` tinyint(4) NOT NULL DEFAULT '0', + `Id_Paises` mediumint(8) unsigned NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `Abreviatura` (`Abreviatura`), + KEY `warehouse_id` (`warehouse_id`), + KEY `Id_Paises` (`Id_Paises`), + CONSTRAINT `Origen_ibfk_1` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Pagares` +-- + +DROP TABLE IF EXISTS `Pagares`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Pagares` ( + `kk_Vencimiento` datetime DEFAULT NULL, + `kk_Importe` double DEFAULT '0', + `Fechaemision` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Pagare` int(11) NOT NULL AUTO_INCREMENT, + `Concepto` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `kk_id_proveedor` int(11) DEFAULT NULL, + `kk_empresa_id` smallint(5) unsigned DEFAULT NULL, + `pago_id` int(10) unsigned DEFAULT NULL, + PRIMARY KEY (`Id_Pagare`), + KEY `empresa_id` (`kk_empresa_id`), + KEY `pago_id` (`pago_id`), + CONSTRAINT `Pagares_ibfk_2` FOREIGN KEY (`pago_id`) REFERENCES `pago` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Paises` +-- + +DROP TABLE IF EXISTS `Paises`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Paises` ( + `Id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `Pais` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + `CEE` tinyint(1) NOT NULL DEFAULT '1', + `Codigo` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, + `Id_Moneda` tinyint(3) unsigned NOT NULL DEFAULT '1', + `Id_Paisreal` mediumint(8) unsigned NOT NULL COMMENT 'Pais Real(apaño por culpa del España Exento)', + `nst_geo_id` int(11) DEFAULT NULL, + `nst_name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `geoFk` int(11) DEFAULT NULL, + PRIMARY KEY (`Id`), + KEY `Id_Paisreal` (`Id_Paisreal`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Permisos` +-- + +DROP TABLE IF EXISTS `Permisos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Permisos` ( + `Id_Grupo` int(10) unsigned NOT NULL, + `Id_Trabajador` int(10) unsigned NOT NULL, + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + PRIMARY KEY (`Id_Grupo`,`Id_Trabajador`), + KEY `empresa_id` (`empresa_id`), + CONSTRAINT `Permisos_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `Permisos_ibfk_2` FOREIGN KEY (`Id_Grupo`) REFERENCES `Grupos` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `PreciosEspeciales` +-- + +DROP TABLE IF EXISTS `PreciosEspeciales`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `PreciosEspeciales` ( + `Id_PrecioEspecial` int(11) NOT NULL AUTO_INCREMENT, + `Id_Cliente` int(11) NOT NULL DEFAULT '0', + `Id_Article` int(11) NOT NULL DEFAULT '0', + `PrecioEspecial` double NOT NULL DEFAULT '0', + PRIMARY KEY (`Id_PrecioEspecial`), + UNIQUE KEY `Id_Cliente_2` (`Id_Cliente`,`Id_Article`), + KEY `Id_Article` (`Id_Article`), + KEY `Id_Cliente` (`Id_Cliente`), + CONSTRAINT `sp_article_id` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON UPDATE CASCADE, + CONSTRAINT `sp_customer_id` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE, + CONSTRAINT `{01A99AF1-3D3F-4B15-AC0C-C7A834F319A3}` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `{EE4ADEF6-0AC6-401F-B7C4-D797972FC065}` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Prioridades` +-- + +DROP TABLE IF EXISTS `Prioridades`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Prioridades` ( + `Id_Prioridad` tinyint(3) unsigned NOT NULL DEFAULT '0', + `Prioridad` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Id_Prioridad`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Proveedores` +-- + +DROP TABLE IF EXISTS `Proveedores`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Proveedores` ( + `Id_Proveedor` int(11) NOT NULL AUTO_INCREMENT, + `Proveedor` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `cuenta` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `Domicilio` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `CP` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `Localidad` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `provinciakk` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `province_id` smallint(5) unsigned DEFAULT NULL, + `pais_id` mediumint(8) unsigned DEFAULT NULL, + `NIF` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `oficial` tinyint(1) NOT NULL DEFAULT '1', + `Agricola` tinyint(1) NOT NULL DEFAULT '0', + `cuentaret` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `Telefono` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, + `Fax` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, + `ComisionProveedor` float NOT NULL DEFAULT '0', + `Alias` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `pay_met_id` tinyint(3) unsigned NOT NULL, + `pay_day` tinyint(4) unsigned DEFAULT NULL, + `pay_dem_id` tinyint(3) unsigned NOT NULL DEFAULT '7', + `odbc_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `serious` tinyint(1) unsigned zerofill DEFAULT '1', + `notas` text COLLATE utf8_unicode_ci, + `postcode_id` int(11) unsigned DEFAULT NULL, + `codpos` char(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `active` tinyint(4) DEFAULT '1', + PRIMARY KEY (`Id_Proveedor`), + UNIQUE KEY `cuenta` (`cuenta`), + UNIQUE KEY `NIF` (`NIF`), + KEY `pais_id` (`pais_id`), + KEY `pay_met_id` (`pay_met_id`), + KEY `province_id` (`province_id`), + KEY `pay_dem_id` (`pay_dem_id`), + KEY `postcode_fk_idx` (`postcode_id`), + KEY `codpos` (`codpos`,`CP`), + CONSTRAINT `Id_Pais` FOREIGN KEY (`pais_id`) REFERENCES `Paises` (`Id`) ON UPDATE CASCADE, + CONSTRAINT `pay_dem_id` FOREIGN KEY (`pay_dem_id`) REFERENCES `pay_dem` (`id`) ON UPDATE CASCADE, + CONSTRAINT `pay_met_id` FOREIGN KEY (`pay_met_id`) REFERENCES `pay_met` (`id`) ON UPDATE CASCADE, + CONSTRAINT `postcode_fk` FOREIGN KEY (`postcode_id`) REFERENCES `postcodeKK` (`postcode_id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `province_id` FOREIGN KEY (`province_id`) REFERENCES `province` (`province_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Proveedores_account` +-- + +DROP TABLE IF EXISTS `Proveedores_account`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Proveedores_account` ( + `Id_Proveedores_account` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `Id_Proveedor` int(11) NOT NULL, + `IBAN` varchar(30) CHARACTER SET utf8 DEFAULT NULL, + `office` varchar(4) CHARACTER SET utf8 DEFAULT NULL, + `DC` varchar(2) CHARACTER SET utf8 DEFAULT NULL, + `number` varchar(10) CHARACTER SET utf8 DEFAULT NULL, + `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `bic_sufix` varchar(3) CHARACTER SET utf8 NOT NULL DEFAULT '', + `entity_id` int(10) NOT NULL, + `Id_Banco` int(11) DEFAULT NULL, + PRIMARY KEY (`Id_Proveedores_account`), + KEY `fk_proveedores_proveedores_account_idx` (`Id_Proveedor`), + KEY `fk_Proveedores_account_entity1_idx` (`entity_id`), + KEY `fk_banco_prov_account_idx` (`Id_Banco`), + CONSTRAINT `fk_banco_prov_account` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Proveedores_comunicados` +-- + +DROP TABLE IF EXISTS `Proveedores_comunicados`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Proveedores_comunicados` ( + `Id_Proveedor` int(11) NOT NULL, + `escrito_id` int(11) NOT NULL, + `fecha` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + KEY `Proveedor` (`Id_Proveedor`), + KEY `Escrito` (`escrito_id`), + CONSTRAINT `Proveedores_comunicados_ibfk_3` FOREIGN KEY (`Id_Proveedor`) REFERENCES `Proveedores` (`Id_Proveedor`) ON UPDATE CASCADE, + CONSTRAINT `Proveedores_comunicados_ibfk_4` FOREIGN KEY (`escrito_id`) REFERENCES `Proveedores_escritos` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Proveedores_escritos` +-- + +DROP TABLE IF EXISTS `Proveedores_escritos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Proveedores_escritos` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `escrito` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `informe` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Proveedores_gestdoc` +-- + +DROP TABLE IF EXISTS `Proveedores_gestdoc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Proveedores_gestdoc` ( + `Id_Proveedor` int(11) NOT NULL, + `gestdoc_id` int(11) NOT NULL, + PRIMARY KEY (`Id_Proveedor`,`gestdoc_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Recibos` +-- + +DROP TABLE IF EXISTS `Recibos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Recibos` ( + `Id` int(11) NOT NULL AUTO_INCREMENT, + `Id_Factura` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Entregado` decimal(10,2) NOT NULL DEFAULT '0.00', + `Pendiente` decimal(10,2) NOT NULL DEFAULT '0.00', + `Fechacobro` datetime DEFAULT NULL, + `Id_Trabajador` int(11) DEFAULT '0', + `Id_Banco` int(11) DEFAULT '0', + `Id_Cliente` int(11) DEFAULT '0', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + `conciliado` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0', + PRIMARY KEY (`Id`), + KEY `Id_Banco` (`Id_Banco`), + KEY `Id_Cliente` (`Id_Cliente`), + KEY `Id_Trabajador` (`Id_Trabajador`), + KEY `empresa_id` (`empresa_id`), + CONSTRAINT `Recibos_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, + CONSTRAINT `Recibos_ibfk_2` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE, + CONSTRAINT `recibo_customer_id` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`RecibosAfterInsert` +AFTER INSERT ON `Recibos` +FOR EACH ROW + CALL bi.customer_risk_update (NEW.Id_Cliente, NEW.empresa_id, -NEW.Entregado) */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`RecibosBeforeUpdate` +BEFORE UPDATE ON `Recibos` +FOR EACH ROW +BEGIN + CALL bi.customer_risk_update (OLD.Id_Cliente, OLD.empresa_id, OLD.Entregado); + CALL bi.customer_risk_update (NEW.Id_Cliente, NEW.empresa_id, -NEW.Entregado); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`RecibosBeforeDelete` +BEFORE DELETE ON `Recibos` +FOR EACH ROW + CALL bi.customer_risk_update (OLD.Id_Cliente, OLD.empresa_id, OLD.Entregado) */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Recibos_recorded` +-- + +DROP TABLE IF EXISTS `Recibos_recorded`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Recibos_recorded` ( + `Id_Recibos` int(11) NOT NULL, + `recorded` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Marcado si se ha contabilizado', + PRIMARY KEY (`Id_Recibos`), + CONSTRAINT `Recibos_recorded_ibfk_1` FOREIGN KEY (`Id_Recibos`) REFERENCES `Recibos` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Recibos (Contrareembolso) contabilizados'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Relaciones` +-- + +DROP TABLE IF EXISTS `Relaciones`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Relaciones` ( + `Id_Relacion` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Id_Contacto` int(10) unsigned NOT NULL, + `Id_Proveedor` int(10) unsigned DEFAULT NULL, + `Id_Cliente` int(10) unsigned DEFAULT NULL, + PRIMARY KEY (`Id_Relacion`), + KEY `Id_Contacto` (`Id_Contacto`), + KEY `Id_Proveedor` (`Id_Proveedor`), + KEY `Id_Cliente` (`Id_Cliente`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Remesas` +-- + +DROP TABLE IF EXISTS `Remesas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Remesas` ( + `Id_Remesa` int(11) NOT NULL AUTO_INCREMENT, + `Fecha Remesa` datetime DEFAULT NULL, + `Banco` int(11) DEFAULT '0', + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + PRIMARY KEY (`Id_Remesa`), + KEY `Id_Banco` (`Banco`), + KEY `empresa_id` (`empresa_id`), + CONSTRAINT `Remesas_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, + CONSTRAINT `Remesas_ibfk_2` FOREIGN KEY (`Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Reservas` +-- + +DROP TABLE IF EXISTS `Reservas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Reservas` ( + `Id_Reserva` int(11) NOT NULL AUTO_INCREMENT, + `Id_Ticket` int(11) DEFAULT '0', + `Fecha` datetime DEFAULT NULL, + `Alias` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `article` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `medida` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `categoria` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `color` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `origen` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `cantidad` int(11) DEFAULT '0', + `Id_Article` double DEFAULT '0', + PRIMARY KEY (`Id_Reserva`), + KEY `Id_1` (`Id_Ticket`), + KEY `Id_Article` (`Id_Article`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Rutas` +-- + +DROP TABLE IF EXISTS `Rutas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Rutas` ( + `Id_Ruta` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Id_Trabajador` int(10) unsigned DEFAULT NULL, + `Fecha` date NOT NULL, + `Id_Vehiculo` int(10) unsigned DEFAULT NULL, + `Id_Agencia` int(11) DEFAULT NULL, + `Hora` datetime DEFAULT NULL, + `ok` tinyint(1) unsigned NOT NULL DEFAULT '0', + `km_start` mediumint(9) NOT NULL, + `km_end` mediumint(9) NOT NULL, + `date_start` datetime NOT NULL, + `date_end` datetime NOT NULL, + `gestdoc_id` int(11) DEFAULT NULL, + `cost` double unsigned DEFAULT NULL, + `m3` decimal(10,1) unsigned DEFAULT NULL, + PRIMARY KEY (`Id_Ruta`), + KEY `Id_Agencia` (`Id_Agencia`), + KEY `Fecha` (`Fecha`), + KEY `gestdoc_id` (`gestdoc_id`), + CONSTRAINT `Rutas_ibfk_1` FOREIGN KEY (`gestdoc_id`) REFERENCES `gestdoc` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `Rutas_au` AFTER UPDATE ON `Rutas` FOR EACH ROW +BEGIN + + IF IFNULL(NEW.gestdoc_id,0) <> IFNULL(OLD.gestdoc_id,0) AND NEW.gestdoc_id > 0 THEN + -- JGF 09/09/14 cuando se añade un gestdoc a una ruta, se le asigna automagicamente a todos sus Tickets + + -- Inserta el gestdoc en todos los tickets de la ruta + INSERT INTO tickets_gestdoc(Id_Ticket,gestdoc_id) + SELECT Id_Ticket, NEW.gestdoc_id FROM Tickets WHERE Id_Ruta = NEW.Id_Ruta + ON DUPLICATE KEY UPDATE gestdoc_id = NEW.gestdoc_id; + + -- Update del firmado + UPDATE Tickets t JOIN tickets_gestdoc tg ON t.Id_Ticket = tg.Id_Ticket + SET Firmado = 1 WHERE t.Id_Ruta = NEW.Id_Ruta; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Rutas_Master` +-- + +DROP TABLE IF EXISTS `Rutas_Master`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Rutas_Master` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `warehouse_id` smallint(6) unsigned DEFAULT NULL, + `km` int(11) DEFAULT NULL, + `bultos` int(11) NOT NULL, + `vehiculos_coste` decimal(10,2) DEFAULT NULL, + `personal_coste` decimal(10,2) DEFAULT NULL, + `vehiculos_numero` decimal(10,2) DEFAULT NULL, + `personal_numero` decimal(10,2) DEFAULT NULL, + `gasoil` int(11) DEFAULT NULL, + `autonomos` decimal(10,2) DEFAULT NULL, + `año` int(11) DEFAULT NULL, + `mes` int(11) DEFAULT NULL, + `gastos` decimal(10,2) DEFAULT NULL, + `bultos_autonomos` int(11) DEFAULT NULL, + `coste_km` decimal(10,2) DEFAULT NULL, + `coste_bulto` decimal(10,2) DEFAULT NULL, + `coste_bulto_autonomo` decimal(10,2) DEFAULT NULL, + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `fk_rutas_warehouse_id_idx` (`warehouse_id`), + CONSTRAINT `fk_rutas_warehouse_id` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Rutas_dits` +-- + +DROP TABLE IF EXISTS `Rutas_dits`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Rutas_dits` ( + `idRutas_dits` int(11) unsigned NOT NULL AUTO_INCREMENT, + `idaccion_dits` int(11) NOT NULL, + `ODBC_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Ticket` int(11) unsigned NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `value_old` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `value_new` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`idRutas_dits`), + KEY `index2` (`idaccion_dits`), + KEY `index3` (`Id_Ticket`), + KEY `index4` (`Id_Trabajador`), + CONSTRAINT `fk_Id_Trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, + CONSTRAINT `fk_Id_ruta` FOREIGN KEY (`Id_Ticket`) REFERENCES `Rutas` (`Id_Ruta`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_action_dits` FOREIGN KEY (`idaccion_dits`) REFERENCES `accion_dits` (`idaccion_dits`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Salarios` +-- + +DROP TABLE IF EXISTS `Salarios`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Salarios` ( + `Id_Trabajador` int(11) NOT NULL, + `Salario_Bruto` double DEFAULT '0', + `Incentivo` double DEFAULT '0', + `SS` double DEFAULT '0', + `warehouse_id` smallint(6) NOT NULL DEFAULT '1', + PRIMARY KEY (`Id_Trabajador`), + CONSTRAINT `trabajadaor_id` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Saldos_Prevision` +-- + +DROP TABLE IF EXISTS `Saldos_Prevision`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Saldos_Prevision` ( + `Saldos_Prevision_id` int(11) NOT NULL AUTO_INCREMENT, + `Descripcion` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `Importe` double NOT NULL DEFAULT '0', + `Fecha` date NOT NULL, + `Id_Banco` int(11) DEFAULT NULL, + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + PRIMARY KEY (`Saldos_Prevision_id`), + KEY `Fecha_indice` (`Fecha`), + KEY `banco_prevision_idx` (`Id_Banco`), + KEY `empresa_prevision_idx` (`empresa_id`), + CONSTRAINT `banco_prevision` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE, + CONSTRAINT `empresa_prevision` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Aqui ponemos los gastos e ingresos pendientes de introducir '; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Series` +-- + +DROP TABLE IF EXISTS `Series`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Series` ( + `Id_Serie` varchar(2) COLLATE utf8_unicode_ci NOT NULL, + `Serie` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `Cuenta` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Id_Serie`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Split_lines` +-- + +DROP TABLE IF EXISTS `Split_lines`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Split_lines` ( + `Id_Split_lines` int(11) NOT NULL AUTO_INCREMENT, + `Id_Split` int(11) NOT NULL, + `Id_Article` int(11) DEFAULT NULL, + `Id_Compra` int(11) DEFAULT NULL, + PRIMARY KEY (`Id_Split_lines`), + KEY `Id_Split` (`Id_Split`), + KEY `Id_Compra` (`Id_Compra`), + CONSTRAINT `Id_Compra` FOREIGN KEY (`Id_Compra`) REFERENCES `Compres` (`Id_Compra`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `Split_lines_ibfk_1` FOREIGN KEY (`Id_Split`) REFERENCES `Splits` (`Id_Split`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Splits` +-- + +DROP TABLE IF EXISTS `Splits`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Splits` ( + `Id_Split` int(11) NOT NULL AUTO_INCREMENT, + `Id_Ticket` int(11) DEFAULT NULL, + `Id_Entrada` int(11) DEFAULT NULL, + `Fecha` datetime DEFAULT NULL, + `Notas` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Id_Split`), + KEY `Id_Entrada` (`Id_Entrada`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Stockcontrol` +-- + +DROP TABLE IF EXISTS `Stockcontrol`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Stockcontrol` ( + `Id_Control` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Id_Article` int(11) NOT NULL, + `Id_Remitente` int(11) NOT NULL, + `Id_Solver` int(11) NOT NULL, + `Problema` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `Solucion` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `Listo` tinyint(1) NOT NULL, + `Air` tinyint(1) NOT NULL, + `Datestart` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `Dateend` datetime DEFAULT NULL, + PRIMARY KEY (`Id_Control`), + KEY `Id_Article` (`Id_Article`), + KEY `Id_Remitente` (`Id_Remitente`), + KEY `Id_Solver` (`Id_Solver`), + CONSTRAINT `Stockcontrol_ibfk_1` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `Stockcontrol_ibfk_2` FOREIGN KEY (`Id_Remitente`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `Stockcontrol_ibfk_3` FOREIGN KEY (`Id_Solver`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Tickets` +-- + +DROP TABLE IF EXISTS `Tickets`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Tickets` ( + `Id_Ticket` int(11) NOT NULL AUTO_INCREMENT, + `Id_Cliente` int(11) NOT NULL DEFAULT '0', + `warehouse_id` smallint(6) unsigned NOT NULL DEFAULT '1', + `Fecha` datetime NOT NULL, + `Alias` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Notas` longtext COLLATE utf8_unicode_ci, + `Factura` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `factura_id` int(10) unsigned DEFAULT NULL COMMENT 'eliminar', + `Anotadoencaja` tinyint(1) NOT NULL DEFAULT '0', + `Id_Consigna` int(11) NOT NULL DEFAULT '0', + `Id_Trabajador` int(11) DEFAULT NULL, + `Observaciones` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'eliminar', + `Firmado` tinyint(1) NOT NULL DEFAULT '0', + `Etiquetasemitidas` tinyint(1) NOT NULL DEFAULT '0', + `PedidoImpreso` tinyint(1) NOT NULL DEFAULT '0', + `Bultos` smallint(10) unsigned DEFAULT '0', + `Localizacion` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `Hora` int(11) DEFAULT '0', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `blocked` tinyint(1) NOT NULL DEFAULT '1', + `Solucion` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `Id_Ruta` int(10) unsigned DEFAULT NULL, + `Prioridad` tinyint(3) unsigned DEFAULT NULL, + `priority` tinyint(1) unsigned NOT NULL DEFAULT '1', + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + `Id_Agencia` int(11) NOT NULL, + `landing` date DEFAULT NULL, + `boxed` tinyint(2) NOT NULL DEFAULT '0', + PRIMARY KEY (`Id_Ticket`), + KEY `Id_Cliente` (`Id_Cliente`), + KEY `Id_Consigna` (`Id_Consigna`), + KEY `Id_Trabajador` (`Id_Trabajador`), + KEY `warehouse_id` (`warehouse_id`), + KEY `empresa_id` (`empresa_id`), + KEY `Id_Agencia` (`Id_Agencia`), + KEY `Factura` (`Factura`), + KEY `Fecha` (`Fecha`), + KEY `Id_Ruta` (`Id_Ruta`), + KEY `warehouse_date` (`warehouse_id`,`Fecha`), + CONSTRAINT `Tickets_ibfk_1` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, + CONSTRAINT `Tickets_ibfk_10` FOREIGN KEY (`Factura`) REFERENCES `Facturas` (`Id_Factura`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `Tickets_ibfk_5` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, + CONSTRAINT `Tickets_ibfk_6` FOREIGN KEY (`Id_Consigna`) REFERENCES `Consignatarios` (`id_consigna`) ON UPDATE CASCADE, + CONSTRAINT `Tickets_ibfk_8` FOREIGN KEY (`Id_Agencia`) REFERENCES `Agencias` (`Id_Agencia`), + CONSTRAINT `Tickets_ibfk_9` FOREIGN KEY (`Id_Ruta`) REFERENCES `Rutas` (`Id_Ruta`) ON UPDATE CASCADE, + CONSTRAINT `ticket_customer_id` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `TicketsBeforeInsert` + BEFORE INSERT ON `Tickets` FOR EACH ROW +BEGIN +/* + DECLARE strEspecif VARCHAR(255); + DECLARE intId_Agencia INTEGER; + DECLARE auxprovince INTEGER; + DECLARE intemp INTEGER; + + -- Si el cliente es de Canarias se le asigna la empresa ORN + + SELECT province_id INTO auxprovince + FROM Consignatarios WHERE Id_Consigna = NEW.Id_Consigna; + + IF (auxprovince = 49 OR auxprovince = 33) AND NEW.Id_Cliente <> 5270 THEN + SET intemp = 1381; + END IF; + + IF intemp THEN + SET NEW.empresa_id = intemp; + END IF; + */ +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`TicketsAfterInsert` + AFTER INSERT ON `vn2008`.`Tickets` FOR EACH ROW +BEGIN + /* + DECLARE vEmployee INT; + + SELECT Id_Trabajador INTO vEmployee + FROM Trabajadores WHERE user_id = account.userGetId(); + + IF vEmployee IS NULL THEN + SET vEmployee = 20; + END IF; + + IF NEW.Id_Cliente = 400 OR NEW.Id_Cliente = 200 + THEN + INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) + SELECT id, NEW.Id_Ticket, vEmployee + FROM state + WHERE `code` = 'DELIVERED'; + END IF; + */ +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `TicketsBeforeUpdate` + BEFORE UPDATE ON `Tickets` FOR EACH ROW +BEGIN + DECLARE vAgency INT; + DECLARE vEmployee INT; + DECLARE vIsCee TINYINT; + DECLARE vHasVies TINYINT; + + SELECT Id_Trabajador INTO vEmployee + FROM Trabajadores WHERE user_id = account.userGetId(); + + IF vEmployee IS NULL THEN + SET vEmployee = 20; + END IF; + + -- Comprobación de VIES + IF NEW.empresa_id <> OLD.empresa_id THEN + + SELECT CEE INTO vIsCee + FROM Proveedores AS pr + INNER JOIN Paises p ON p.Id = pr.pais_id + WHERE Id_Proveedor = NEW.empresa_id; + + SELECT VIES INTO vHasVies + FROM vn.`client` + WHERE id = OLD.Id_Cliente; + + IF vIsCee = 1 AND NOT vHasVies Then + CALL util.throw("NO_VALID_VIES"); + END IF; + END IF; + + IF NEW.Fecha < '2001-01-01' + THEN + SET NEW.Id_Ruta = NULL; + + IF NEW.Fecha < '2000-01-01' then + SET NEW.Fecha = OLD.Fecha; + END IF; + + INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) + VALUES(17, NEW.Id_Ticket, vEmployee); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`TicketsAfterUpdate` + AFTER UPDATE ON `Tickets` FOR EACH ROW +BEGIN + CALL stock.queueAdd ('ticket', NEW.Id_Ticket, OLD.Id_Ticket); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Tickets_dits` +-- + +DROP TABLE IF EXISTS `Tickets_dits`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Tickets_dits` ( + `idTickets_dits` int(11) NOT NULL AUTO_INCREMENT, + `idaccion_dits` int(11) NOT NULL, + `ODBC_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Ticket` int(11) NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `value_old` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `value_new` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`idTickets_dits`), + KEY `fgkey1_idx` (`idaccion_dits`), + KEY `fgkey2_idx` (`Id_Ticket`), + KEY `fgkey3_idx` (`Id_Trabajador`), + CONSTRAINT `Tickets_dits_ibfk_1` FOREIGN KEY (`Id_Ticket`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fgkey1` FOREIGN KEY (`idaccion_dits`) REFERENCES `accion_dits` (`idaccion_dits`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `fgkey3` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Tickets_stack` +-- + +DROP TABLE IF EXISTS `Tickets_stack`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Tickets_stack` ( + `Id_Ticket` int(11) NOT NULL, + `orden` smallint(5) unsigned NOT NULL, + `label_number` smallint(6) DEFAULT '0', + `preparado` tinyint(4) DEFAULT '0', + PRIMARY KEY (`Id_Ticket`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Orden para imprimir los F5.Se borra autom. lo de 2 meses'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Tickets_state` +-- + +DROP TABLE IF EXISTS `Tickets_state`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Tickets_state` ( + `Id_Ticket` int(11) NOT NULL DEFAULT '0', + `inter_id` int(11) NOT NULL, + `state_name` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`Id_Ticket`), + KEY `double_foreign` (`Id_Ticket`,`inter_id`), + CONSTRAINT `Id_Ticket` FOREIGN KEY (`Id_Ticket`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `double_foreign` FOREIGN KEY (`Id_Ticket`, `inter_id`) REFERENCES `vncontrol`.`inter` (`Id_Ticket`, `inter_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Tickets_turno` +-- + +DROP TABLE IF EXISTS `Tickets_turno`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Tickets_turno` ( + `Id_Ticket` int(11) NOT NULL AUTO_INCREMENT, + `weekDay` tinyint(1) DEFAULT NULL COMMENT 'funcion de mysql Lunes = 0, Domingo = 6', + PRIMARY KEY (`Id_Ticket`), + CONSTRAINT `Id_Ticket_fk` FOREIGN KEY (`Id_Ticket`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Tintas` +-- + +DROP TABLE IF EXISTS `Tintas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Tintas` ( + `Id_Tinta` char(3) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Tinta` blob NOT NULL, + `Orden` int(11) NOT NULL, + `ball` blob, + `cargex` tinyint(4) NOT NULL DEFAULT '0', + PRIMARY KEY (`Id_Tinta`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Tipos` +-- + +DROP TABLE IF EXISTS `Tipos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Tipos` ( + `tipo_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `Id_Tipo` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `Tipo` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `Orden` int(11) DEFAULT '0', + `Temperatura` tinyint(1) unsigned NOT NULL DEFAULT '0', + `reino_id` int(10) unsigned NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `inventory` tinyint(4) NOT NULL DEFAULT '1', + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `f11` tinyint(4) NOT NULL DEFAULT '0', + `father_id` smallint(5) DEFAULT NULL, + `transaction` tinyint(4) NOT NULL DEFAULT '0', + `confeccion` int(10) unsigned DEFAULT NULL, + `location` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `life` smallint(5) unsigned DEFAULT NULL, + `maneuver` double NOT NULL DEFAULT '0.21', + `target` double NOT NULL DEFAULT '0.15', + `top_margin` double NOT NULL DEFAULT '0.3', + `profit` double NOT NULL DEFAULT '0.02', + `FV` tinyint(3) DEFAULT '1', + `density` double NOT NULL DEFAULT '167' COMMENT 'Almacena la densidad en kg/m3 para el calculo de los portes aereos', + `promo` double NOT NULL DEFAULT '0', + `box` tinyint(4) NOT NULL DEFAULT '0', + `CYM` int(11) NOT NULL DEFAULT '0', + `isPackaging` tinyint(1) NOT NULL DEFAULT '0', + `hasComponents` tinyint(1) NOT NULL DEFAULT '1', + PRIMARY KEY (`Id_Tipo`), + UNIQUE KEY `tipo_id_UNIQUE` (`tipo_id`), + KEY `Trabajador` (`Id_Trabajador`), + KEY `reino_id` (`reino_id`), + KEY `Tipos_fk3_idx` (`confeccion`), + CONSTRAINT `Tipos_fk3` FOREIGN KEY (`confeccion`) REFERENCES `vn`.`confectionType` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `Tipos_ibfk_1` FOREIGN KEY (`reino_id`) REFERENCES `reinos` (`id`) ON UPDATE CASCADE, + CONSTRAINT `Trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Protege la tabla tipos de updates para los 4 parámetros de los compradores, en funcion del valor del campo CodigoRojo de tblContadores.'; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `Tipos_bu` BEFORE UPDATE ON `Tipos` FOR EACH ROW +-- Edit trigger body code below this line. Do not edit lines above this one +BEGIN + DECLARE strCOD VARCHAR(40); + + SELECT CodigoRojo INTO strCOD FROM tblContadores LIMIT 1; + + IF strCOD <> 'tipos' + THEN + SET NEW.maneuver = OLD.maneuver ; + SET NEW.target = OLD.target ; + SET NEW.top_margin = OLD.top_margin ; + SET NEW.profit = OLD.profit ; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Tipos_f11` +-- + +DROP TABLE IF EXISTS `Tipos_f11`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Tipos_f11` ( + `f11_id` tinyint(4) NOT NULL AUTO_INCREMENT, + `description` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`f11_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Trabajadores` +-- + +DROP TABLE IF EXISTS `Trabajadores`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Trabajadores` ( + `CodigoTrabajador` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `Nombre` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Apellidos` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Password` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `email` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Id_Trabajador` int(11) NOT NULL AUTO_INCREMENT, + `extension` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `sub` int(11) unsigned DEFAULT NULL, + `user` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `Contrato_Tipo` varchar(30) CHARACTER SET utf8 DEFAULT 'no dejar vacio' COMMENT 'campo obsoleto, actualmente se rellena en laboral', + `Categoria_Laboral` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `Fecha_Inicio` datetime DEFAULT NULL, + `Fecha_Fin` datetime DEFAULT NULL, + `Notas` varchar(254) COLLATE utf8_unicode_ci DEFAULT NULL, + `Foto` blob, + `dni` varchar(9) COLLATE utf8_unicode_ci DEFAULT NULL, + `address` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `date_birth` date NOT NULL, + `marital_status` enum('soltero/a','casado/a') COLLATE utf8_unicode_ci NOT NULL, + `phone` varchar(9) COLLATE utf8_unicode_ci NOT NULL, + `empresa_id` smallint(5) unsigned NOT NULL, + `Id_Cliente_Interno` int(11) DEFAULT NULL, + `user_id` int(10) unsigned DEFAULT NULL, + `boss` int(11) NOT NULL DEFAULT '2', + `DniExpiration` datetime DEFAULT NULL, + PRIMARY KEY (`Id_Trabajador`), + UNIQUE KEY `CodigoTrabajador_UNIQUE` (`CodigoTrabajador`), + UNIQUE KEY `user` (`user`), + UNIQUE KEY `user_id_UNIQUE` (`user_id`), + UNIQUE KEY `Id_Cliente_Interno` (`Id_Cliente_Interno`), + KEY `sub` (`sub`), + CONSTRAINT `Clientes` FOREIGN KEY (`Id_Cliente_Interno`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE, + CONSTRAINT `Trabajadores_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Trabajadores_BEFORE_INSERT` BEFORE INSERT ON `Trabajadores` FOR EACH ROW + +begin + +IF NEW.password = '' THEN + + SET NEW.password = 'FALLO'; + + END IF; + + + +end */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Trabajadores_BEFORE_UPDATE` BEFORE UPDATE ON `Trabajadores` FOR EACH ROW + +begin + +IF NEW.password = '' THEN + + SET NEW.password = 'FALLO'; + + END IF; + + + +end */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `Tramos` +-- + +DROP TABLE IF EXISTS `Tramos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Tramos` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `Tramo` time NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `Tramo` (`Tramo`) +) ENGINE=MyISAM AUTO_INCREMENT=50 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Ubicator` +-- + +DROP TABLE IF EXISTS `Ubicator`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Ubicator` ( + `Id_Estanterias` int(11) NOT NULL, + `Date` date NOT NULL, + `w` int(11) DEFAULT '0', + `d` int(11) DEFAULT '0', + `h` int(11) DEFAULT '0', + `Id_Cubo` int(11) NOT NULL, + `Id_Article` int(11) NOT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `V_edi_item_track` +-- + +DROP TABLE IF EXISTS `V_edi_item_track`; +/*!50001 DROP VIEW IF EXISTS `V_edi_item_track`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `V_edi_item_track` AS SELECT + 1 AS `item_id`, + 1 AS `s1`, + 1 AS `s2`, + 1 AS `s3`, + 1 AS `s4`, + 1 AS `s5`, + 1 AS `s6`, + 1 AS `kop`, + 1 AS `pac`, + 1 AS `cat`, + 1 AS `ori`, + 1 AS `pro`, + 1 AS `sub`, + 1 AS `package`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `Vehiculos` +-- + +DROP TABLE IF EXISTS `Vehiculos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Vehiculos` ( + `Id_Vehiculo` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Matricula` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `Modelo` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `Marca` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + `m3` double DEFAULT NULL, + `active` tinyint(4) NOT NULL DEFAULT '1', + `warehouseFk` smallint(6) unsigned DEFAULT NULL, + `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`Id_Vehiculo`), + KEY `empresa_id` (`empresa_id`), + KEY `provinceFk_idx` (`warehouseFk`), + CONSTRAINT `Vehiculos_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, + CONSTRAINT `provinceFk` FOREIGN KEY (`warehouseFk`) REFERENCES `province` (`province_id`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Vehiculos_consumo` +-- + +DROP TABLE IF EXISTS `Vehiculos_consumo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Vehiculos_consumo` ( + `Vehiculos_consumo_id` int(11) NOT NULL AUTO_INCREMENT, + `Id_Vehiculo` int(10) unsigned NOT NULL, + `fecha` date NOT NULL, + `km` int(20) unsigned NOT NULL, + `litros` double unsigned NOT NULL, + `precio` double unsigned NOT NULL, + `adblue` decimal(10,2) NOT NULL DEFAULT '0.00', + `peajes` double DEFAULT NULL, + `descuento` double DEFAULT NULL, + `silla` int(11) NOT NULL DEFAULT '0' COMMENT 'indica si han repostado en la gasolinera de la rotonda', + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `otros` double DEFAULT NULL, + PRIMARY KEY (`Vehiculos_consumo_id`,`Id_Vehiculo`), + KEY `fk_Vehiculos_consumo_Vehiculos_idx` (`Id_Vehiculo`), + CONSTRAINT `fk_Vehiculos_consumo_Vehiculos` FOREIGN KEY (`Id_Vehiculo`) REFERENCES `Vehiculos` (`Id_Vehiculo`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla apuntan el importe de los tickets de la gasolinera solred, con quien tenemos un contrato y nos facturan mensualmente'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `VerEspionaje` +-- + +DROP TABLE IF EXISTS `VerEspionaje`; +/*!50001 DROP VIEW IF EXISTS `VerEspionaje`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `VerEspionaje` AS SELECT + 1 AS `CodigoTrabajador`, + 1 AS `Fecha`, + 1 AS `HoraEntrada`, + 1 AS `HoraSalida`, + 1 AS `Id_Equipo`, + 1 AS `Id_Trabajador`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `Vistas` +-- + +DROP TABLE IF EXISTS `Vistas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Vistas` ( + `vista_id` int(11) NOT NULL AUTO_INCREMENT, + `vista` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`vista_id`), + UNIQUE KEY `code` (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `XDiario` +-- + +DROP TABLE IF EXISTS `XDiario`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `XDiario` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `ASIEN` double DEFAULT NULL, + `FECHA` datetime DEFAULT NULL, + `SUBCTA` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, + `CONTRA` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, + `CONCEPTO` varchar(50) CHARACTER SET utf8 DEFAULT NULL, + `EURODEBE` decimal(10,2) DEFAULT NULL, + `EUROHABER` decimal(10,2) DEFAULT NULL, + `BASEEURO` decimal(10,2) DEFAULT NULL, + `SERIE` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `FACTURA` varchar(8) COLLATE utf8_unicode_ci DEFAULT '0', + `BASEIMPO` decimal(10,2) DEFAULT NULL, + `IVA` decimal(10,2) DEFAULT NULL, + `RECEQUIV` decimal(10,2) DEFAULT '0.00', + `DOCUMENTO` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `DEPARTA` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `CLAVE` int(11) DEFAULT NULL, + `ESTADO` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `NCASADO` decimal(10,2) DEFAULT NULL, + `TCASADO` decimal(10,2) DEFAULT NULL, + `TRANS` decimal(10,2) DEFAULT NULL, + `CAMBIO` decimal(10,2) DEFAULT NULL, + `DEBEME` decimal(10,2) DEFAULT NULL, + `HABERME` decimal(10,2) DEFAULT NULL, + `PTAHABER` decimal(10,2) DEFAULT NULL, + `AUXILIAR` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `SUCURSAL` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL, + `PTADEBE` decimal(10,2) DEFAULT NULL, + `CODDIVISA` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `IMPAUXME` decimal(10,2) DEFAULT NULL, + `MONEDAUSO` varchar(1) COLLATE utf8_unicode_ci DEFAULT '2', + `NOCONV` tinyint(1) NOT NULL DEFAULT '0', + `NUMEROINV` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `TIPOOPE` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `NFACTICK` tinyint(1) NOT NULL DEFAULT '1', + `TERIDNIF` tinyint(1) NOT NULL DEFAULT '2', + `TERNIF` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'I.F.', + `TERNOM` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Nombre Importador', + `OPBIENES` tinyint(1) NOT NULL DEFAULT '1', + `TIPOFAC` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `TIPOIVA` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `L340` tinyint(2) NOT NULL DEFAULT '0', + `enlazado` tinyint(1) NOT NULL DEFAULT '0', + `FECHA_EX` date DEFAULT NULL COMMENT 'FEcha de expedicion de la factura', + `LRECT349` tinyint(1) NOT NULL DEFAULT '0', + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + `LDIFADUAN` tinyint(4) NOT NULL DEFAULT '0', + `METAL` tinyint(1) NOT NULL DEFAULT '0', + `METALIMP` decimal(10,2) NOT NULL DEFAULT '0.00', + `FECHA_OP` date DEFAULT NULL COMMENT 'FEcha de operacion', + `FACTURAEX` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Numero de factura del proveedor', + `TIPOCLAVE` int(3) DEFAULT NULL, + `TIPOEXENCI` int(3) DEFAULT NULL, + `TIPONOSUJE` int(3) DEFAULT NULL, + `TIPOFACT` int(3) DEFAULT NULL, + `TIPORECTIF` int(3) DEFAULT NULL, + `SERIE_RT` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, + `FACTU_RT` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `BASEIMP_RT` decimal(10,2) DEFAULT NULL, + `BASEIMP_RF` decimal(10,2) DEFAULT NULL, + `RECTIFICA` int(1) NOT NULL DEFAULT '0', + `FECHA_RT` date DEFAULT NULL, + `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `updated` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `FECREGCON` date DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `empresa_id` (`empresa_id`), + CONSTRAINT `XDiario_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `XDiario_KK` +-- + +DROP TABLE IF EXISTS `XDiario_KK`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `XDiario_KK` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `ASIEN` double DEFAULT NULL, + `FECHA` date DEFAULT NULL, + `SUBCTA` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, + `CONTRA` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, + `CONCEPTO` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, + `EURODEBE` decimal(10,2) DEFAULT NULL, + `EUROHABER` decimal(10,2) DEFAULT NULL, + `BASEEURO` decimal(10,2) DEFAULT NULL, + `SERIE` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `FACTURA` varchar(8) COLLATE utf8_unicode_ci DEFAULT '0', + `BASEIMPO` decimal(10,2) DEFAULT NULL, + `IVA` decimal(10,2) DEFAULT NULL, + `RECEQUIV` decimal(10,2) DEFAULT '0.00', + `DOCUMENTO` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `DEPARTA` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `CLAVE` int(11) DEFAULT NULL, + `ESTADO` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `NCASADO` decimal(10,2) DEFAULT NULL, + `TCASADO` decimal(10,2) DEFAULT NULL, + `TRANS` decimal(10,2) DEFAULT NULL, + `CAMBIO` decimal(10,2) DEFAULT NULL, + `DEBEME` decimal(10,2) DEFAULT NULL, + `HABERME` decimal(10,2) DEFAULT NULL, + `PTAHABER` decimal(10,2) DEFAULT NULL, + `AUXILIAR` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `SUCURSAL` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL, + `PTADEBE` decimal(10,2) DEFAULT NULL, + `CODDIVISA` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `IMPAUXME` decimal(10,2) DEFAULT NULL, + `MONEDAUSO` varchar(1) COLLATE utf8_unicode_ci DEFAULT '2', + `NOCONV` tinyint(1) NOT NULL DEFAULT '0', + `NUMEROINV` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `TIPOOPE` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `NFACTICK` tinyint(1) NOT NULL DEFAULT '1', + `TERIDNIF` tinyint(1) NOT NULL DEFAULT '2', + `TERNIF` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'I.F.', + `TERNOM` varchar(30) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Nombre Importador', + `OPBIENES` tinyint(1) NOT NULL DEFAULT '1', + `TIPOFAC` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `TIPOIVA` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `L340` tinyint(2) NOT NULL DEFAULT '0', + `enlazado` tinyint(1) NOT NULL DEFAULT '0', + `FECHA_EX` date DEFAULT NULL COMMENT 'FEcha de expedicion de la factura', + `LRECT349` tinyint(1) NOT NULL DEFAULT '0', + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + `LDIFADUAN` tinyint(4) NOT NULL DEFAULT '0', + `METAL` tinyint(1) NOT NULL DEFAULT '0', + `METALIMP` decimal(10,2) NOT NULL DEFAULT '0.00', + `FECHA_OP` date DEFAULT NULL COMMENT 'FEcha de operacion', + `FACTURAEX` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Numero de factura del proveedor', + `TIPOCLAVE` int(3) DEFAULT NULL, + `TIPOEXENCI` int(3) DEFAULT NULL, + `TIPONOSUJE` int(3) DEFAULT NULL, + `TIPOFACT` int(3) DEFAULT NULL, + `TIPORECTIF` int(3) DEFAULT NULL, + `SERIE_RT` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, + `FACTU_RT` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `BASEIMP_RT` decimal(10,2) DEFAULT NULL, + `BASEIMP_RF` decimal(10,2) DEFAULT NULL, + `RECTIFICA` int(1) NOT NULL DEFAULT '0', + `FECHA_RT` date DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `empresa_id` (`empresa_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `__Cartera_Ventas` +-- + +DROP TABLE IF EXISTS `__Cartera_Ventas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `__Cartera_Ventas` ( + `CodigoTrabajador` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `Mes` int(2) DEFAULT NULL, + `Año` int(4) DEFAULT NULL, + `Motivo` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, + `Importe` double DEFAULT NULL, + `Id_Ticket` bigint(20) DEFAULT NULL, + `Semana` int(2) DEFAULT NULL, + `Cliente` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + KEY `INDEX1` (`Id_Ticket`), + KEY `INDEX2` (`Mes`,`Año`,`Id_Ticket`), + KEY `INDEX3` (`CodigoTrabajador`,`Mes`,`Año`,`Id_Ticket`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `accion_dits` +-- + +DROP TABLE IF EXISTS `accion_dits`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `accion_dits` ( + `idaccion_dits` int(11) NOT NULL AUTO_INCREMENT, + `accion` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`idaccion_dits`), + UNIQUE KEY `accion_UNIQUE` (`accion`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `account_conciliacion` +-- + +DROP TABLE IF EXISTS `account_conciliacion`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `account_conciliacion` ( + `idaccount_conciliacion` int(11) NOT NULL AUTO_INCREMENT, + `Id_Proveedores_account` mediumint(8) unsigned NOT NULL, + `Fechaoperacion` datetime NOT NULL, + `FechaValor` datetime NOT NULL, + `importe` double NOT NULL, + `Concepto` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `DebeHaber` smallint(6) NOT NULL, + `id_calculated` varchar(90) COLLATE utf8_unicode_ci DEFAULT NULL, + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`idaccount_conciliacion`), + UNIQUE KEY `idaccount_conciliacion_UNIQUE` (`idaccount_conciliacion`), + KEY `fg_accconciliacion_key1_idx` (`Id_Proveedores_account`), + KEY `index_id_calculated` (`id_calculated`), + CONSTRAINT `fg_key1_accountconc` FOREIGN KEY (`Id_Proveedores_account`) REFERENCES `Proveedores_account` (`Id_Proveedores_account`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`account_conciliacion_BEFORE_INSERT` +BEFORE INSERT ON `account_conciliacion` FOR EACH ROW + +set new.id_calculated = replace( + replace( + replace( + replace( + concat(new.Id_Proveedores_account,new.Fechaoperacion,new.importe,new.Concepto,new.DebeHaber) + ,' ','') + ,":",'') + ,'-','') + ,'.','') */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Temporary view structure for view `account_customer` +-- + +DROP TABLE IF EXISTS `account_customer`; +/*!50001 DROP VIEW IF EXISTS `account_customer`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `account_customer` AS SELECT + 1 AS `description`, + 1 AS `iban`, + 1 AS `entity_id`, + 1 AS `office`, + 1 AS `dc`, + 1 AS `number`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `account_detail` +-- + +DROP TABLE IF EXISTS `account_detail`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `account_detail` ( + `account_detail_id` int(11) NOT NULL AUTO_INCREMENT, + `value` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `account_detail_type_id` int(11) NOT NULL, + `Id_Proveedores_account` mediumint(8) unsigned NOT NULL, + PRIMARY KEY (`account_detail_id`), + KEY `fk_account_detail_account_detail_type1_idx` (`account_detail_type_id`), + KEY `fk_account_detail_Proveedores_account1_idx` (`Id_Proveedores_account`), + CONSTRAINT `fk_account_detail_account_detail_type1` FOREIGN KEY (`account_detail_type_id`) REFERENCES `account_detail_type` (`account_detail_type_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_account_detail_account_id_proveedores_account` FOREIGN KEY (`Id_Proveedores_account`) REFERENCES `Proveedores_account` (`Id_Proveedores_account`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `account_detail_type` +-- + +DROP TABLE IF EXISTS `account_detail_type`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `account_detail_type` ( + `account_detail_type_id` int(11) NOT NULL AUTO_INCREMENT, + `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`account_detail_type_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `accumulatorsReadingDate` +-- + +DROP TABLE IF EXISTS `accumulatorsReadingDate`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `accumulatorsReadingDate` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `pagoSdcfk` int(11) NOT NULL, + `readingDate` date NOT NULL COMMENT 'dia en que se revisa la cotizacion del dolar', + `amount` double DEFAULT NULL COMMENT 'cantidad aumentada tras la lectura del tipo de cambio', + PRIMARY KEY (`id`), + KEY `pagoSdcFk_idx` (`pagoSdcfk`), + CONSTRAINT `pagoSdcFk` FOREIGN KEY (`pagoSdcfk`) REFERENCES `pago_sdc` (`pago_sdc_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `agencia_descuadre` +-- + +DROP TABLE IF EXISTS `agencia_descuadre`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `agencia_descuadre` ( + `agencia_descuadre_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Id_Ticket` int(11) NOT NULL, + `date` date NOT NULL, + `price` double(7,2) NOT NULL, + `Consignatario` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `Tipo` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`agencia_descuadre_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `agency` +-- + +DROP TABLE IF EXISTS `agency`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `agency` ( + `agency_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + `warehouse_id` smallint(5) unsigned DEFAULT NULL COMMENT 'A nulo si se puede enrutar desde todos los almacenes', + `por_volumen` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Si el calculo del porte se hacer por volumen', + `Id_Banco` int(11) NOT NULL DEFAULT '8' COMMENT 'para realizar los reembolsos', + `warehouse_alias_id` smallint(5) unsigned DEFAULT NULL, + `propios` tinyint(1) NOT NULL DEFAULT '0', + `zone_label` tinyint(4) NOT NULL DEFAULT '0', + PRIMARY KEY (`agency_id`), + KEY `warehouse_id` (`warehouse_id`), + KEY `Id_Banco` (`Id_Banco`), + KEY `agencias_alias_idx` (`warehouse_alias_id`), + CONSTRAINT `agency_ibfk_1` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, + CONSTRAINT `agency_ibfk_2` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`agency_ai` +AFTER INSERT ON `vn2008`.`agency` +FOR EACH ROW +BEGIN + INSERT INTO Agencias(Agencia,agency_id) VALUES(NEW.name,NEW.agency_id); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `agency_hour` +-- + +DROP TABLE IF EXISTS `agency_hour`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `agency_hour` ( + `agency_hour_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `week_day` tinyint(3) unsigned DEFAULT NULL COMMENT 'funcion de mysql Lunes = 0, Domingo = 6', + `agency_id` smallint(5) unsigned DEFAULT NULL, + `warehouse_id` smallint(5) unsigned DEFAULT NULL, + `province_id` smallint(5) unsigned DEFAULT NULL, + `subtract_day` tinyint(10) unsigned NOT NULL COMMENT 'dias a restar de la Fecha de entrega', + `max_hour` tinyint(3) unsigned NOT NULL COMMENT 'maxima hora hasta la cual se pueden hacer pedidos', + PRIMARY KEY (`agency_hour_id`), + UNIQUE KEY `week_day` (`week_day`,`agency_id`,`warehouse_id`,`province_id`,`max_hour`), + KEY `agency_id` (`agency_id`), + KEY `warehouse_id` (`warehouse_id`), + KEY `province_id` (`province_id`), + CONSTRAINT `agency_hour_ibfk_1` FOREIGN KEY (`agency_id`) REFERENCES `agency` (`agency_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `agency_hour_ibfk_2` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `agency_hour_ibfk_3` FOREIGN KEY (`province_id`) REFERENCES `province` (`province_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`agency_hourBeforeInsert` BEFORE INSERT ON `agency_hour` FOR EACH ROW +BEGIN + DECLARE vAlreadyExists BOOLEAN DEFAULT FALSE; + IF NEW.week_day IS NULL AND NEW.province_id IS NULL AND NEW.subtract_day = 0 AND NEW.max_hour = 0 THEN + CALL util.throw ('FILL_MORE_FIELDS'); + END IF; + + SELECT COUNT(*) INTO vAlreadyExists + FROM vn2008.agency_hour + WHERE NEW.week_day <=> week_day AND NEW.province_id <=> province_id + AND NEW.warehouse_id <=> warehouse_id AND NEW.max_hour <=> max_hour + AND NEW.agency_id <=> agency_id; + + IF vAlreadyExists > 1 THEN + CALL util.throw('ALREADY_EXISTS'); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`agency_hour_AFTER_UPDATE` AFTER UPDATE ON `agency_hour` FOR EACH ROW +BEGIN +DECLARE vAlreadyExists BOOLEAN DEFAULT FALSE; + + SELECT COUNT(*) INTO vAlreadyExists + FROM vn2008.agency_hour + WHERE NEW.week_day <=> week_day AND NEW.province_id <=> province_id + AND NEW.warehouse_id <=> warehouse_id AND NEW.max_hour <=> max_hour + AND NEW.agency_id <=> agency_id; + + IF vAlreadyExists > 1 THEN + CALL util.throw('ALREADY_EXISTS'); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `agency_warehouse` +-- + +DROP TABLE IF EXISTS `agency_warehouse`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `agency_warehouse` ( + `agency_id` smallint(5) unsigned NOT NULL, + `warehouse_id` smallint(5) unsigned NOT NULL DEFAULT '1', + `Vista` tinyint(3) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`agency_id`,`warehouse_id`), + KEY `warehouse_id` (`warehouse_id`), + CONSTRAINT `agency_warehouse_ibfk_1` FOREIGN KEY (`agency_id`) REFERENCES `agency` (`agency_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `agency_warehouse_ibfk_2` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Indica la vista para cada agencia'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `agency_weekday_bonus` +-- + +DROP TABLE IF EXISTS `agency_weekday_bonus`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `agency_weekday_bonus` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `warehouse_id` smallint(6) unsigned DEFAULT NULL, + `agency_id` smallint(5) unsigned DEFAULT NULL, + `weekDay` tinyint(3) unsigned NOT NULL, + `zona` tinyint(4) DEFAULT NULL, + `bonus` decimal(10,2) NOT NULL DEFAULT '0.00', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `airline` +-- + +DROP TABLE IF EXISTS `airline`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `airline` ( + `airline_id` smallint(2) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`airline_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `airport` +-- + +DROP TABLE IF EXISTS `airport`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `airport` ( + `airport_id` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`airport_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `albaran` +-- + +DROP TABLE IF EXISTS `albaran`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `albaran` ( + `albaran_id` int(11) NOT NULL AUTO_INCREMENT, + `ref` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `note` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, + `fecha` date NOT NULL, + `fecha_entrega` date DEFAULT NULL, + `valor` double DEFAULT NULL, + `Id_Proveedor` int(11) NOT NULL, + `empresa_id` smallint(5) unsigned NOT NULL, + `warehouse_id` smallint(6) unsigned NOT NULL, + `albaran_state_id` int(11) NOT NULL, + `Id_Trabajador` int(11) NOT NULL COMMENT 'Id_Trabajador hace referencia a la persona que ha introducido el albarán', + `Id_Responsable` int(11) NOT NULL, + `department_id` int(11) NOT NULL, + `recibida_id` mediumint(8) unsigned DEFAULT NULL, + PRIMARY KEY (`albaran_id`), + KEY `fk_albaran_Proveedores_idx` (`Id_Proveedor`), + KEY `fk_albaran_empresa1_idx` (`empresa_id`), + KEY `fk_albaran_warehouse1_idx` (`warehouse_id`), + KEY `fk_albaran_albaran_state1_idx` (`albaran_state_id`), + KEY `fk_albaran_Trabajadores1_idx` (`Id_Trabajador`), + KEY `fk_albaran_Trabajadores2_idx` (`Id_Responsable`), + KEY `fk_albaran_department1_idx` (`department_id`), + KEY `fk_albaran_recibida_idx` (`recibida_id`), + CONSTRAINT `fk_albaran_Proveedores` FOREIGN KEY (`Id_Proveedor`) REFERENCES `Proveedores` (`Id_Proveedor`) ON UPDATE CASCADE, + CONSTRAINT `fk_albaran_Trabajadores1` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, + CONSTRAINT `fk_albaran_Trabajadores2` FOREIGN KEY (`Id_Responsable`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, + CONSTRAINT `fk_albaran_albaran_state1` FOREIGN KEY (`albaran_state_id`) REFERENCES `albaran_state` (`albaran_state_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_albaran_department1` FOREIGN KEY (`department_id`) REFERENCES `department` (`department_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_albaran_empresa1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, + CONSTRAINT `fk_albaran_recibida` FOREIGN KEY (`recibida_id`) REFERENCES `recibida` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `fk_albaran_warehouse1` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `albaran_gestdoc` +-- + +DROP TABLE IF EXISTS `albaran_gestdoc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `albaran_gestdoc` ( + `gestdoc_id` int(11) NOT NULL, + `albaran_id` int(11) NOT NULL, + PRIMARY KEY (`gestdoc_id`,`albaran_id`), + KEY `fk_albaran_gestdoc_gestdoc1_idx` (`gestdoc_id`), + KEY `fk_albaran_gestdoc_albaran1_idx` (`albaran_id`), + CONSTRAINT `fk_albaran_gestdoc_albaran1` FOREIGN KEY (`albaran_id`) REFERENCES `albaran` (`albaran_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_albaran_gestdoc_gestdoc1` FOREIGN KEY (`gestdoc_id`) REFERENCES `gestdoc` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `albaran_state` +-- + +DROP TABLE IF EXISTS `albaran_state`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `albaran_state` ( + `albaran_state_id` int(11) NOT NULL AUTO_INCREMENT, + `state` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`albaran_state_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `awb` +-- + +DROP TABLE IF EXISTS `awb`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `awb` ( + `id` smallint(11) unsigned NOT NULL AUTO_INCREMENT, + `codigo` varchar(18) COLLATE utf8_unicode_ci NOT NULL, + `bultos` float unsigned NOT NULL, + `peso` float unsigned DEFAULT NULL, + `MYSQL_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `transitario_id` int(11) NOT NULL DEFAULT '582', + `iva_id` tinyint(3) unsigned DEFAULT '62', + `duakk` varchar(18) COLLATE utf8_unicode_ci DEFAULT NULL, + `gestdoc_id` int(11) DEFAULT NULL, + `importe` double NOT NULL DEFAULT '0', + `carguera_id` int(11) DEFAULT NULL, + `m3` double unsigned DEFAULT NULL, + `stems` int(10) unsigned DEFAULT NULL, + `flight_id` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `volume_weight` float unsigned DEFAULT NULL, + `hb` decimal(10,1) unsigned DEFAULT NULL, + `rate` decimal(10,2) unsigned DEFAULT NULL, + `booked` datetime DEFAULT NULL, + `issued` datetime DEFAULT NULL, + `operated` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `codigo_UNIQUE` (`codigo`), + KEY `proveedor_id` (`transitario_id`), + KEY `iva_id` (`iva_id`), + KEY `carguera_id` (`carguera_id`), + KEY `flight_id` (`flight_id`), + CONSTRAINT `awb_ibfk_1` FOREIGN KEY (`iva_id`) REFERENCES `iva_codigo` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `awb_ai` AFTER INSERT ON `awb` FOR EACH ROW +BEGIN +DECLARE lastrecibida_id INT; +INSERT INTO recibida(proveedor_id,fecha,empresa_id) + VALUES(NEW.transitario_id,CURDATE(),442); + +SELECT last_insert_id() into lastrecibida_id; + +INSERT INTO awb_recibida(awb_id,recibida_id) + VALUES(NEW.id,lastrecibida_id); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`awb_au` AFTER UPDATE ON `awb` FOR EACH ROW +begin + +IF NEW.importe <> OLD.importe THEN + + CALL buy_tarifas_awb(NEW.codigo); + +END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `awb_component` +-- + +DROP TABLE IF EXISTS `awb_component`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `awb_component` ( + `awb_id` smallint(11) unsigned DEFAULT NULL, + `Id_Proveedor` int(11) NOT NULL, + `Fecha` date NOT NULL, + `awb_component_type_id` mediumint(3) unsigned DEFAULT NULL, + `awb_role_id` tinyint(1) unsigned NOT NULL DEFAULT '1', + `awb_unit_id` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `value` decimal(10,2) DEFAULT NULL, + `Id_Moneda` tinyint(3) unsigned NOT NULL DEFAULT '2', + `recibida_id` mediumint(8) unsigned DEFAULT NULL, + UNIQUE KEY `unique_idx` (`awb_id`,`Id_Proveedor`,`awb_component_type_id`,`Fecha`), + KEY `Id_Moneda` (`Id_Moneda`), + KEY `awb_component_fk` (`awb_component_type_id`), + KEY `awb_role_fk` (`awb_role_id`), + KEY `awb_unit_fk` (`awb_unit_id`), + CONSTRAINT `Id_Monedafk` FOREIGN KEY (`Id_Moneda`) REFERENCES `Monedas` (`Id_Moneda`) ON DELETE CASCADE, + CONSTRAINT `awb_component_` FOREIGN KEY (`awb_component_type_id`) REFERENCES `awb_component_type` (`awb_component_type_id`) ON UPDATE CASCADE, + CONSTRAINT `awb_role_fk` FOREIGN KEY (`awb_role_id`) REFERENCES `awb_role` (`awb_role_id`) ON UPDATE CASCADE, + CONSTRAINT `awb_unit_fk` FOREIGN KEY (`awb_unit_id`) REFERENCES `awb_unit` (`awb_unit_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `awb_component_template` +-- + +DROP TABLE IF EXISTS `awb_component_template`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `awb_component_template` ( + `awb_component_template_id` int(11) NOT NULL AUTO_INCREMENT, + `carguera_id` int(11) DEFAULT NULL, + `airport_in` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `airport_out` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `airline_id` smallint(2) unsigned DEFAULT NULL, + `awb_component_type_id` mediumint(3) unsigned NOT NULL, + `Fecha` date NOT NULL, + `awb_role_id` tinyint(1) unsigned NOT NULL, + `awb_unit_id` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `value` decimal(10,3) DEFAULT NULL, + `max_value` decimal(10,2) unsigned DEFAULT NULL, + `min_value` decimal(10,2) unsigned DEFAULT NULL, + `Id_Moneda` tinyint(3) unsigned NOT NULL DEFAULT '2', + PRIMARY KEY (`awb_component_template_id`), + UNIQUE KEY `carguera_id_UNIQUE` (`carguera_id`,`airport_in`,`airport_out`,`airline_id`,`awb_component_type_id`,`Fecha`), + KEY `Id_Moneda` (`Id_Moneda`), + KEY `airline_idx` (`airline_id`), + KEY `role_idx` (`awb_role_id`), + KEY `awb_unit_fk1` (`awb_unit_id`), + CONSTRAINT `Id_Moneda` FOREIGN KEY (`Id_Moneda`) REFERENCES `Monedas` (`Id_Moneda`) ON UPDATE CASCADE, + CONSTRAINT `awb_unit_fk1` FOREIGN KEY (`awb_unit_id`) REFERENCES `awb_unit` (`awb_unit_id`) ON UPDATE CASCADE, + CONSTRAINT `role_fk` FOREIGN KEY (`awb_role_id`) REFERENCES `awb_role` (`awb_role_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `awb_component_type` +-- + +DROP TABLE IF EXISTS `awb_component_type`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `awb_component_type` ( + `awb_component_type_id` mediumint(3) unsigned NOT NULL AUTO_INCREMENT, + `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`awb_component_type_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT=' '; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `awb_gestdoc` +-- + +DROP TABLE IF EXISTS `awb_gestdoc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `awb_gestdoc` ( + `awb_gestdoc_id` int(11) NOT NULL AUTO_INCREMENT, + `awb_id` smallint(11) unsigned NOT NULL, + `gestdoc_id` int(11) NOT NULL, + PRIMARY KEY (`awb_gestdoc_id`), + KEY `awb_gestdoc_awb_fk` (`awb_id`), + KEY `awb_gestdoc_gestdoc_fk` (`gestdoc_id`), + CONSTRAINT `awb_gestdoc_awb_fk` FOREIGN KEY (`awb_id`) REFERENCES `awb` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `awb_gestdoc_gestdoc_fk` FOREIGN KEY (`gestdoc_id`) REFERENCES `gestdoc` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `awb_recibida` +-- + +DROP TABLE IF EXISTS `awb_recibida`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `awb_recibida` ( + `awb_id` smallint(5) unsigned NOT NULL, + `recibida_id` mediumint(8) unsigned NOT NULL, + `dua` varchar(18) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`recibida_id`), + KEY `awb_id` (`awb_id`), + CONSTRAINT `awb_recibida_ibfk_1` FOREIGN KEY (`awb_id`) REFERENCES `awb` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `awb_recibida_ibfk_2` FOREIGN KEY (`recibida_id`) REFERENCES `recibida` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `awb_recibida_ad` AFTER DELETE ON `awb_recibida` FOR EACH ROW +IF (SELECT COUNT(*) FROM recibida_iva where recibida_id = OLD.recibida_id) = 0 + AND + (SELECT COUNT(*) FROM recibida_vencimiento where recibida_id = OLD.recibida_id) = 0 + AND + (SELECT contabilizada FROM recibida WHERE id = OLD.recibida_id) = 0 +THEN + DELETE FROM recibida WHERE id = OLD.recibida_id; +END IF */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `awb_role` +-- + +DROP TABLE IF EXISTS `awb_role`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `awb_role` ( + `awb_role_id` tinyint(1) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`awb_role_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT=' '; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `awb_unit` +-- + +DROP TABLE IF EXISTS `awb_unit`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `awb_unit` ( + `awb_unit_id` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `operation` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`awb_unit_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='tipos de unidades'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `awb_volume` +-- + +DROP TABLE IF EXISTS `awb_volume`; +/*!50001 DROP VIEW IF EXISTS `awb_volume`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `awb_volume` AS SELECT + 1 AS `awb_id`, + 1 AS `volume`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `balance_nest_tree` +-- + +DROP TABLE IF EXISTS `balance_nest_tree`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `balance_nest_tree` ( + `lft` int(11) DEFAULT NULL, + `rgt` int(11) DEFAULT NULL, + `name` text COLLATE utf8_unicode_ci, + `id` int(11) NOT NULL AUTO_INCREMENT, + `Id_Gasto` text COLLATE utf8_unicode_ci, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `barcodes` +-- + +DROP TABLE IF EXISTS `barcodes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `barcodes` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Id_Article` int(11) NOT NULL, + `code` varchar(22) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `code` (`code`), + UNIQUE KEY `Id_Article_2` (`Id_Article`,`code`), + KEY `Id_Article` (`Id_Article`), + CONSTRAINT `barcodes_ibfk_1` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `bionic_updating_options` +-- + +DROP TABLE IF EXISTS `bionic_updating_options`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `bionic_updating_options` ( + `buo_id` int(11) NOT NULL AUTO_INCREMENT, + `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`buo_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla pondremos las distintas opciones que se ofrecen al comecial o al cliente al cambiar alguno de los parametros básicos de un ticket'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `botanic_export` +-- + +DROP TABLE IF EXISTS `botanic_export`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `botanic_export` ( + `botanic_export_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `edi_genus_id` mediumint(8) unsigned NOT NULL, + `edi_specie_id` mediumint(8) unsigned DEFAULT NULL, + `Id_Paises` mediumint(8) unsigned DEFAULT NULL, + `restriction` enum('Sin restriccion','Importacion Prohibida','Se Requiere Certificado','pasaporte individual','declaracion origen') CHARACTER SET utf8 NOT NULL, + `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`botanic_export_id`), + KEY `Id_Paises` (`Id_Paises`), + CONSTRAINT `botanic_export_ibfk_1` FOREIGN KEY (`Id_Paises`) REFERENCES `Paises` (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Especifica los generos y especies prohibidos en paises'; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`botanic_exportBeforeInsert` BEFORE INSERT ON `botanic_export` FOR EACH ROW +BEGIN + IF (SELECT botanic_export_is_updatable (NEW.edi_genus_id, NEW.edi_specie_id, NEW.id_Paises, NEW.restriction) ) > 0 THEN + CALL util.throw ('Datos duplicados'); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `businessReasonEnd` +-- + +DROP TABLE IF EXISTS `businessReasonEnd`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `businessReasonEnd` ( + `id` tinyint(3) NOT NULL AUTO_INCREMENT, + `reason` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `business_labour_payrroll` +-- + +DROP TABLE IF EXISTS `business_labour_payrroll`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `business_labour_payrroll` ( + `business_id` int(11) NOT NULL, + `cod_tarifa` int(11) NOT NULL, + `cod_categoria` int(11) NOT NULL, + `cod_contrato` int(11) NOT NULL, + `importepactado` double NOT NULL DEFAULT '0', + PRIMARY KEY (`business_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `buy_edi` +-- + +DROP TABLE IF EXISTS `buy_edi`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `buy_edi` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `barcode` char(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `entry_year` smallint(5) unsigned NOT NULL, + `delivery_number` bigint(20) unsigned DEFAULT NULL, + `fec` date DEFAULT NULL, + `hor` time DEFAULT NULL, + `now` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `ptj` mediumint(8) unsigned DEFAULT NULL, + `ref` int(11) NOT NULL, + `item` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `pac` int(11) DEFAULT '0', + `qty` int(10) unsigned NOT NULL, + `ori` varchar(3) COLLATE utf8_unicode_ci DEFAULT 'NL', + `cat` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, + `agj` int(11) DEFAULT NULL, + `kop` int(11) DEFAULT NULL, + `ptd` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, + `sub` mediumint(8) unsigned DEFAULT NULL, + `pro` mediumint(8) unsigned NOT NULL, + `pri` double NOT NULL, + `package` int(10) unsigned DEFAULT NULL, + `auction` smallint(5) unsigned DEFAULT NULL, + `klo` smallint(5) unsigned DEFAULT NULL, + `k01` smallint(5) unsigned DEFAULT NULL, + `k02` smallint(5) unsigned DEFAULT NULL, + `k03` tinyint(3) unsigned DEFAULT NULL, + `k04` tinyint(3) unsigned DEFAULT NULL, + `s1` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `s2` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `s3` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `s4` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL, + `s5` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `s6` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `ok` tinyint(4) NOT NULL DEFAULT '0', + `trolley_id` int(11) DEFAULT NULL, + `scanned` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `barcode_year` (`barcode`,`entry_year`), + UNIQUE KEY `delivery_number` (`delivery_number`), + KEY `ref` (`ref`), + KEY `ptj` (`ptj`), + KEY `pro` (`pro`), + KEY `kop` (`kop`), + KEY `barcode` (`barcode`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `buy_edi_k012` +-- + +DROP TABLE IF EXISTS `buy_edi_k012`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `buy_edi_k012` ( + `buy_edi_k012_id` smallint(6) unsigned NOT NULL, + `description` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`buy_edi_k012_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Características negativas de los articulos de subasta'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `buy_edi_k03` +-- + +DROP TABLE IF EXISTS `buy_edi_k03`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `buy_edi_k03` ( + `buy_edi_k03_id` tinyint(3) unsigned NOT NULL, + `description` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`buy_edi_k03_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Características fitosanitarias de los articulos de subasta'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `buy_edi_k04` +-- + +DROP TABLE IF EXISTS `buy_edi_k04`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `buy_edi_k04` ( + `buy_edi_k04_id` tinyint(3) unsigned NOT NULL, + `description` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`buy_edi_k04_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Características calidad de los articulos de subasta'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `call_information` +-- + +DROP TABLE IF EXISTS `call_information`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `call_information` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `Descripcio` text COLLATE utf8_unicode_ci NOT NULL, + `Conclusio` tinyint(3) unsigned NOT NULL, + `Id_Cliente` int(11) NOT NULL, + `fecha` date NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `call_option` +-- + +DROP TABLE IF EXISTS `call_option`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `call_option` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `descripcion` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `callings` +-- + +DROP TABLE IF EXISTS `callings`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `callings` ( + `id` int(11) NOT NULL, + `motivo` varchar(105) COLLATE utf8_unicode_ci DEFAULT NULL, + `tel1` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `tel2` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `situacion` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `callingtasksKK` +-- + +DROP TABLE IF EXISTS `callingtasksKK`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `callingtasksKK` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `instruccion` varchar(99) COLLATE utf8_unicode_ci DEFAULT NULL, + `tel1` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `tel2` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `situacion` varchar(99) COLLATE utf8_unicode_ci DEFAULT NULL, + `closed` tinyint(1) DEFAULT '0', + `Id_Trabajador` tinyint(4) DEFAULT NULL, + `Id_Prioridad` tinyint(4) DEFAULT '2', + `selected` tinyint(4) DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `cdr` +-- + +DROP TABLE IF EXISTS `cdr`; +/*!50001 DROP VIEW IF EXISTS `cdr`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `cdr` AS SELECT + 1 AS `calldate`, + 1 AS `clid`, + 1 AS `src`, + 1 AS `dst`, + 1 AS `dcontext`, + 1 AS `channel`, + 1 AS `dstchannel`, + 1 AS `lastapp`, + 1 AS `lastdata`, + 1 AS `duration`, + 1 AS `billsec`, + 1 AS `disposition`, + 1 AS `amaflags`, + 1 AS `accountcode`, + 1 AS `uniqueid`, + 1 AS `userfield`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `chanel` +-- + +DROP TABLE IF EXISTS `chanel`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `chanel` ( + `chanel_id` smallint(6) NOT NULL AUTO_INCREMENT, + `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`chanel_id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Canal por el que nos ha conocido un cliente y se ha dado de'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `chat` +-- + +DROP TABLE IF EXISTS `chat`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `chat` ( + `chat_id` int(11) NOT NULL AUTO_INCREMENT, + `Id_Trabajador` int(11) NOT NULL, + `msg` varchar(254) COLLATE utf8_unicode_ci DEFAULT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`chat_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Para chatear los compradores, en el frmRESERVE de la COMPARATIVA'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `city` +-- + +DROP TABLE IF EXISTS `city`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `city` ( + `city_id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `province_id` smallint(6) unsigned DEFAULT NULL, + `nst_geo_id` int(11) DEFAULT NULL, + `nst_name` varchar(50) CHARACTER SET utf8 DEFAULT NULL, + PRIMARY KEY (`city_id`), + UNIQUE KEY `province_city_pk` (`province_id`,`name`), + KEY `NST_CITY_FK_idx` (`nst_geo_id`), + CONSTRAINT `nst_geo_city` FOREIGN KEY (`nst_geo_id`) REFERENCES `nst`.`geo` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `province_city_fk` FOREIGN KEY (`province_id`) REFERENCES `province` (`province_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`city_BEFORE_INSERT` BEFORE INSERT ON `city` FOR EACH ROW +BEGIN + +SET new.nst_name = new.`name`; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`city_AFTER_DELETE` AFTER DELETE ON `city` FOR EACH ROW +BEGIN + +CALL nst.del(OLD.nst_geo_id); + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `cl_act` +-- + +DROP TABLE IF EXISTS `cl_act`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_act` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Id_Movimiento` int(11) DEFAULT NULL, + `cl_main_id` int(10) unsigned NOT NULL, + `Id_Trabajador` int(11) NOT NULL DEFAULT '20', + `cl_sol_id` tinyint(4) DEFAULT NULL, + `greuge` tinyint(4) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `cl_main_id` (`cl_main_id`), + KEY `Id_Trabajador` (`Id_Trabajador`), + KEY `Id_Movimiento` (`Id_Movimiento`), + KEY `cl_sol_id` (`cl_sol_id`), + CONSTRAINT `cl_act_ibfk_1` FOREIGN KEY (`Id_Movimiento`) REFERENCES `Movimientos` (`Id_Movimiento`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `cl_act_ibfk_3` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, + CONSTRAINT `cl_act_ibfk_4` FOREIGN KEY (`cl_main_id`) REFERENCES `cl_main` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Acciones en respuesta a las reclamaciones'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cl_cau` +-- + +DROP TABLE IF EXISTS `cl_cau`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_cau` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `cl_main_id` int(10) unsigned NOT NULL, + `cl_res_id` int(10) unsigned NOT NULL DEFAULT '1', + `Id_Trabajador` int(11) NOT NULL DEFAULT '20', + `cl_mot_id` int(10) unsigned NOT NULL DEFAULT '1', + `cl_con_id` int(10) unsigned NOT NULL DEFAULT '1', + `cl_dev` tinyint(3) unsigned NOT NULL DEFAULT '1', + `cl_sol` tinyint(3) unsigned NOT NULL DEFAULT '2', + PRIMARY KEY (`id`), + KEY `cl_main_id` (`cl_main_id`), + KEY `cl_res_id` (`cl_res_id`), + KEY `Id_Trabajador` (`Id_Trabajador`), + KEY `cl_mot_id` (`cl_mot_id`), + KEY `cl_con_id` (`cl_con_id`), + KEY `cl_dev` (`cl_dev`), + KEY `cl_sol` (`cl_sol`), + CONSTRAINT `cl_cau_ibfk_10` FOREIGN KEY (`cl_main_id`) REFERENCES `cl_main` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `cl_cau_ibfk_11` FOREIGN KEY (`cl_dev`) REFERENCES `cl_dev` (`id`) ON UPDATE CASCADE, + CONSTRAINT `cl_cau_ibfk_12` FOREIGN KEY (`cl_sol`) REFERENCES `cl_sol` (`id`) ON UPDATE CASCADE, + CONSTRAINT `cl_cau_ibfk_6` FOREIGN KEY (`cl_res_id`) REFERENCES `cl_res` (`id`) ON UPDATE CASCADE, + CONSTRAINT `cl_cau_ibfk_7` FOREIGN KEY (`cl_mot_id`) REFERENCES `cl_mot` (`id`) ON UPDATE CASCADE, + CONSTRAINT `cl_cau_ibfk_8` FOREIGN KEY (`cl_con_id`) REFERENCES `cl_con` (`id`) ON UPDATE CASCADE, + CONSTRAINT `cl_cau_ibfk_9` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Causas de las reclamaciones'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cl_con` +-- + +DROP TABLE IF EXISTS `cl_con`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_con` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `consecuencia` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Consecuencias de los motivos'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cl_dep` +-- + +DROP TABLE IF EXISTS `cl_dep`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_dep` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `departamento` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Departamentos para las quejas'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cl_det` +-- + +DROP TABLE IF EXISTS `cl_det`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_det` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `cl_main_id` int(10) unsigned NOT NULL, + `Id_Movimiento` int(11) DEFAULT NULL, + `cl_que_id` int(10) unsigned NOT NULL DEFAULT '1', + `cl_pet_id` int(1) unsigned NOT NULL DEFAULT '1', + `numero` double DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `Id_Movimiento` (`Id_Movimiento`), + KEY `cl_pet_id` (`cl_pet_id`), + KEY `cl_que_id` (`cl_que_id`), + KEY `cl_main_id` (`cl_main_id`), + CONSTRAINT `cl_det_ibfk_5` FOREIGN KEY (`cl_que_id`) REFERENCES `cl_que` (`id`) ON UPDATE CASCADE, + CONSTRAINT `cl_det_ibfk_6` FOREIGN KEY (`cl_pet_id`) REFERENCES `cl_pet` (`id`) ON UPDATE CASCADE, + CONSTRAINT `cl_det_ibfk_7` FOREIGN KEY (`Id_Movimiento`) REFERENCES `Movimientos` (`Id_Movimiento`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `cl_det_ibfk_8` FOREIGN KEY (`cl_main_id`) REFERENCES `cl_main` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalle de las reclamaciones'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cl_dev` +-- + +DROP TABLE IF EXISTS `cl_dev`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_dev` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `devolucion` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Método por el cual el cliente nos devuelve la mercancía'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cl_est` +-- + +DROP TABLE IF EXISTS `cl_est`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_est` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `estado` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Estados posibles de las reclamaciones'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cl_main` +-- + +DROP TABLE IF EXISTS `cl_main`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_main` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Fecha` datetime NOT NULL, + `cl_dep_id` tinyint(3) unsigned DEFAULT NULL, + `cl_est_id` int(10) unsigned NOT NULL DEFAULT '1', + `notas` text COLLATE utf8_unicode_ci, + `Id_Cliente` int(11) NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `sensib` int(1) unsigned NOT NULL DEFAULT '3', + `mana` tinyint(1) NOT NULL DEFAULT '0', + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `cl_dep_id` (`cl_dep_id`), + KEY `cl_est_id` (`cl_est_id`), + KEY `Id_Cliente` (`Id_Cliente`), + KEY `Id_Trabajador` (`Id_Trabajador`), + CONSTRAINT `cl_main_ibfk_3` FOREIGN KEY (`cl_est_id`) REFERENCES `cl_est` (`id`) ON UPDATE CASCADE, + CONSTRAINT `cl_main_ibfk_4` FOREIGN KEY (`cl_dep_id`) REFERENCES `cl_dep` (`id`) ON UPDATE CASCADE, + CONSTRAINT `cl_main_ibfk_5` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Reclamaciones, tabla principal'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cl_mot` +-- + +DROP TABLE IF EXISTS `cl_mot`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_mot` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `motivo` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Motivos de las fallos'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cl_pet` +-- + +DROP TABLE IF EXISTS `cl_pet`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_pet` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `peticion` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Peticiones de los cliente en relacion a las quejas'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cl_que` +-- + +DROP TABLE IF EXISTS `cl_que`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_que` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `queja` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Queja por linea de las reclamaciones'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cl_res` +-- + +DROP TABLE IF EXISTS `cl_res`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_res` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `responsable` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `sensibility` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'if=1 >sensib >culpa', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Responsables de las causas'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cl_sol` +-- + +DROP TABLE IF EXISTS `cl_sol`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cl_sol` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `solucion` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Solucion ofrecida a la reclamación'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `clientMana` +-- + +DROP TABLE IF EXISTS `clientMana`; +/*!50001 DROP VIEW IF EXISTS `clientMana`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `clientMana` AS SELECT + 1 AS `Id_Cliente`, + 1 AS `ManaUnitario`, + 1 AS `ManaTotal`, + 1 AS `Id_Ticket`, + 1 AS `Id_Article`, + 1 AS `Concepte`, + 1 AS `Cantidad`, + 1 AS `Preu`, + 1 AS `Fecha`, + 1 AS `Id_Movimiento`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `client_observation` +-- + +DROP TABLE IF EXISTS `client_observation`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `client_observation` ( + `client_observation_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `Id_Cliente` int(11) NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `text` text COLLATE utf8_unicode_ci NOT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`client_observation_id`), + KEY `Id_Trabajador` (`Id_Trabajador`), + KEY `Id_Cliente` (`Id_Cliente`), + CONSTRAINT `client_observation_ibfk_1` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `client_observation_ibfk_2` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Todas las observaciones referentes a un ticket'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `clientes_gestdoc` +-- + +DROP TABLE IF EXISTS `clientes_gestdoc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `clientes_gestdoc` ( + `Id_Cliente` int(11) NOT NULL, + `gest_doc_id` int(11) NOT NULL, + PRIMARY KEY (`Id_Cliente`,`gest_doc_id`), + KEY `gest_doc_id` (`gest_doc_id`), + CONSTRAINT `clientes_gestdoc_ibfk_2` FOREIGN KEY (`gest_doc_id`) REFERENCES `gestdoc` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `clientes_gestdoc_ibfk_3` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `clientes_regalos_enc` +-- + +DROP TABLE IF EXISTS `clientes_regalos_enc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `clientes_regalos_enc` ( + `Id_Cliente` int(11) NOT NULL, + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Regalo` int(11) NOT NULL, + PRIMARY KEY (`Id_Cliente`,`Id_Regalo`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `clientes_regalos_lista_enc` +-- + +DROP TABLE IF EXISTS `clientes_regalos_lista_enc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `clientes_regalos_lista_enc` ( + `Id_Regalo` int(11) NOT NULL AUTO_INCREMENT, + `Descripcion` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `Activo` bit(1) NOT NULL DEFAULT b'0', + `foto` blob, + `datstart` date DEFAULT NULL, + `datend` date DEFAULT NULL, + `warehouse_id` smallint(6) unsigned DEFAULT '1', + `province_id` smallint(5) unsigned DEFAULT NULL, + PRIMARY KEY (`Id_Regalo`) +) ENGINE=MyISAM AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `clientes_tipo` +-- + +DROP TABLE IF EXISTS `clientes_tipo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `clientes_tipo` ( + `clientes_tipo_id` int(11) NOT NULL AUTO_INCREMENT, + `code` varchar(20) CHARACTER SET utf8 NOT NULL, + `tipo` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`clientes_tipo_id`), + UNIQUE KEY `code_UNIQUE` (`code`) +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Establece categorias para poder agrupar las ventas'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `commission` +-- + +DROP TABLE IF EXISTS `commission`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `commission` ( + `commisision_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `percentage` tinyint(3) unsigned NOT NULL, + `value` float unsigned NOT NULL, + PRIMARY KEY (`commisision_id`) +) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `config` +-- + +DROP TABLE IF EXISTS `config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `config` ( + `id` int(11) NOT NULL, + `generic_item` int(11) NOT NULL COMMENT 'Id del artículo genérico', + `edi_entry` int(11) NOT NULL COMMENT 'Entrada usada para los EKTs', + `lastMana` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `config_host` +-- + +DROP TABLE IF EXISTS `config_host`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `config_host` ( + `config_host_id` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `warehouse` smallint(6) unsigned NOT NULL DEFAULT '1', + `empresa_id` smallint(6) unsigned NOT NULL DEFAULT '442', + `caja` int(11) DEFAULT '13', + `Id_Impresora` tinyint(3) unsigned DEFAULT '27', + `Permanente` tinyint(1) unsigned DEFAULT '1', + `route_days_before` smallint(6) DEFAULT '2', + `route_days_after` smallint(6) DEFAULT '1', + PRIMARY KEY (`config_host_id`), + KEY `warehouse` (`warehouse`), + KEY `empresa_id` (`empresa_id`), + KEY `caja` (`caja`), + KEY `Id_Impresora` (`Id_Impresora`), + CONSTRAINT `config_host_ibfk_1` FOREIGN KEY (`caja`) REFERENCES `Bancos` (`Id_Banco`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `config_host_ibfk_2` FOREIGN KEY (`warehouse`) REFERENCES `warehouse` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `config_host_ibfk_3` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `config_host_ibfk_4` FOREIGN KEY (`Id_Impresora`) REFERENCES `Impresoras` (`Id_Impresora`) ON DELETE NO ACTION ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Sustituye al antiguo TPV_Settings'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `config_host_forms` +-- + +DROP TABLE IF EXISTS `config_host_forms`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `config_host_forms` ( + `config_host_id` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `formname` varchar(56) COLLATE utf8_unicode_ci NOT NULL, + `x` int(8) NOT NULL, + `y` int(8) NOT NULL, + `h` int(8) NOT NULL, + `l` int(8) NOT NULL, + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`config_host_id`,`formname`), + CONSTRAINT `config_host_form_ibfk_1` FOREIGN KEY (`config_host_id`) REFERENCES `config_host` (`config_host_id`) ON DELETE NO ACTION ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Registra las posiciones de los formularios'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `consignatarios_observation` +-- + +DROP TABLE IF EXISTS `consignatarios_observation`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `consignatarios_observation` ( + `consignatarios_observation_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `Id_Consigna` int(11) NOT NULL, + `observation_type_id` tinyint(3) unsigned NOT NULL, + `text` text COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`consignatarios_observation_id`), + UNIQUE KEY `Id_Consigna` (`Id_Consigna`,`observation_type_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Observaciones de los consignatarios'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `container` +-- + +DROP TABLE IF EXISTS `container`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `container` ( + `container_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `Continente` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`container_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cooler_path` +-- + +DROP TABLE IF EXISTS `cooler_path`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cooler_path` ( + `cooler_path_id` int(11) NOT NULL AUTO_INCREMENT, + `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`cooler_path_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Define el orden en que se imprimen los F5'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cooler_path_detail` +-- + +DROP TABLE IF EXISTS `cooler_path_detail`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cooler_path_detail` ( + `cooler_path_detail_id` int(11) NOT NULL AUTO_INCREMENT, + `cooler_path_id` int(11) NOT NULL DEFAULT '1', + `pasillo` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`cooler_path_id`,`pasillo`), + UNIQUE KEY `cooler_path_detail_id_UNIQUE` (`cooler_path_detail_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cp` +-- + +DROP TABLE IF EXISTS `cp`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cp` ( + `cp_id` int(11) NOT NULL AUTO_INCREMENT, + `cpd` int(11) NOT NULL, + `cph` int(11) NOT NULL, + `zone_id` smallint(6) DEFAULT NULL, + `town` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`cp_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relacio de codis postals i el municipi al qual se asigna'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `credit` +-- + +DROP TABLE IF EXISTS `credit`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `credit` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `Id_Cliente` int(11) NOT NULL, + `amount` double unsigned NOT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Trabajador` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `workers_fk_idx` (`Id_Trabajador`), + CONSTRAINT `workers_fk` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `credit_card` +-- + +DROP TABLE IF EXISTS `credit_card`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `credit_card` ( + `credit_card_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `Id_Cliente` int(10) NOT NULL, + `number` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `expiration_month` tinyint(2) unsigned zerofill NOT NULL, + `expiration_year` tinyint(2) unsigned zerofill NOT NULL, + `priority` tinyint(3) unsigned NOT NULL DEFAULT '1', + `obs` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`credit_card_id`), + KEY `Id_Cliente` (`Id_Cliente`), + CONSTRAINT `credit_card_ibfk_1` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cyc` +-- + +DROP TABLE IF EXISTS `cyc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cyc` ( + `Id_Cliente` int(11) NOT NULL, + `Riesgo` double DEFAULT NULL, + `Fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `cyc_id` int(11) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`cyc_id`), + KEY `Cliente` (`Id_Cliente`), + CONSTRAINT `Cliente` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalla los clientes que estan clasificados en Credito y Cau'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cyc_declaration` +-- + +DROP TABLE IF EXISTS `cyc_declaration`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cyc_declaration` ( + `factura_id` int(10) unsigned NOT NULL, + `Riesgo` double DEFAULT NULL, + `Fecha` date NOT NULL, + `Vencimiento` int(10) NOT NULL DEFAULT '0', + PRIMARY KEY (`factura_id`), + CONSTRAINT `Factura` FOREIGN KEY (`factura_id`) REFERENCES `Facturas` (`factura_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Registro de las facturas declaradas a cyc'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `daily_task_log` +-- + +DROP TABLE IF EXISTS `daily_task_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `daily_task_log` ( + `consulta` varchar(250) COLLATE utf8_unicode_ci NOT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='No he encontrado el lugar en el que vicente almacena la hora en que se ejecutan las daily tasks, asi que he hecho esta tabla, a eliminar cuando se considere oportuno'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `definitivo` +-- + +DROP TABLE IF EXISTS `definitivo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `definitivo` ( + `definitivo_id` int(11) NOT NULL, + `empresa_id` int(11) NOT NULL, + `desde` bigint(20) NOT NULL, + `hasta` bigint(20) NOT NULL, + `fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`definitivo_id`,`empresa_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `department` +-- + +DROP TABLE IF EXISTS `department`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `department` ( + `department_id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `lft` int(11) NOT NULL, + `rgt` int(11) NOT NULL, + `Id_Trabajador` int(11) DEFAULT NULL COMMENT 'Id_Trabajador es el jefe del departamento', + PRIMARY KEY (`department_id`), + UNIQUE KEY `lft_UNIQUE` (`lft`), + UNIQUE KEY `rgt_UNIQUE` (`rgt`), + UNIQUE KEY `name_UNIQUE` (`name`), + KEY `fk_department_Trabajadores1_idx` (`Id_Trabajador`), + CONSTRAINT `fk_department_Trabajadores1` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `device` +-- + +DROP TABLE IF EXISTS `device`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `device` ( + `device_id` int(11) NOT NULL AUTO_INCREMENT, + `sn` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `model` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`device_id`), + UNIQUE KEY `device_id_UNIQUE` (`device_id`), + UNIQUE KEY `sn_UNIQUE` (`sn`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `device_user` +-- + +DROP TABLE IF EXISTS `device_user`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `device_user` ( + `device_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + PRIMARY KEY (`device_id`,`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `dhl` +-- + +DROP TABLE IF EXISTS `dhl`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `dhl` ( + `codigo_postal` mediumint(8) unsigned NOT NULL, + `frecuencia` tinyint(3) unsigned NOT NULL, + PRIMARY KEY (`codigo_postal`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `duaDismissed` +-- + +DROP TABLE IF EXISTS `duaDismissed`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `duaDismissed` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `ticketFk` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`,`ticketFk`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `edi_article` +-- + +DROP TABLE IF EXISTS `edi_article`; +/*!50001 DROP VIEW IF EXISTS `edi_article`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `edi_article` AS SELECT + 1 AS `id`, + 1 AS `product_name`, + 1 AS `name`, + 1 AS `plant_id`, + 1 AS `group_id`, + 1 AS `entry_date`, + 1 AS `expiry_date`, + 1 AS `change_date_time`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `edi_bucket` +-- + +DROP TABLE IF EXISTS `edi_bucket`; +/*!50001 DROP VIEW IF EXISTS `edi_bucket`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `edi_bucket` AS SELECT + 1 AS `bucket_id`, + 1 AS `bucket_type_id`, + 1 AS `description`, + 1 AS `x_size`, + 1 AS `y_size`, + 1 AS `z_size`, + 1 AS `entry_date`, + 1 AS `expiry_date`, + 1 AS `change_date_time`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `edi_bucket_type` +-- + +DROP TABLE IF EXISTS `edi_bucket_type`; +/*!50001 DROP VIEW IF EXISTS `edi_bucket_type`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `edi_bucket_type` AS SELECT + 1 AS `bucket_type_id`, + 1 AS `description`, + 1 AS `entry_date`, + 1 AS `expiry_date`, + 1 AS `change_date_time`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `edi_feature` +-- + +DROP TABLE IF EXISTS `edi_feature`; +/*!50001 DROP VIEW IF EXISTS `edi_feature`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `edi_feature` AS SELECT + 1 AS `item_id`, + 1 AS `feature_type_id`, + 1 AS `feature_value`, + 1 AS `entry_date`, + 1 AS `expiry_date`, + 1 AS `change_date_time`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `edi_genus` +-- + +DROP TABLE IF EXISTS `edi_genus`; +/*!50001 DROP VIEW IF EXISTS `edi_genus`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `edi_genus` AS SELECT + 1 AS `genus_id`, + 1 AS `latin_genus_name`, + 1 AS `entry_date`, + 1 AS `expiry_date`, + 1 AS `change_date_time`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `edi_item_feature` +-- + +DROP TABLE IF EXISTS `edi_item_feature`; +/*!50001 DROP VIEW IF EXISTS `edi_item_feature`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `edi_item_feature` AS SELECT + 1 AS `item_id`, + 1 AS `presentation_order`, + 1 AS `feature`, + 1 AS `regulation_type`, + 1 AS `entry_date`, + 1 AS `expiry_date`, + 1 AS `change_date_time`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `edi_plant` +-- + +DROP TABLE IF EXISTS `edi_plant`; +/*!50001 DROP VIEW IF EXISTS `edi_plant`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `edi_plant` AS SELECT + 1 AS `plant_id`, + 1 AS `genus_id`, + 1 AS `specie_id`, + 1 AS `entry_date`, + 1 AS `expiry_date`, + 1 AS `change_date_time`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `edi_specie` +-- + +DROP TABLE IF EXISTS `edi_specie`; +/*!50001 DROP VIEW IF EXISTS `edi_specie`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `edi_specie` AS SELECT + 1 AS `specie_id`, + 1 AS `genus_id`, + 1 AS `latin_species_name`, + 1 AS `entry_date`, + 1 AS `expiry_date`, + 1 AS `change_date_time`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `edi_supplier` +-- + +DROP TABLE IF EXISTS `edi_supplier`; +/*!50001 DROP VIEW IF EXISTS `edi_supplier`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `edi_supplier` AS SELECT + 1 AS `supplier_id`, + 1 AS `company_name`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `edi_testigos` +-- + +DROP TABLE IF EXISTS `edi_testigos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `edi_testigos` ( + `id` smallint(6) NOT NULL AUTO_INCREMENT, + `table` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + `field` varchar(32) COLLATE utf8_unicode_ci NOT NULL, + `testigo` varchar(5) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `edi_type` +-- + +DROP TABLE IF EXISTS `edi_type`; +/*!50001 DROP VIEW IF EXISTS `edi_type`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `edi_type` AS SELECT + 1 AS `type_id`, + 1 AS `type_group_id`, + 1 AS `description`, + 1 AS `entry_date`, + 1 AS `expiry_date`, + 1 AS `change_date_time`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `edi_value` +-- + +DROP TABLE IF EXISTS `edi_value`; +/*!50001 DROP VIEW IF EXISTS `edi_value`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `edi_value` AS SELECT + 1 AS `type_id`, + 1 AS `type_value`, + 1 AS `type_description`, + 1 AS `entry_date`, + 1 AS `expiry_date`, + 1 AS `change_date_time`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `emp_day_pay` +-- + +DROP TABLE IF EXISTS `emp_day_pay`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `emp_day_pay` ( + `id` smallint(5) unsigned NOT NULL, + `emp_day_pay` tinyint(3) unsigned NOT NULL, + PRIMARY KEY (`id`,`emp_day_pay`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `empresa` +-- + +DROP TABLE IF EXISTS `empresa`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `empresa` ( + `id` smallint(5) unsigned NOT NULL, + `abbreviation` char(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `registro` varchar(120) COLLATE utf8_unicode_ci NOT NULL, + `gerente_id` int(11) NOT NULL, + `alta` date NOT NULL, + `baja` date DEFAULT NULL, + `logo` longblob, + `oficial` tinyint(1) unsigned NOT NULL DEFAULT '1', + `cyc` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0', + `rgb` varchar(6) COLLATE utf8_unicode_ci NOT NULL, + `mail` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `cuno` blob, + `ODBC_DATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP, + `Id_Cliente` int(11) DEFAULT NULL, + `digito_factura` int(2) DEFAULT NULL, + `Id_Proveedores_account` mediumint(8) unsigned DEFAULT NULL, + `morosidad` tinyint(4) NOT NULL DEFAULT '0', + `empresa_grupo` int(11) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + KEY `gerente_id` (`gerente_id`), + KEY `empresa_cliente_idx` (`Id_Cliente`), + KEY `Id_Proveedores_account` (`Id_Proveedores_account`), + KEY `empresa_grupo_fk_idx` (`empresa_grupo`), + CONSTRAINT `empresa_cliente` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `empresa_ibfk_1` FOREIGN KEY (`gerente_id`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, + CONSTRAINT `fk_empresa_grupo` FOREIGN KEY (`empresa_grupo`) REFERENCES `empresa_grupo` (`empresa_grupo_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `empresa_grupo` +-- + +DROP TABLE IF EXISTS `empresa_grupo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `empresa_grupo` ( + `empresa_grupo_id` int(11) NOT NULL AUTO_INCREMENT, + `grupo` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`empresa_grupo_id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `entity` +-- + +DROP TABLE IF EXISTS `entity`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `entity` ( + `pais_id` mediumint(8) unsigned NOT NULL DEFAULT '1', + `entity_id` int(10) unsigned NOT NULL, + `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `bic` varchar(11) CHARACTER SET utf8 DEFAULT NULL, + PRIMARY KEY (`entity_id`), + UNIQUE KEY `entity_id_UNIQUE` (`entity_id`), + UNIQUE KEY `bic_UNIQUE` (`bic`), + KEY `fg_entity1_idx` (`pais_id`), + CONSTRAINT `fg_entity1` FOREIGN KEY (`pais_id`) REFERENCES `Paises` (`Id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Entidades bancarias '; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `escritos` +-- + +DROP TABLE IF EXISTS `escritos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `escritos` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `abrev` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `descripcion` varchar(105) COLLATE utf8_unicode_ci NOT NULL, + `visible` tinyint(4) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `escritos_det` +-- + +DROP TABLE IF EXISTS `escritos_det`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `escritos_det` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Id_Cliente` int(10) unsigned NOT NULL, + `escritos_id` int(10) unsigned NOT NULL, + `fecha` datetime NOT NULL, + `Id_Trabajador` int(10) unsigned NOT NULL, + `Saldo` float NOT NULL, + `empresa_id` smallint(5) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `empresa_id` (`empresa_id`), + CONSTRAINT `escritos_det_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `expeditions` +-- + +DROP TABLE IF EXISTS `expeditions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `expeditions` ( + `expeditions_id` int(11) NOT NULL AUTO_INCREMENT, + `agency_id` int(11) NOT NULL, + `ticket_id` int(10) NOT NULL, + `EsBulto` int(11) DEFAULT '1', + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `reembolso` bit(1) DEFAULT b'0', + `recogida` bit(1) DEFAULT b'0', + `Id_Article` int(11) DEFAULT NULL, + `counter` smallint(5) unsigned NOT NULL, + `checked` tinyint(4) NOT NULL DEFAULT '0', + `workerFk` int(11) DEFAULT NULL, + PRIMARY KEY (`expeditions_id`), + KEY `index1` (`agency_id`), + KEY `index2` (`EsBulto`), + KEY `index3` (`odbc_date`), + KEY `index4` (`ticket_id`), + CONSTRAINT `Id_Agencia` FOREIGN KEY (`agency_id`) REFERENCES `Agencias` (`Id_Agencia`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `expeditionsBeforeInsert` +BEFORE INSERT ON `expeditions` FOR EACH ROW +-- Edit trigger body code below this line. Do not edit lines above this one +BEGIN + DECLARE intcounter INT; + + IF NEW.EsBulto > 0 THEN + + UPDATE Tickets SET Bultos = nz(Bultos) + 1 WHERE Id_Ticket = NEW.ticket_id; + SELECT IFNULL(MAX(counter),0) +1 INTO intcounter FROM expeditions e + INNER JOIN Tickets t1 ON e.ticket_id = t1.Id_Ticket + LEFT JOIN vn.ticketState ts ON ts.ticket = t1.Id_Ticket + INNER JOIN Tickets t2 ON t2.Id_Consigna = t1.Id_Consigna AND DATE(t2.Fecha) = DATE(t1.Fecha) AND t1.warehouse_id = t2.warehouse_id + WHERE t2.Id_Ticket = NEW.ticket_id AND ts.alertLevel < 3 AND t1.empresa_id = t2.empresa_id AND t1.Id_Agencia = t2.Id_Agencia; + SET NEW.`counter` = intcounter; + END IF; + SET NEW.workerFk=get_Trabajador(); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`expeditionsBeforeUpdate` +BEFORE UPDATE ON `vn2008`.`expeditions` +FOR EACH ROW +-- Edit trigger body code below this line. Do not edit lines above this one +BEGIN + IF NEW.counter <> OLD.counter THEN + IF (SELECT COUNT(*) FROM expeditions e + INNER JOIN Tickets t1 ON e.ticket_id = t1.Id_Ticket + INNER JOIN Tickets t2 ON t2.Id_Consigna = t1.Id_Consigna AND DATE(t2.Fecha) = DATE(t1.Fecha) + WHERE t1.Id_Ticket = NEW.ticket_id AND counter = NEW.counter) > 0 THEN + SET NEW.expeditions_id = NULL; + END IF; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`expeditionsAfterUpdate` +AFTER UPDATE ON `expeditions` FOR EACH ROW +BEGIN + CALL cache.barcodes_expeditions_update(NEW.expeditions_id); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`expeditionsBeforeDelete` +BEFORE DELETE ON `expeditions` FOR EACH ROW +BEGIN + DECLARE trabajador integer DEFAULT NULL; + + + SELECT Id_Trabajador into trabajador from Trabajadores where user_id = account.userGetId(); + if trabajador is null then + SET trabajador = 33; + end if; + UPDATE Tickets SET Bultos = (SELECT COUNT(counter)-1 FROM expeditions WHERE ticket_id = OLD.ticket_id and EsBulto) WHERE Id_Ticket = OLD.ticket_id; + + INSERT INTO Tickets_dits (idaccion_dits,Id_Trabajador,Id_Ticket,value_old,value_new) + SELECT 133/*Borra expedition*/ ,trabajador,OLD.ticket_id,CONCAT(OLD.odbc_date,',Bultos:',OLD.counter,',Embalaje:',OLD.EsBulto),user() + FROM Tickets + WHERE Id_Ticket = OLD.ticket_id ; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `expeditions_deleted` +-- + +DROP TABLE IF EXISTS `expeditions_deleted`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `expeditions_deleted` ( + `expeditions_id` int(11) NOT NULL AUTO_INCREMENT, + `agency_id` int(11) NOT NULL, + `ticket_id` int(10) NOT NULL, + `EsBulto` int(11) DEFAULT '1', + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `reembolso` bit(1) DEFAULT b'0', + `recogida` bit(1) DEFAULT b'0', + `Id_Article` int(11) DEFAULT NULL, + `counter` smallint(5) unsigned NOT NULL, + `checked` tinyint(4) NOT NULL DEFAULT '0', + `completed` tinyint(4) DEFAULT '0', + `expedicion` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `Id_Trabajador` int(11) DEFAULT NULL, + PRIMARY KEY (`expeditions_id`), + KEY `index1` (`agency_id`), + KEY `index2` (`EsBulto`), + KEY `index3` (`odbc_date`), + KEY `index4` (`ticket_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `expeditions_pictures` +-- + +DROP TABLE IF EXISTS `expeditions_pictures`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `expeditions_pictures` ( + `Id_Article` int(11) NOT NULL, + `NoImprimirEtiqueta` bit(1) DEFAULT b'0', + PRIMARY KEY (`Id_Article`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `filtros` +-- + +DROP TABLE IF EXISTS `filtros`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `filtros` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `sql` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `Estanteria` tinyint(1) DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `financialProductType` +-- + +DROP TABLE IF EXISTS `financialProductType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `financialProductType` ( + `id` varchar(2) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `description_UNIQUE` (`description`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Distintos tipos de productos financieros: seguros de cambio, polizas de credito, acumuladores....'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `flight` +-- + +DROP TABLE IF EXISTS `flight`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `flight` ( + `flight_id` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `duration` tinyint(2) unsigned DEFAULT NULL, + `route` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `days` varchar(7) COLLATE utf8_unicode_ci DEFAULT NULL, + `airline_id` smallint(2) unsigned DEFAULT NULL, + `airport_out` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `airport_in` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`flight_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `form_query` +-- + +DROP TABLE IF EXISTS `form_query`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `form_query` ( + `form_query_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `query` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `response1` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `response2` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `type_id` enum('gest_doc') COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`form_query_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `gastos_resumen` +-- + +DROP TABLE IF EXISTS `gastos_resumen`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `gastos_resumen` ( + `Id_Gasto` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `year` int(4) NOT NULL, + `month` int(2) NOT NULL, + `importe` decimal(10,2) DEFAULT NULL, + `empresa_id` int(11) NOT NULL, + PRIMARY KEY (`Id_Gasto`,`year`,`month`,`empresa_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Sirve para resumir los gastos que se ponen a mano en el contaplus'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `gestdoc` +-- + +DROP TABLE IF EXISTS `gestdoc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `gestdoc` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `gesttip_id` int(11) NOT NULL DEFAULT '1', + `sref` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `brief` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL, + `emp_id` smallint(5) unsigned NOT NULL DEFAULT '791', + `orden` mediumint(8) unsigned DEFAULT NULL, + `file` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `original` tinyint(4) NOT NULL DEFAULT '0', + `trabajador_id` int(11) NOT NULL, + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `gestdoccol` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `warehouse_id` smallint(5) unsigned NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `emp_id` (`emp_id`,`orden`,`warehouse_id`), + KEY `trabajador_id` (`trabajador_id`), + KEY `warehouse_id` (`warehouse_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`gestdoc_bi` +BEFORE INSERT ON `vn2008`.`gestdoc` +FOR EACH ROW +BEGIN + + DECLARE intORD int; + IF NEW.warehouse_id = 44 THEN + SET NEW.warehouse_id = 1; + END IF; + IF NEW.original THEN + SELECT 1 + MAX(orden) INTO intORD FROM gestdoc WHERE emp_id = NEW.emp_id AND warehouse_id = NEW.warehouse_id ; + + SET NEW.orden = IFNULL(intORD,1) ; + END IF; +-- Marca Firmado a uno cada vez que se escanea un Ticket de forma que desaparezca del TNAC JGF 27/08/13 + IF NEW.gesttip_id = 14 THEN + UPDATE Tickets SET Firmado = 1 WHERE Id_Ticket = NEW.sref; + END IF; + END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`gestdoc_bu` +BEFORE UPDATE ON `vn2008`.`gestdoc` +FOR EACH ROW +BEGIN + + DECLARE intORD int; + IF (NEW.original <> 0) AND (OLD.original = 0) AND (NEW.orden IS NULL) THEN + + SELECT 1 + MAX(orden) INTO intORD FROM gestdoc WHERE emp_id = NEW.emp_id AND warehouse_id = NEW.warehouse_id; + SET NEW.orden = IFNULL(intORD,1); + + END IF; +IF ((NEW.orden = 0) OR NEW.orden IS NULL) AND (OLD.orden <> 0) THEN + + SET NEW.original = 0; + END IF; + END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `gesttip` +-- + +DROP TABLE IF EXISTS `gesttip`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `gesttip` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `tipo` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `path` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `guillen` +-- + +DROP TABLE IF EXISTS `guillen`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `guillen` ( + `bulto` tinyint(3) unsigned NOT NULL, + `1` float unsigned NOT NULL, + `2` float unsigned NOT NULL, + `re_exp` float unsigned NOT NULL, + PRIMARY KEY (`bulto`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `guillen_carry` +-- + +DROP TABLE IF EXISTS `guillen_carry`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `guillen_carry` ( + `carry` tinyint(3) unsigned NOT NULL, + `1` float unsigned NOT NULL, + `2` float unsigned NOT NULL, + `re_exp` float unsigned NOT NULL, + PRIMARY KEY (`carry`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `integra2` +-- + +DROP TABLE IF EXISTS `integra2`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `integra2` ( + `postal_code` mediumint(8) unsigned NOT NULL, + `frequency` tinyint(3) unsigned NOT NULL, + `warehouse_id` smallint(5) unsigned NOT NULL, + PRIMARY KEY (`postal_code`,`frequency`,`warehouse_id`), + KEY `postal_code` (`postal_code`), + KEY `warehouse_id` (`warehouse_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `integra2_escala` +-- + +DROP TABLE IF EXISTS `integra2_escala`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `integra2_escala` ( + `province_id` smallint(6) unsigned NOT NULL, + `warehouse_id` smallint(6) unsigned NOT NULL, + PRIMARY KEY (`province_id`,`warehouse_id`), + KEY `warehouse_escala_idx` (`warehouse_id`), + CONSTRAINT `province_escala` FOREIGN KEY (`province_id`) REFERENCES `province` (`province_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `warehouse_escala` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `integra2_province` +-- + +DROP TABLE IF EXISTS `integra2_province`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `integra2_province` ( + `province_id` smallint(6) unsigned NOT NULL, + `franquicia` varchar(65) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`province_id`), + CONSTRAINT `integra2_province_id` FOREIGN KEY (`province_id`) REFERENCES `province` (`province_id`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `intervalos` +-- + +DROP TABLE IF EXISTS `intervalos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `intervalos` ( + `id` int(11) NOT NULL, + `hour` time NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `intrastat_data` +-- + +DROP TABLE IF EXISTS `intrastat_data`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `intrastat_data` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `recibida_id` mediumint(8) unsigned NOT NULL, + `neto` decimal(10,2) DEFAULT NULL, + `intrastat_id` int(8) unsigned zerofill NOT NULL DEFAULT '06049190', + `importe` double NOT NULL, + `unidades` int(11) NOT NULL, + `Paises_Id` mediumint(8) unsigned DEFAULT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `valorestadistico` double NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `intrastat_id` (`intrastat_id`), + KEY `recibida` (`recibida_id`), + CONSTRAINT `intrastat_data_ibfk_1` FOREIGN KEY (`intrastat_id`) REFERENCES `Intrastat` (`Codintrastat`) ON UPDATE CASCADE, + CONSTRAINT `intrastat_data_ibfk_2` FOREIGN KEY (`recibida_id`) REFERENCES `recibida` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `invoiceCorrection` +-- + +DROP TABLE IF EXISTS `invoiceCorrection`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `invoiceCorrection` ( + `correctingFk` int(10) unsigned NOT NULL COMMENT 'Factura rectificativa', + `correctedFk` int(10) unsigned NOT NULL COMMENT 'Factura rectificada', + `cplusRectificationTypeFk` int(10) unsigned NOT NULL, + `cplusInvoiceType477Fk` int(10) unsigned NOT NULL, + `invoiceCorrectionTypeFk` int(11) NOT NULL DEFAULT '3', + PRIMARY KEY (`correctingFk`), + KEY `correctedFk_idx` (`correctedFk`), + KEY `invoiceCorrection_ibfk_1_idx` (`cplusRectificationTypeFk`), + KEY `cplusInvoiceTyoeFk_idx` (`cplusInvoiceType477Fk`), + KEY `invoiceCorrectionTypeFk_idx` (`invoiceCorrectionTypeFk`), + CONSTRAINT `corrected_fk` FOREIGN KEY (`correctedFk`) REFERENCES `Facturas` (`factura_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `correcting_fk` FOREIGN KEY (`correctingFk`) REFERENCES `Facturas` (`factura_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `cplusInvoiceTyoeFk` FOREIGN KEY (`cplusInvoiceType477Fk`) REFERENCES `vn`.`cplusInvoiceType477` (`id`) ON UPDATE CASCADE, + CONSTRAINT `invoiceCorrectionType_Fk33` FOREIGN KEY (`invoiceCorrectionTypeFk`) REFERENCES `vn`.`invoiceCorrectionType` (`id`) ON UPDATE CASCADE, + CONSTRAINT `invoiceCorrection_ibfk_1` FOREIGN KEY (`cplusRectificationTypeFk`) REFERENCES `vn`.`cplusRectificationType` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relacion entre las facturas rectificativas y las rectificadas.'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `invoice_observation` +-- + +DROP TABLE IF EXISTS `invoice_observation`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `invoice_observation` ( + `invoice_observation_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `desde` date NOT NULL, + `hasta` date NOT NULL, + `serie` varchar(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '0', + `text` text COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`invoice_observation_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `itemTag` +-- + +DROP TABLE IF EXISTS `itemTag`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `itemTag` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `itemFk` int(11) NOT NULL, + `tagFk` int(11) NOT NULL, + `value` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `priority` int(2) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `tag_fk_idx` (`tagFk`), + KEY `priorityItem` (`itemFk`,`priority`), + CONSTRAINT `itemFK` FOREIGN KEY (`itemFk`) REFERENCES `Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `itemTagArranged` +-- + +DROP TABLE IF EXISTS `itemTagArranged`; +/*!50001 DROP VIEW IF EXISTS `itemTagArranged`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `itemTagArranged` AS SELECT + 1 AS `itemFk`, + 1 AS `tag1`, + 1 AS `val1`, + 1 AS `tag2`, + 1 AS `val2`, + 1 AS `tag3`, + 1 AS `val3`, + 1 AS `tag4`, + 1 AS `val4`, + 1 AS `tag5`, + 1 AS `val5`, + 1 AS `tag6`, + 1 AS `val6`, + 1 AS `description`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `item_catalog` +-- + +DROP TABLE IF EXISTS `item_catalog`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `item_catalog` ( + `item_id` int(11) unsigned NOT NULL, + `available` mediumint(9) NOT NULL, + `fixed` tinyint(1) NOT NULL DEFAULT '0', + `price` double DEFAULT NULL, + `s1` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `s2` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `discount` tinyint(3) unsigned DEFAULT NULL, + `grouping` decimal(10,0) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `item_entry_in` +-- + +DROP TABLE IF EXISTS `item_entry_in`; +/*!50001 DROP VIEW IF EXISTS `item_entry_in`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `item_entry_in` AS SELECT + 1 AS `warehouse_id`, + 1 AS `dat`, + 1 AS `item_id`, + 1 AS `amount`, + 1 AS `received`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `item_entry_out` +-- + +DROP TABLE IF EXISTS `item_entry_out`; +/*!50001 DROP VIEW IF EXISTS `item_entry_out`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `item_entry_out` AS SELECT + 1 AS `warehouse_id`, + 1 AS `dat`, + 1 AS `item_id`, + 1 AS `amount`, + 1 AS `delivered`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `item_out` +-- + +DROP TABLE IF EXISTS `item_out`; +/*!50001 DROP VIEW IF EXISTS `item_out`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `item_out` AS SELECT + 1 AS `warehouse_id`, + 1 AS `dat`, + 1 AS `item_id`, + 1 AS `amount`, + 1 AS `ok`, + 1 AS `Reservado`, + 1 AS `ready`, + 1 AS `invoice`, + 1 AS `alertLevel`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `iva_codigo` +-- + +DROP TABLE IF EXISTS `iva_codigo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `iva_codigo` ( + `id` tinyint(2) unsigned NOT NULL AUTO_INCREMENT, + `fecha` date NOT NULL, + `codigo` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `iva_tipo_id` tinyint(2) NOT NULL, + `iva` float(3,1) NOT NULL DEFAULT '0.0', + `recargo` float(2,1) NOT NULL DEFAULT '0.0', + `tipo` char(1) COLLATE utf8_unicode_ci NOT NULL, + `link` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT 'las que tienen el mismo valor se contabilizan emparejadas', + `isActive` tinyint(2) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + KEY `iva_tipo_id` (`iva_tipo_id`), + KEY `codigo` (`codigo`), + KEY `tipo_index` (`tipo`), + CONSTRAINT `iva_codigo_ibfk_1` FOREIGN KEY (`iva_tipo_id`) REFERENCES `iva_tipo` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `iva_group` +-- + +DROP TABLE IF EXISTS `iva_group`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `iva_group` ( + `iva_group_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `description` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'R', + PRIMARY KEY (`iva_group_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `iva_group_codigo` +-- + +DROP TABLE IF EXISTS `iva_group_codigo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `iva_group_codigo` ( + `iva_group_id` tinyint(3) unsigned NOT NULL, + `date` date NOT NULL, + `iva_codigo_id` tinyint(3) unsigned NOT NULL, + PRIMARY KEY (`iva_group_id`,`date`,`iva_codigo_id`), + KEY `iva_codigo_id` (`iva_codigo_id`), + CONSTRAINT `iva_group_codigo_ibfk_1` FOREIGN KEY (`iva_group_id`) REFERENCES `iva_group` (`iva_group_id`) ON UPDATE CASCADE, + CONSTRAINT `iva_group_codigo_ibfk_2` FOREIGN KEY (`iva_codigo_id`) REFERENCES `iva_codigo` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `iva_tipo` +-- + +DROP TABLE IF EXISTS `iva_tipo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `iva_tipo` ( + `id` tinyint(2) NOT NULL AUTO_INCREMENT, + `alias` varchar(6) COLLATE utf8_unicode_ci NOT NULL, + `serie_id` char(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `TIPOOPE` varchar(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT ' ', + `descripcion` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `Id_Pais` mediumint(8) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `serie_id` (`serie_id`), + KEY `Id_Pais` (`Id_Pais`), + CONSTRAINT `iva_tipo_ibfk_1` FOREIGN KEY (`Id_Pais`) REFERENCES `Paises` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `jerarquia` +-- + +DROP TABLE IF EXISTS `jerarquia`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `jerarquia` ( + `worker_id` int(11) NOT NULL, + `boss_id` int(11) NOT NULL, + `vinculado` tinyint(3) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`worker_id`,`boss_id`), + KEY `worker_trabajador` (`worker_id`), + KEY `boss_trabajador` (`boss_id`), + CONSTRAINT `boss_trabajador` FOREIGN KEY (`boss_id`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, + CONSTRAINT `worker_trabajador` FOREIGN KEY (`worker_id`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `killme` +-- + +DROP TABLE IF EXISTS `killme`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `killme` ( + `Id_Article` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `language` +-- + +DROP TABLE IF EXISTS `language`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `language` ( + `code` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `active` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`code`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `link` +-- + +DROP TABLE IF EXISTS `link`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `link` ( + `Id_Cliente` int(11) NOT NULL, + `Id_Proveedor` int(11) NOT NULL, + PRIMARY KEY (`Id_Cliente`,`Id_Proveedor`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `log_articles` +-- + +DROP TABLE IF EXISTS `log_articles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `log_articles` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `Id_Article` int(11) NOT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Fecha_old` datetime DEFAULT NULL, + `cantidad_old` double DEFAULT NULL, + `Id_Ticket_old` int(11) DEFAULT NULL, + `wh_old` smallint(6) unsigned DEFAULT NULL, + `Fecha_new` datetime DEFAULT NULL, + `cantidad_new` double DEFAULT NULL, + `Id_Ticket_new` int(11) DEFAULT NULL, + `wh_new` smallint(6) DEFAULT NULL, + `accion` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `Id_Article_log` (`Id_Article`), + KEY `Id_Ticket_log` (`Id_Ticket_old`), + KEY `Id_Ticket_new_log` (`Id_Ticket_new`), + CONSTRAINT `Id_Article_log_Articles` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON DELETE NO ACTION ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena los movimientos de los articulos para intentar encontrar los procesos que generan negativos'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mail` +-- + +DROP TABLE IF EXISTS `mail`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mail` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `to` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `reply_to` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `subject` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `text` text COLLATE utf8_unicode_ci NOT NULL, + `sent` tinyint(2) NOT NULL DEFAULT '0', + `DATE_ODBC` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `path` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `error` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'OK', + `senderFk` int(11) DEFAULT NULL, + `recipientFk` int(11) DEFAULT NULL, + `plainTextBody` text COLLATE utf8_unicode_ci, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=1136979 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mail_templates` +-- + +DROP TABLE IF EXISTS `mail_templates`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mail_templates` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `countryCode` char(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'ES', + `name` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + `subject` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `body` text COLLATE utf8_unicode_ci NOT NULL, + `attachment` text COLLATE utf8_unicode_ci, + PRIMARY KEY (`id`,`countryCode`,`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mandato` +-- + +DROP TABLE IF EXISTS `mandato`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mandato` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `Id_Cliente` int(11) NOT NULL, + `empresa_id` smallint(5) unsigned NOT NULL, + `Id_mandato` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `FAlta` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `Fbaja` timestamp NULL DEFAULT NULL, + `idmandato_tipo` smallint(5) NOT NULL, + PRIMARY KEY (`id`), + KEY `mandato_fgkey1_idx` (`Id_Cliente`), + KEY `mandato_fgkey2_idx` (`empresa_id`), + KEY `mandato_fgkey3_idx` (`idmandato_tipo`), + CONSTRAINT `mandato_fgkey1` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `mandato_fgkey2` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `mandato_fgkey3` FOREIGN KEY (`idmandato_tipo`) REFERENCES `mandato_tipo` (`idmandato_tipo`) ON DELETE NO ACTION ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 trigger mandato_ins before insert +on mandato +for each row +begin + if (NEW.Id_mandato IS NULL) THEN + SET NEW.Id_mandato=CONCAT(NEW.Id_Cliente,'-',(SELECT AUTO_INCREMENT + from information_schema.TABLES + where TABLE_SCHEMA='vn2008' and TABLE_NAME='mandato')); + end if; +end */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `mandato_tipo` +-- + +DROP TABLE IF EXISTS `mandato_tipo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mandato_tipo` ( + `idmandato_tipo` smallint(5) NOT NULL AUTO_INCREMENT, + `Nombre` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`idmandato_tipo`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `movement_label` +-- + +DROP TABLE IF EXISTS `movement_label`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `movement_label` ( + `Id_movimiento` int(11) NOT NULL, + `label` mediumint(8) unsigned NOT NULL, + `stem` mediumint(8) unsigned NOT NULL, + PRIMARY KEY (`Id_movimiento`), + CONSTRAINT `movement_label_ibfk_1` FOREIGN KEY (`Id_movimiento`) REFERENCES `Movimientos` (`Id_Movimiento`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `movement_label_au` AFTER UPDATE ON `movement_label` FOR EACH ROW +-- Edit trigger body code below this line. Do not edit lines above this one +IF NEW.stem >= (SELECT Cantidad FROM Movimientos WHERE Id_Movimiento = NEW.Id_Movimiento) THEN + UPDATE Movimientos SET OK = 1 WHERE Id_Movimiento = NEW.Id_Movimiento; +END IF */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Temporary view structure for view `new_view` +-- + +DROP TABLE IF EXISTS `new_view`; +/*!50001 DROP VIEW IF EXISTS `new_view`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `new_view` AS SELECT + 1 AS `id`, + 1 AS `worker`, + 1 AS `document`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `nichos` +-- + +DROP TABLE IF EXISTS `nichos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `nichos` ( + `id` varchar(5) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `observation_type` +-- + +DROP TABLE IF EXISTS `observation_type`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `observation_type` ( + `observation_type_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `description` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`observation_type_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `order` +-- + +DROP TABLE IF EXISTS `order`; +/*!50001 DROP VIEW IF EXISTS `order`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `order` AS SELECT + 1 AS `id`, + 1 AS `date_make`, + 1 AS `date_send`, + 1 AS `customer_id`, + 1 AS `delivery_method_id`, + 1 AS `agency_id`, + 1 AS `address_id`, + 1 AS `note`, + 1 AS `confirmed`, + 1 AS `is_bionic`, + 1 AS `source_app`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `order_Tickets` +-- + +DROP TABLE IF EXISTS `order_Tickets`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `order_Tickets` ( + `order_id` int(10) unsigned NOT NULL, + `Id_Ticket` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`Id_Ticket`,`order_id`), + KEY `order_id` (`order_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `order_component` +-- + +DROP TABLE IF EXISTS `order_component`; +/*!50001 DROP VIEW IF EXISTS `order_component`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `order_component` AS SELECT + 1 AS `order_row_id`, + 1 AS `component_id`, + 1 AS `price`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `order_row` +-- + +DROP TABLE IF EXISTS `order_row`; +/*!50001 DROP VIEW IF EXISTS `order_row`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `order_row` AS SELECT + 1 AS `id`, + 1 AS `order_id`, + 1 AS `item_id`, + 1 AS `warehouse_id`, + 1 AS `shipment`, + 1 AS `amount`, + 1 AS `price`, + 1 AS `rate`, + 1 AS `created`, + 1 AS `Id_Movimiento`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `pago` +-- + +DROP TABLE IF EXISTS `pago`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `pago` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `fecha` date NOT NULL, + `id_proveedor` int(11) NOT NULL, + `importe` decimal(10,2) NOT NULL DEFAULT '0.00', + `id_moneda` tinyint(3) unsigned NOT NULL DEFAULT '1', + `divisa` decimal(10,2) DEFAULT NULL, + `id_banco` int(11) NOT NULL DEFAULT '0', + `pay_met_id` tinyint(3) unsigned NOT NULL, + `g_bancarios` double(6,2) unsigned NOT NULL DEFAULT '0.00', + `concepte` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `conciliado` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0', + `pago_sdc_id` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `empresa_id` (`empresa_id`), + KEY `id_banco` (`id_banco`), + KEY `id_moneda` (`id_moneda`), + KEY `pay_met` (`pay_met_id`), + KEY `proveedor_pago` (`id_proveedor`), + KEY `fk_pago_pago_sdc1_idx` (`pago_sdc_id`), + CONSTRAINT `pago_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, + CONSTRAINT `pago_ibfk_2` FOREIGN KEY (`id_banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE, + CONSTRAINT `pago_moneda` FOREIGN KEY (`id_moneda`) REFERENCES `Monedas` (`Id_Moneda`) ON UPDATE CASCADE, + CONSTRAINT `pago_pay_met` FOREIGN KEY (`pay_met_id`) REFERENCES `pay_met` (`id`) ON UPDATE CASCADE, + CONSTRAINT `proveedor_pago` FOREIGN KEY (`id_proveedor`) REFERENCES `Proveedores` (`Id_Proveedor`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pago_bi` BEFORE INSERT ON `pago` FOR EACH ROW +-- Edit trigger body code below this line. Do not edit lines above this one +BEGIN + DECLARE cuenta_banco,cuenta_proveedor DOUBLE; + DECLARE max_asien INT; + DECLARE bolCASH BOOLEAN; + + + + -- PAK 10/02/15 No se asientan los pagos directamente, salvo en el caso de las cajas de CASH + SELECT (cash = 1) INTO bolCASH FROM Bancos WHERE Bancos.Id_Banco = NEW.id_banco ; + + IF bolCASH THEN -- AND NEW.id_pago <> 1 + + SELECT Cuenta INTO cuenta_banco FROM Bancos WHERE Id_Banco = NEW.id_banco; + SELECT Cuenta INTO cuenta_proveedor FROM Proveedores WHERE Id_Proveedor=NEW.id_proveedor; + SELECT MAX(asien)+1 INTO max_asien FROM XDiario; + + INSERT INTO XDiario (ASIEN,FECHA,SUBCTA,CONTRA,CONCEPTO,EURODEBE,EUROHABER,empresa_id) + SELECT max_asien,NEW.fecha,SUBCTA,CONTRA,NEW.concepte,EURODEBE,EUROHABER,NEW.empresa_id FROM + ( SELECT cuenta_banco SUBCTA,cuenta_proveedor CONTRA, + 0 EURODEBE, NEW.importe + NEW.g_bancarios EUROHABER + UNION ALL + SELECT cuenta_proveedor SUBCTA, cuenta_banco CONTRA, + NEW.importe EURODEBE, 0 EUROHABER) gf; + + IF NEW.g_bancarios <> 0 THEN + INSERT INTO XDiario (ASIEN,FECHA,SUBCTA,CONTRA,CONCEPTO,EURODEBE,EUROHABER,empresa_id) + SELECT max_asien,NEW.fecha,IF(Id = 1,6260000002,IF(CEE = 1,6260000003,6260000004)),cuenta_banco,NEW.concepte, + NEW.g_bancarios,0,NEW.empresa_id FROM Proveedores pr + JOIN Paises pa ON pr.pais_id = pa.Id WHERE Id_Proveedor = NEW.id_proveedor; + END IF; + + + END IF; + END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `pago_sdc` +-- + +DROP TABLE IF EXISTS `pago_sdc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `pago_sdc` ( + `pago_sdc_id` int(11) NOT NULL AUTO_INCREMENT, + `importe` decimal(10,2) NOT NULL, + `fecha` date NOT NULL, + `vencimiento` date NOT NULL, + `entity_id` int(10) unsigned NOT NULL, + `ref` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `rate` decimal(10,4) NOT NULL, + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + `financialProductTypefk` varchar(2) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'SC', + `pago_sdccol` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `upperBarrier` decimal(10,2) DEFAULT NULL, + `lowerBarrier` decimal(10,2) DEFAULT NULL, + `strike` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`pago_sdc_id`), + KEY `empresa_sdc_idx` (`empresa_id`), + KEY `entity_sdc_idx` (`entity_id`), + KEY `financial_type_fk_idx` (`financialProductTypefk`), + CONSTRAINT `empresa_sdc` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, + CONSTRAINT `entity_sdc` FOREIGN KEY (`entity_id`) REFERENCES `entity` (`entity_id`) ON UPDATE CASCADE, + CONSTRAINT `financial_type_fk` FOREIGN KEY (`financialProductTypefk`) REFERENCES `financialProductType` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Seguros de cambio'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `pay_dem` +-- + +DROP TABLE IF EXISTS `pay_dem`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `pay_dem` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `pay_dem` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `pay_dem_det` +-- + +DROP TABLE IF EXISTS `pay_dem_det`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `pay_dem_det` ( + `id` tinyint(3) unsigned NOT NULL, + `detalle` tinyint(3) unsigned NOT NULL, + PRIMARY KEY (`id`,`detalle`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `pay_met` +-- + +DROP TABLE IF EXISTS `pay_met`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `pay_met` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `solucion` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `deudaviva` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000', + `graceDays` int(11) unsigned NOT NULL DEFAULT '0', + `ibanRequired` tinyint(3) DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payroll_basess` +-- + +DROP TABLE IF EXISTS `payroll_basess`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payroll_basess` ( + `id_payroll_Basess` int(11) NOT NULL AUTO_INCREMENT, + `empresa_id` int(10) NOT NULL, + `id_tipobasess` int(11) NOT NULL, + `valor` double NOT NULL, + `fechadesde` date NOT NULL, + `fechahasta` date DEFAULT NULL, + `contratotemporal` tinyint(1) DEFAULT '0', + PRIMARY KEY (`id_payroll_Basess`), + KEY `payroll_basess_1_idx` (`id_tipobasess`), + KEY `payroll_basess_2_idx` (`empresa_id`), + CONSTRAINT `payroll_basess_1` FOREIGN KEY (`id_tipobasess`) REFERENCES `payroll_tipobasess` (`id_payroll_tipobasess`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `payroll_basess_2` FOREIGN KEY (`empresa_id`) REFERENCES `payroll_centros` (`empresa_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payroll_bonificaciones` +-- + +DROP TABLE IF EXISTS `payroll_bonificaciones`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payroll_bonificaciones` ( + `codtrabajador` int(11) NOT NULL, + `codempresa` int(11) NOT NULL, + `Fecha` date NOT NULL, + `bonificacionSS` double NOT NULL, + PRIMARY KEY (`codtrabajador`,`codempresa`,`Fecha`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payroll_categorias` +-- + +DROP TABLE IF EXISTS `payroll_categorias`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payroll_categorias` ( + `codcategoria` int(11) NOT NULL, + `descripcion` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `Tarifa` tinyint(4) NOT NULL, + PRIMARY KEY (`codcategoria`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payroll_centros` +-- + +DROP TABLE IF EXISTS `payroll_centros`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payroll_centros` ( + `cod_centro` int(11) NOT NULL, + `Centro` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `nss_cotizacion` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `domicilio` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `poblacion` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `cp` varchar(5) COLLATE utf8_unicode_ci NOT NULL, + `empresa_id` int(10) NOT NULL, + `codempresa` int(11) DEFAULT NULL, + PRIMARY KEY (`cod_centro`,`empresa_id`), + KEY `payroll_centros_ix1` (`empresa_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payroll_conceptos` +-- + +DROP TABLE IF EXISTS `payroll_conceptos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payroll_conceptos` ( + `conceptoid` int(11) NOT NULL, + `concepto` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`conceptoid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payroll_contratos` +-- + +DROP TABLE IF EXISTS `payroll_contratos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payroll_contratos` ( + `CodContrato` int(11) NOT NULL, + `TipoCotizacion` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `DescContrato` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`CodContrato`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payroll_datos` +-- + +DROP TABLE IF EXISTS `payroll_datos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payroll_datos` ( + `codtrabajador` int(11) NOT NULL, + `codempresa` int(10) NOT NULL, + `Fecha` date NOT NULL, + `conceptoid` int(11) NOT NULL, + `orden` tinyint(4) DEFAULT NULL, + `dias` smallint(6) DEFAULT NULL, + `Importe` decimal(8,2) NOT NULL, + `DH` tinyint(4) DEFAULT NULL, + `T_Paga` tinyint(4) NOT NULL, + `TributaIRPF` tinyint(4) NOT NULL, + PRIMARY KEY (`codtrabajador`,`codempresa`,`conceptoid`,`Fecha`), + KEY `fgkey_payrolldatos_1_idx` (`conceptoid`), + CONSTRAINT `fgkey_payrolldatos_1` FOREIGN KEY (`conceptoid`) REFERENCES `payroll_conceptos` (`conceptoid`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payroll_embargos` +-- + +DROP TABLE IF EXISTS `payroll_embargos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payroll_embargos` ( + `codtrabajador` int(11) NOT NULL, + `codempresa` int(10) NOT NULL, + `conceptoid` int(11) NOT NULL, + `Fecha` date NOT NULL, + `pagado` double NOT NULL, + `pendiente` double DEFAULT NULL, + `total` double NOT NULL, + PRIMARY KEY (`codtrabajador`,`codempresa`,`Fecha`,`conceptoid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payroll_employee` +-- + +DROP TABLE IF EXISTS `payroll_employee`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payroll_employee` ( + `CodTrabajador` int(11) NOT NULL, + `Person_id` int(11) NOT NULL, + `nss` varchar(23) COLLATE utf8_unicode_ci NOT NULL, + `codpuesto` int(10) NOT NULL, + `codempresa` int(10) NOT NULL, + `codcontrato` int(10) NOT NULL, + `FAntiguedad` date NOT NULL, + `grupotarifa` int(10) NOT NULL, + `codcategoria` int(10) NOT NULL, + `ContratoTemporal` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`CodTrabajador`,`codempresa`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payroll_pagarini` +-- + +DROP TABLE IF EXISTS `payroll_pagarini`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payroll_pagarini` ( + `fecha` date NOT NULL, + `person_id` int(11) NOT NULL, + `saldotpv` double NOT NULL DEFAULT '0', + `saldolab` double NOT NULL DEFAULT '0', + `saldoprod` double NOT NULL DEFAULT '0', + `saldobruto` double NOT NULL DEFAULT '0', + `business_id` int(11) NOT NULL, + `exportado` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`fecha`,`person_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payroll_pais` +-- + +DROP TABLE IF EXISTS `payroll_pais`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payroll_pais` ( + `codpais` int(11) NOT NULL, + `pais` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`codpais`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payroll_tipobasess` +-- + +DROP TABLE IF EXISTS `payroll_tipobasess`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payroll_tipobasess` ( + `id_payroll_tipobasess` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id_payroll_tipobasess`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `payrroll_apEmpresarial` +-- + +DROP TABLE IF EXISTS `payrroll_apEmpresarial`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `payrroll_apEmpresarial` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `codTrabajador` int(11) NOT NULL, + `Fecha` date NOT NULL, + `CosteEmpresaAT` decimal(8,2) NOT NULL, + `costeEmpresaCC` decimal(8,2) NOT NULL, + `costeEmpresaDesempleo` decimal(8,2) NOT NULL, + `costeEmpresaFP` decimal(8,2) NOT NULL, + `costeEmpresaFogasa` decimal(8,2) NOT NULL, + `costeEmpresaExtra` decimal(8,2) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `person_user` +-- + +DROP TABLE IF EXISTS `person_user`; +/*!50001 DROP VIEW IF EXISTS `person_user`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `person_user` AS SELECT + 1 AS `id`, + 1 AS `mysql_user_id`, + 1 AS `name`, + 1 AS `password`, + 1 AS `active`, + 1 AS `last_pass_change`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `person_user_idtrabajador` +-- + +DROP TABLE IF EXISTS `person_user_idtrabajador`; +/*!50001 DROP VIEW IF EXISTS `person_user_idtrabajador`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `person_user_idtrabajador` AS SELECT + 1 AS `Id_Trabajador`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `plantpassport` +-- + +DROP TABLE IF EXISTS `plantpassport`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `plantpassport` ( + `producer_id` mediumint(3) unsigned NOT NULL, + `plantpassport_authority_id` mediumint(3) unsigned NOT NULL, + `number` varchar(25) CHARACTER SET utf8 DEFAULT NULL, + PRIMARY KEY (`producer_id`,`plantpassport_authority_id`), + KEY `plantpassport_authority_idx` (`plantpassport_authority_id`), + KEY `producer_id_idx` (`producer_id`), + CONSTRAINT `plantpassport_authority` FOREIGN KEY (`plantpassport_authority_id`) REFERENCES `plantpassport_authority` (`plantpassport_authority_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `producer` FOREIGN KEY (`producer_id`) REFERENCES `producer` (`producer_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='tiene la asignacion de cada productor con la autoridad certificadora'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `plantpassport_authority` +-- + +DROP TABLE IF EXISTS `plantpassport_authority`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `plantpassport_authority` ( + `plantpassport_authority_id` mediumint(3) unsigned NOT NULL, + `denomination` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `Paises_Id` mediumint(8) unsigned DEFAULT NULL, + PRIMARY KEY (`plantpassport_authority_id`), + UNIQUE KEY `denomination_UNIQUE` (`denomination`), + KEY `Pais_id_idx` (`Paises_Id`), + CONSTRAINT `Pais_id` FOREIGN KEY (`Paises_Id`) REFERENCES `Paises` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='entidades certificadoras'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `postcodeKK` +-- + +DROP TABLE IF EXISTS `postcodeKK`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `postcodeKK` ( + `postcode_id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `code` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `city_id` int(11) NOT NULL, + `nst_geo_id` int(11) DEFAULT NULL, + `nst_name` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`postcode_id`), + UNIQUE KEY `code_city` (`code`,`city_id`), + KEY `postal_code_idx` (`code`), + KEY `city_id_pk_idx` (`city_id`), + KEY `nst_geo_pc_id_idx` (`nst_geo_id`), + CONSTRAINT `city_id_pk` FOREIGN KEY (`city_id`) REFERENCES `city` (`city_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `nst_geo_pc_id` FOREIGN KEY (`nst_geo_id`) REFERENCES `nst`.`geo` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`postcode_BEFORE_INSERT` BEFORE INSERT ON `postcodeKK` FOR EACH ROW +BEGIN + + SET new.nst_name = new.code; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `preparation_exception` +-- + +DROP TABLE IF EXISTS `preparation_exception`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `preparation_exception` ( + `exception_day` date NOT NULL COMMENT 'preparation day', + `warehouse_id` smallint(6) unsigned DEFAULT NULL, + `percentage` tinyint(2) NOT NULL DEFAULT '0', + UNIQUE KEY `exception_day_UNIQUE` (`exception_day`), + UNIQUE KEY `warehouse_id_UNIQUE` (`warehouse_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `preparation_percentage` +-- + +DROP TABLE IF EXISTS `preparation_percentage`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `preparation_percentage` ( + `week_day` tinyint(1) unsigned NOT NULL COMMENT 'preparation day. Funcion de mysql Lunes = 0, Domingo = 6', + `warehouse_id` smallint(6) unsigned DEFAULT NULL, + `percentage` tinyint(2) NOT NULL DEFAULT '0', + UNIQUE KEY `week_day_UNIQUE` (`week_day`), + UNIQUE KEY `warehouse_id_UNIQUE` (`warehouse_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `price_fixed` +-- + +DROP TABLE IF EXISTS `price_fixed`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `price_fixed` ( + `item_id` int(10) NOT NULL, + `rate_0` double NOT NULL, + `rate_1` double NOT NULL, + `rate_2` double NOT NULL, + `rate_3` double NOT NULL, + `date_start` date NOT NULL, + `date_end` date NOT NULL, + `bonus` double NOT NULL DEFAULT '0', + `warehouse_id` smallint(5) unsigned NOT NULL DEFAULT '0', + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `price_fixed_id` int(11) NOT NULL AUTO_INCREMENT, + `grouping` smallint(5) DEFAULT NULL, + `Packing` int(11) DEFAULT NULL, + `caja` tinyint(4) DEFAULT NULL, + PRIMARY KEY (`item_id`,`date_start`,`date_end`,`warehouse_id`), + UNIQUE KEY `price_fixed_id_UNIQUE` (`price_fixed_id`), + KEY `item_id` (`item_id`), + KEY `date_start` (`date_start`), + KEY `date_end` (`date_end`), + KEY `warehouse_id` (`warehouse_id`), + CONSTRAINT `price_fixed_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`price_fixed_bi` BEFORE INSERT ON `vn2008`.`price_fixed` + FOR EACH ROW BEGIN + DECLARE v_aux DATE; + IF NEW.date_start > NEW.date_end THEN + SET v_aux = NEW.date_start; + SET NEW.date_start = NEW.date_end; + SET NEW.date_end = v_aux; + END IF; + END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`price_fixed_bu` BEFORE UPDATE ON `vn2008`.`price_fixed` + FOR EACH ROW BEGIN + DECLARE v_aux DATE; + IF NEW.date_start > NEW.date_end THEN + SET v_aux = NEW.date_start; + SET NEW.date_start = NEW.date_end; + SET NEW.date_end = v_aux; + END IF; + END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `producer` +-- + +DROP TABLE IF EXISTS `producer`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `producer` ( + `producer_id` mediumint(3) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `visible` tinyint(1) NOT NULL DEFAULT '1', + PRIMARY KEY (`producer_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `profile_labour_payroll` +-- + +DROP TABLE IF EXISTS `profile_labour_payroll`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `profile_labour_payroll` ( + `profile_id` int(11) NOT NULL, + `codpais` int(11) NOT NULL, + `nivelformativo` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `NSSProvincia` tinyint(2) unsigned zerofill NOT NULL, + `NssNumero` varchar(8) COLLATE utf8_unicode_ci NOT NULL, + `NssDC` char(2) COLLATE utf8_unicode_ci NOT NULL, + `sexo` enum('H','M') COLLATE utf8_unicode_ci NOT NULL, + `estadocivil` enum('S','C') COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`profile_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `proveedores_clientes` +-- + +DROP TABLE IF EXISTS `proveedores_clientes`; +/*!50001 DROP VIEW IF EXISTS `proveedores_clientes`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `proveedores_clientes` AS SELECT + 1 AS `Id_Proveedor`, + 1 AS `Proveedor`, + 1 AS `Id_Cliente`, + 1 AS `Cliente`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `provider_account_customer` +-- + +DROP TABLE IF EXISTS `provider_account_customer`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `provider_account_customer` ( + `account_id` mediumint(8) unsigned NOT NULL, + PRIMARY KEY (`account_id`), + CONSTRAINT `provider_account_customer_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `Proveedores_account` (`Id_Proveedores_account`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Bank accounts used for customer transfers'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `province` +-- + +DROP TABLE IF EXISTS `province`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `province` ( + `province_id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `Paises_Id` mediumint(8) unsigned NOT NULL, + `warehouse_id` smallint(6) unsigned DEFAULT NULL COMMENT 'warehouse responsable de las rutas', + `zone` tinyint(4) DEFAULT NULL, + `nst_geo_id` int(11) DEFAULT NULL, + `nst_name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `geoFk` int(11) DEFAULT NULL, + PRIMARY KEY (`province_id`), + KEY `Paises_Id` (`Paises_Id`), + KEY `warehouse_Id` (`warehouse_id`), + KEY `provicne_zone_fk_idx` (`zone`), + CONSTRAINT `province_ibfk_1` FOREIGN KEY (`Paises_Id`) REFERENCES `Paises` (`Id`) ON UPDATE CASCADE, + CONSTRAINT `province_zone_fk` FOREIGN KEY (`zone`) REFERENCES `zones` (`zone_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `warehouse_Id` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`provinceBeforeInsert` + BEFORE INSERT ON `province` FOR EACH ROW +BEGIN + IF NEW.`name` = '' THEN + CALL util.throw ('EMPTY_NAME'); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`provinceBeforeUpdate` + BEFORE UPDATE ON `province` FOR EACH ROW +BEGIN + IF NEW.`name` = '' THEN + CALL util.throw ('EMPTY_NAME'); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `rec_translator` +-- + +DROP TABLE IF EXISTS `rec_translator`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `rec_translator` ( + `Id_Article` int(11) NOT NULL, + `denominacion` varchar(85) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`Id_Article`,`denominacion`), + KEY `id_article_rec_idx` (`Id_Article`), + CONSTRAINT `id_article_rec` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Equipara las denominaciones de las fincas de ecuador con nuestro Id_Article'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `recibida` +-- + +DROP TABLE IF EXISTS `recibida`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `recibida` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `num_recibida` mediumint(11) unsigned DEFAULT NULL COMMENT 'insertado por Trigger', + `serie` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'R', + `proveedor_id` int(11) NOT NULL, + `fecha` date NOT NULL COMMENT 'Fecha de emision de la factura', + `sref` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `contabilizada` tinyint(1) NOT NULL DEFAULT '0', + `moneda_id` tinyint(3) unsigned NOT NULL DEFAULT '1', + `MYSQL_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + `gestdoc_id` int(11) DEFAULT NULL, + `dateBooking` date DEFAULT NULL COMMENT 'Fecha de contabilizacion', + `dateOperation` date DEFAULT NULL COMMENT 'Fecha de entrega de la mercancia o el suministro', + `cplusInvoiceType472Fk` int(10) unsigned DEFAULT '1', + `cplusRectificationTypeFk` int(10) unsigned DEFAULT '1', + `cplusSubjectOpFk` int(10) unsigned DEFAULT '1', + `cplusTaxBreakFk` int(10) unsigned DEFAULT '1', + `cplusTrascendency472Fk` int(10) unsigned DEFAULT '1', + PRIMARY KEY (`id`), + KEY `proveedor_id` (`proveedor_id`), + KEY `empresa_id` (`empresa_id`), + KEY `serie` (`serie`), + KEY `num_recibida_2` (`num_recibida`), + KEY `gestdoc_id` (`gestdoc_id`), + KEY `fecha` (`fecha`), + KEY `recibida_ibfk_3_idx` (`cplusSubjectOpFk`), + KEY `recibida_ibfk_4_idx` (`cplusTaxBreakFk`), + KEY `recibida_ibfk_5_idx` (`cplusInvoiceType472Fk`), + KEY `recibida_ibfk_6` (`cplusRectificationTypeFk`), + KEY `recibida_ibfk_7` (`cplusTrascendency472Fk`), + CONSTRAINT `recibida_ibfk_1` FOREIGN KEY (`proveedor_id`) REFERENCES `Proveedores` (`Id_Proveedor`) ON UPDATE CASCADE, + CONSTRAINT `recibida_ibfk_2` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, + CONSTRAINT `recibida_ibfk_3` FOREIGN KEY (`cplusSubjectOpFk`) REFERENCES `vn`.`cplusSubjectOp` (`id`) ON UPDATE CASCADE, + CONSTRAINT `recibida_ibfk_4` FOREIGN KEY (`cplusTaxBreakFk`) REFERENCES `vn`.`cplusTaxBreak` (`id`) ON UPDATE CASCADE, + CONSTRAINT `recibida_ibfk_5` FOREIGN KEY (`cplusInvoiceType472Fk`) REFERENCES `vn`.`cplusInvoiceType472` (`id`) ON UPDATE CASCADE, + CONSTRAINT `recibida_ibfk_6` FOREIGN KEY (`cplusRectificationTypeFk`) REFERENCES `vn`.`cplusRectificationType` (`id`) ON UPDATE CASCADE, + CONSTRAINT `recibida_ibfk_7` FOREIGN KEY (`cplusTrascendency472Fk`) REFERENCES `vn`.`cplusTrascendency472` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`recibida_bi` +BEFORE INSERT ON `vn2008`.`recibida` +FOR EACH ROW +BEGIN + DECLARE v_serie CHAR(1) DEFAULT 'R'; + DECLARE v_num_recibida INT; + DECLARE pais_emisor, pais_receptor INT; + DECLARE vActive TINYINT; + + SELECT pais_id, active into pais_emisor, vActive FROM Proveedores WHERE Id_Proveedor = NEW.proveedor_id; + SELECT pais_id into pais_receptor FROM Proveedores WHERE Id_Proveedor = NEW.empresa_id; + + IF vActive = 0 THEN + CALL util.throw('INACTIVE_PROVIDER'); + END IF; + + SELECT CASE WHEN (SELECT Cuenta FROM Proveedores where Id_Proveedor = NEW.proveedor_id) LIKE '___3______' THEN 'C' + WHEN (SELECT pais_emisor=pais_receptor from Paises p1 join Paises p2 ON p2.Id = pais_receptor AND p1.Id = pais_emisor + where p1.CEE < 2 and p2.CEE < 2) = 1 THEN 'R' + WHEN (SELECT pais_emisor <> pais_receptor from Paises p1 join Paises p2 ON p2.Id = pais_receptor AND p1.Id = pais_emisor + where p1.CEE < 2 and p2.CEE < 2) = 1 THEN 'E' + WHEN (SELECT pais_emisor<>pais_receptor from Paises p1 join Paises p2 ON p2.Id = pais_receptor AND p1.Id = pais_emisor + where NOT p1.CEE < 2 AND not p1.Id = 1) = 1 THEN 'W' + END INTO v_serie; + + SET NEW.serie = v_serie; + + IF v_serie LIKE 'W' THEN + + SELECT IFNULL(MAX(num_recibida) + 1,1) INTO v_num_recibida FROM recibida + WHERE serie LIKE NEW.serie + AND YEAR(fecha) = YEAR(NEW.fecha) + AND empresa_id = NEW.empresa_id; + + SET NEW.num_recibida = v_num_recibida; + END IF; + + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `recibida_bu` BEFORE UPDATE ON `recibida` FOR EACH ROW +-- Edit trigger body code below this line. Do not edit lines above this one +BEGIN + + DECLARE cta_proveed VARCHAR(10); + DECLARE cta_proveeda VARCHAR(10); + DECLARE v_num_recibida INT; + DECLARE dblRefRate,dblRefMin,dblRef DOUBLE; + DECLARE vActive TINYINT; + + SELECT active INTO vActive FROM Proveedores WHERE Id_Proveedor = NEW.proveedor_id; + + IF vActive = 0 THEN + CALL util.throw('INACTIVE_PROVIDER'); + END IF; + + IF NEW.empresa_id <> OLD.empresa_id THEN + SET NEW.num_recibida = NULL; + SET NEW.contabilizada = FALSE ; + END IF; +/* +IF NEW.contabilizada = 1 AND OLD.contabilizada = 0 AND NEW.fecha < '2017-07-01' THEN + + SELECT rate INTO dblRefRate FROM reference_rate WHERE date = (SELECT MAX(date) FROM reference_rate + WHERE date <= (SELECT t.shipment FROM + recibida_entrada re + INNER JOIN Entradas e ON e.Id_Entrada = re.Id_Entrada + LEFT JOIN travel t ON t.id = e.travel_id + WHERE re.awb_recibida = NEW.id GROUP BY re.awb_recibida)); + + SELECT rate INTO dblRefMin FROM reference_min WHERE date=(SELECT MAX(date) FROM reference_min + WHERE date<=(SELECT t.shipment FROM + recibida_entrada re + INNER JOIN Entradas e ON e.Id_Entrada = re.Id_Entrada + LEFT JOIN travel t ON t.id = e.travel_id + WHERE re.awb_recibida = NEW.id GROUP BY re.awb_recibida)); + + -- IF dblRefMin < dblRefRate THEN + -- SET dblRef = dblRefRate; + -- ELSE + -- SET dblRef =dblRefMin; + -- END IF; + SELECT IFNULL(MAX(r.num_recibida) + 1,1) INTO v_num_recibida FROM recibida r + WHERE r.serie LIKE NEW.serie + AND YEAR(r.fecha) = YEAR(NEW.fecha) + AND r.empresa_id = NEW.empresa_id GROUP BY r.empresa_id; + + SET NEW.num_recibida = IFNULL(v_num_recibida,1); + SELECT REPLACE(cuenta,' ','') INTO cta_proveed FROM Proveedores WHERE Id_Proveedor=NEW.proveedor_id; + + INSERT INTO XDiario(ASIEN,FECHA,SUBCTA,CONTRA,CONCEPTO,EURODEBE, EUROHABER,BASEEURO, SERIE,FACTURA,IVA,DOCUMENTO, + L340,LRECT349,TIPOOPE,AUXILIAR,empresa_id,LDIFADUAN) +SELECT a,NEW.fecha,subcta,contra,concepto,eurodebe,eurohaber,baseeuro,serie,NEW.sref,iva, + (SELECT CONCAT(serie,'/', LPAD(v_num_recibida,5,'0'))),l340,LRECT349,TIPOOPE,AUXILIAR,NEW.empresa_id,LDIFADUAN + FROM + + (SELECT MAX(ASIEN) + 1 as a FROM XDiario) t + + INNER JOIN + + ( + + SELECT *,NEW.serie,0 LDIFADUAN FROM + + (SELECT CONCAT('s/fra',RIGHT(sref,8),':',LEFT(Proveedor, 10)) concepto FROM Proveedores + + INNER JOIN recibida ON Id_Proveedor = proveedor_id WHERE id = NEW.id) t4 + + INNER JOIN( + -- Linea del proveedor/acreedor + SELECT subcta,'' contra,eurodebe,ROUND(SUM(eurohaber) + 0.0001,2) eurohaber,baseeuro,0 iva, l340,LRECT349,TIPOOPE,'' AUXILIAR + + FROM ( + + SELECT cta_proveed subcta, + + NULL eurodebe, ROUND((1+(iva/100)*(r.serie = 'R'))*SUM(bi),2) eurohaber, NULL baseeuro,ri.recibida_id, 0 l340,0 LRECT349,' ' TIPOOPE + + FROM recibida r + + INNER JOIN recibida_iva ri ON ri.recibida_id = r.id INNER JOIN iva_codigo ic ON ri.iva_id = ic.id + + INNER JOIN Proveedores p ON p.Id_Proveedor=r.proveedor_id + INNER JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + WHERE r.id = NEW.id GROUP BY iva) t + + GROUP BY recibida_id + + UNION ALL + -- Linea de iva + SELECT ic.codigo,cta_proveed contra, + + ROUND(iva/100*SUM(ri.bi) + 0.0001,2) eurodebe, NULL eurohaber, + + ROUND(SUM(ri.bi),2) baseeuro,iva, 1 l340,(NOT ((p.pais_id <> p2.pais_id) AND pa.CEE < 2)) LRECT349,TIPOOPE, + IF(pa.CEE < 2 AND ri2.gastos_id IS NULL,'','*') AUXILIAR + FROM recibida r + + INNER JOIN recibida_iva ri ON ri.recibida_id = r.id + + LEFT JOIN recibida_iva ri2 ON ri2.recibida_id = r.id AND ri2.gastos_id LIKE '4751______' + + INNER JOIN iva_codigo ic ON ri.iva_id = ic.id + + INNER JOIN iva_tipo it ON it.id = ic.iva_tipo_id + + INNER JOIN Gastos g ON ri.gastos_id = g.Id_Gasto AND g.iva_tipo_id = ic.iva_tipo_id + + INNER JOIN Proveedores p ON p.Id_Proveedor=r.proveedor_id + + INNER JOIN Paises pa ON p.pais_id = pa.Id + + INNER JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + INNER JOIN Paises pa2 ON p2.pais_id = pa2.Id + WHERE r.id = NEW.id AND ic.tipo <> '-' AND link GROUP BY iva + -- JGF 2016-05-05 g.conbase + UNION ALL + -- Linea iva inversor sujeto pasivo + SELECT ic2.codigo,cta_proveed contra, + + NULL eurodebe, ROUND(ic2.iva/100*SUM(bi) + 0.0001,2) eurohaber, + + ROUND(SUM(bi),2) baseeuro,ic2.iva, 1 l340,0 LRECT349,TIPOOPE,'*' AUXILIAR + + FROM recibida r + + INNER JOIN recibida_iva ri ON ri.recibida_id = r.id + + INNER JOIN iva_codigo ic ON ri.iva_id = ic.id + + INNER JOIN iva_codigo ic2 ON ic2.link = ic.link AND ic.id <> ic2.id + + INNER JOIN iva_tipo it ON ic.iva_tipo_id = it.id + + WHERE r.id = NEW.id AND ic2.link GROUP BY ic2.iva + + UNION ALL + -- Linea de Gastos + SELECT if(gastos_id LIKE '4751______',LPAD(RIGHT(cta_proveed ,5),10,gastos_id),gastos_id),cta_proveed , + + if(gastos_id LIKE '4751______',NULL,ABS(ROUND(SUM(bi),2))) , + + if(gastos_id LIKE '4751______',ABS(ROUND(SUM(bi),2)),NULL) , + + NULL ,0, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR + + FROM recibida r + + INNER JOIN recibida_iva ri ON ri.recibida_id = r.id + + INNER JOIN Proveedores p ON p.Id_Proveedor=r.proveedor_id + + WHERE r.id = NEW.id AND gastos_id <> 5660000002 GROUP BY gastos_id + + UNION ALL + -- Iva Importacion pendiente + -- JGF 17/02/15 cambia la forma de declarar este tipo de importaciones, sólo afecta a transitarios + SELECT '4700000999',NULL,NULL ,ROUND(SUM(importe * (iva/100)),2),NULL ,0, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR + + FROM recibida r + JOIN recibida_intrastat ri ON r.id = ri.recibida_id + JOIN Intrastat i ON i.Codintrastat = ri.Codintrastat + JOIN iva_codigo ic ON ic.id = i.iva_codigo_id + WHERE ri.recibida_id = NEW.id GROUP BY ri.recibida_id + + ) t2 + + UNION ALL + + + -- Extracomunitarias gasto contra proveedor/acreedor + SELECT CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) concepto ,gastos_id,cuenta, + + ROUND(SUM(bi)/IF(r.serie='W' AND ri.divisa IS NULL,dblRefRate,1)* (re.percentage / 100),2),NULL ,IF( @a:=@a+1 ,NULL,NULL) ,0, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR,r.serie,0 LDIFADUAN + + FROM recibida_entrada re + + INNER JOIN recibida_iva ri ON re.recibida_id = ri.recibida_id + + INNER JOIN recibida r ON r.id = ri.recibida_id + + INNER JOIN Proveedores p ON p.Id_Proveedor = r.proveedor_id + + INNER JOIN Entradas e ON e.Id_Entrada = re.Id_Entrada + + LEFT JOIN travel t ON t.id = e.travel_id + + INNER JOIN (SELECT @a:=0,@cont:=1,@total:=0,@base:=2) t1 + + WHERE re.awb_recibida = NEW.id AND re.percentage GROUP BY r.id + +UNION ALL + + -- Extracomunitarias proveedor contra gasto + SELECT CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) concepto ,p.cuenta subcta,gastos_id, + + NULL eurodebe, ROUND((1+(iva/100)*(r.serie = 'R'))*SUM(bi)/IF(r.serie='W' AND ri.divisa IS NULL,dblRefRate,1)* (re.percentage / 100),2) eurohaber, + + NULL baseeuro,0 iva, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR,r.serie,0 LDIFADUAN + -- antes sols iva + FROM recibida_entrada re + + INNER JOIN recibida_iva ri ON re.recibida_id = ri.recibida_id + + INNER JOIN recibida r ON r.id = ri.recibida_id + + INNER JOIN iva_codigo ic ON ri.iva_id = ic.id + + INNER JOIN Proveedores p ON Id_Proveedor = r.proveedor_id + + INNER JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + WHERE re.awb_recibida = NEW.id AND re.percentage GROUP BY r.id + +UNION ALL + + -- Linea de iva adquisicion + SELECT CONCAT('ADQUI. INTRA FRA ',sref),ic.codigo,p.cuenta contra, + + ROUND(iva/100*SUM(ri.importe) + 0.0001,2) eurodebe, NULL eurohaber, + + ROUND(SUM(ri.importe),2) baseeuro,iva, 1 l340,1 LRECT349,TIPOOPE,'' AUXILIAR,r.serie,0 LDIFADUAN + + FROM awb_recibida ar + + JOIN awb a ON ar.awb_id = a.id + + JOIN iva_codigo ic ON a.iva_id = ic.id + + JOIN iva_tipo it ON ic.iva_tipo_id = it.id + + JOIN Proveedores p ON a.transitario_id = p.Id_Proveedor + + JOIN recibida_intrastat ri ON ri.recibida_id = ar.recibida_id + + JOIN recibida r ON r.id = ri.recibida_id + + JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + WHERE ar.recibida_id = NEW.id AND (p.pais_id <> p2.pais_id) + GROUP BY iva + + UNION ALL + + -- Linea de iva adquisicion + SELECT CONCAT('ADQUI. INTRA FRA ',sref),ic2.codigo,p.cuenta contra, + + NULL eurodebe, ROUND(ic2.iva/100*SUM(ri.importe) + 0.0001,2) eurohaber, + + ROUND(SUM(ri.importe),2) baseeuro,ic2.iva, 1 l340,0 LRECT349, TIPOOPE,'' AUXILIAR,r.serie,0 LDIFADUAN + + FROM awb_recibida ar + + JOIN awb a ON ar.awb_id = a.id + + JOIN iva_codigo ic ON a.iva_id = ic.id + + JOIN iva_codigo ic2 ON ic2.link = ic.link AND ic.id <> ic2.id + + JOIN iva_tipo it ON ic.iva_tipo_id = it.id + + JOIN Proveedores p ON a.transitario_id = p.Id_Proveedor + + JOIN recibida_intrastat ri ON ri.recibida_id = ar.recibida_id + + JOIN recibida r ON r.id = ar.recibida_id + + JOIN Proveedores p1 ON p1.Id_Proveedor = r.proveedor_id + + JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + WHERE ar.recibida_id = NEW.id AND (p.pais_id <> p2.pais_id) GROUP BY ic2.iva + + UNION ALL + -- Linea iva importacion + SELECT concepto,subcta,Cuenta, + IF (NOT ((ppais_id <> p2pais_id) AND CEE < 2), + + eurodebe + ,NULL)eurodebe,eurohaber,baseeuro, iva, + IF(@total:=@total+eurodebe ,0,0) l340, 0 LRECT349, + IF(@cont:=@cont+1,'','') TIPOOPE,'*' AUXILIAR,serie,1 LDIFADUAN FROM ( + + SELECT CONCAT('COMPRA FRA ',p.Proveedor) concepto,ic2.codigo subcta,p.Cuenta,ic2.iva, + ROUND(sum(costefijo * Cantidad / sub1.costetotal * sub2.importe)*(ic2.iva/100),2) eurodebe,NULL eurohaber, -- JGF 17/02/15 canvie 0.21 per ic.iva + ROUND(sum(costefijo * Cantidad / sub1.costetotal * sub2.importe),2) baseeuro,r.serie,pa.CEE,pa.Id_Paisreal ppais_id, + p2.pais_id p2pais_id,SUM(sub3.SumIntrastat *(ic2.iva/100)) SumIntrastat, p.Id_Proveedor,Codintrastat + + FROM awb_recibida ar + + JOIN recibida_entrada re ON ar.recibida_id = re.awb_recibida + + JOIN Compres c ON c.Id_Entrada = re.Id_Entrada + + INNER JOIN Articles a ON a.Id_Article = c.Id_Article + + INNER JOIN ( + + SELECT a.Codintrastat, sum(c.costefijo * c.Cantidad) as costetotal + + FROM Compres c + + JOIN Articles a ON a.Id_Article = c.Id_Article + + JOIN recibida_entrada re ON re.Id_Entrada = c.Id_Entrada + + JOIN awb_recibida ar ON ar.recibida_id = re.awb_recibida + + JOIN awb aw ON ar.awb_id = aw.id + + WHERE ar.recibida_id = NEW.id AND re.percentage + + GROUP BY a.Codintrastat + + ) sub1 USING(Codintrastat) + + INNER JOIN ( + + SELECT Codintrastat,ri.importe, i.iva_codigo_id + + FROM recibida_intrastat ri + JOIN Intrastat i USING(Codintrastat) + + WHERE ri.recibida_id = NEW.id + + ) sub2 USING(Codintrastat) + + INNER JOIN ( + + SELECT SUM(ri.importe) SumIntrastat + + FROM recibida_intrastat ri + + WHERE ri.recibida_id = NEW.id + + ) sub3 + + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + + JOIN Proveedores p ON p.Id_Proveedor = e.Id_Proveedor + + JOIN Paises pa ON p.pais_id = pa.Id + + JOIN recibida r ON r.id = re.recibida_id + + JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + JOIN iva_codigo ic2 ON ic2.id = sub2.iva_codigo_id -- JGF 15/04/15 nou canvi llei (Ali) + + WHERE re.awb_recibida = NEW.id AND re.percentage + -- canvie el cta_proveed like '___1______' per cero cuidao en les van de put + + GROUP BY p.Id_Proveedor, sub2.iva_codigo_id + +) t3 GROUP BY Id_Proveedor, iva)t4; + +-- linea que estava a l'ultim WHERE +END IF; +*/ + END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `recibida_agricola` +-- + +DROP TABLE IF EXISTS `recibida_agricola`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `recibida_agricola` ( + `recibida_id` mediumint(8) unsigned NOT NULL, + `num` smallint(5) unsigned NOT NULL, + PRIMARY KEY (`recibida_id`), + CONSTRAINT `recibida_agricola_ibfk_1` FOREIGN KEY (`recibida_id`) REFERENCES `recibida` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `recibida_entrada` +-- + +DROP TABLE IF EXISTS `recibida_entrada`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `recibida_entrada` ( + `recibida_entrada_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `recibida_id` mediumint(8) unsigned NOT NULL, + `Id_Entrada` int(11) NOT NULL, + `percentage` decimal(10,2) unsigned NOT NULL DEFAULT '0.00', + `awb_recibida` mediumint(8) unsigned NOT NULL, + `Contabilizado` tinyint(3) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`recibida_entrada_id`), + KEY `awb_recibida` (`awb_recibida`), + KEY `Id_Entrada` (`Id_Entrada`), + KEY `recibida_id` (`recibida_id`), + CONSTRAINT `recibida_entrada_ibfk_2` FOREIGN KEY (`Id_Entrada`) REFERENCES `Entradas` (`Id_Entrada`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `recibida_entrada_bi` BEFORE INSERT ON `recibida_entrada` FOR EACH ROW +BEGIN + DECLARE intRecibida INT; + IF NEW.recibida_id = 0 THEN + SELECT recibida_id INTO intRecibida FROM recibida_entrada WHERE Id_Entrada = NEW.Id_Entrada; + SET NEW.recibida_id = intRecibida; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `recibida_entrada_bu` BEFORE UPDATE ON `recibida_entrada` FOR EACH ROW +BEGIN + DECLARE intRecibida INT; + IF NEW.recibida_id = 0 THEN + SELECT recibida_id INTO intRecibida FROM recibida_entrada WHERE Id_Entrada = NEW.Id_Entrada; + SET NEW.recibida_id = intRecibida; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `recibida_intrastat` +-- + +DROP TABLE IF EXISTS `recibida_intrastat`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `recibida_intrastat` ( + `recibida_id` mediumint(8) unsigned NOT NULL, + `Codintrastat` int(8) unsigned zerofill NOT NULL, + `importe` decimal(10,2) NOT NULL, + PRIMARY KEY (`recibida_id`,`Codintrastat`), + KEY `Codintrastat` (`Codintrastat`), + KEY `recibida_id` (`recibida_id`), + CONSTRAINT `recibida_intrastat_ibfk_1` FOREIGN KEY (`recibida_id`) REFERENCES `recibida` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `recibida_intrastat_ibfk_2` FOREIGN KEY (`Codintrastat`) REFERENCES `Intrastat` (`Codintrastat`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `recibida_iva` +-- + +DROP TABLE IF EXISTS `recibida_iva`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `recibida_iva` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `recibida_id` mediumint(8) unsigned NOT NULL, + `iva_id` tinyint(2) unsigned NOT NULL, + `bi` decimal(10,2) NOT NULL, + `gastos_id` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `divisa` decimal(10,2) DEFAULT NULL, + `MYSQL_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `gastos_id` (`gastos_id`), + KEY `recibida_id` (`recibida_id`), + KEY `recibida_iva_ibfk_2` (`iva_id`), + CONSTRAINT `recibida_iva_ibfk_2` FOREIGN KEY (`iva_id`) REFERENCES `iva_codigo` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `recibida_iva_ibfk_5` FOREIGN KEY (`recibida_id`) REFERENCES `recibida` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `recibida_iva_ibfk_6` FOREIGN KEY (`gastos_id`) REFERENCES `Gastos` (`Id_Gasto`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `recibida_vencimiento` +-- + +DROP TABLE IF EXISTS `recibida_vencimiento`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `recibida_vencimiento` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `recibida_id` mediumint(8) unsigned NOT NULL, + `fecha` date NOT NULL, + `banco_id` int(11) NOT NULL DEFAULT '3117', + `cantidad` decimal(10,2) NOT NULL DEFAULT '0.00', + `divisa` decimal(10,2) DEFAULT NULL, + `stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `recibida_id` (`recibida_id`), + KEY `banco_id` (`banco_id`), + CONSTRAINT `recibida_vencimiento_ibfk_6` FOREIGN KEY (`banco_id`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE, + CONSTRAINT `recibida_vencimiento_ibfk_7` FOREIGN KEY (`recibida_id`) REFERENCES `recibida` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`recibida_vencimiento_bi` +BEFORE INSERT ON `vn2008`.`recibida_vencimiento` +FOR EACH ROW +BEGIN + IF NEW.cantidad = 0 THEN + SET NEW.id = 5; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `recovery` +-- + +DROP TABLE IF EXISTS `recovery`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `recovery` ( + `recovery_id` int(11) NOT NULL AUTO_INCREMENT, + `Id_Cliente` int(11) NOT NULL DEFAULT '0', + `dstart` date NOT NULL COMMENT 'Fecha a partir de la que comienza el recobro', + `dend` date DEFAULT NULL COMMENT 'Fecha en la que acaba', + `amount` double NOT NULL, + `period` tinyint(3) unsigned NOT NULL DEFAULT '7', + PRIMARY KEY (`recovery_id`), + KEY `cliente_idx` (`Id_Cliente`), + CONSTRAINT `cliente333` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE, + CONSTRAINT `cliente_cliente` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla apuntaremos los acuerdos de recobro semanal a '; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `recovery_asset` +-- + +DROP TABLE IF EXISTS `recovery_asset`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `recovery_asset` ( + `recovery_asset_id` int(11) NOT NULL AUTO_INCREMENT, + `dreceipt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `amount` double NOT NULL, + `Id_Cliente` int(11) NOT NULL, + PRIMARY KEY (`recovery_asset_id`), + KEY `Cliente_Recovery_detalle_idx` (`Id_Cliente`), + CONSTRAINT `Cliente_Recovery_detalle` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla se registra el detalle de los recobros definid'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `reference_min` +-- + +DROP TABLE IF EXISTS `reference_min`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `reference_min` ( + `date` date NOT NULL, + `rate` double NOT NULL, + `moneda_id` tinyint(3) unsigned NOT NULL DEFAULT '2' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `reference_rate` +-- + +DROP TABLE IF EXISTS `reference_rate`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `reference_rate` ( + `moneda_id` tinyint(3) unsigned NOT NULL, + `date` date NOT NULL, + `rate` float unsigned NOT NULL, + PRIMARY KEY (`moneda_id`,`date`), + KEY `date` (`date`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `reinos` +-- + +DROP TABLE IF EXISTS `reinos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `reinos` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `reino` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `orden` int(10) unsigned DEFAULT NULL, + `display` tinyint(4) NOT NULL DEFAULT '1', + `color` char(6) COLLATE utf8_unicode_ci DEFAULT NULL, + `efimero` int(11) NOT NULL DEFAULT '0' COMMENT 'Sirve para filtrar aquellos reinos que tienen precios estables', + `mercancia` tinyint(1) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `reparacion` +-- + +DROP TABLE IF EXISTS `reparacion`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `reparacion` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `id_user` int(2) DEFAULT NULL, + `config_host` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `problema` text COLLATE utf8_unicode_ci NOT NULL, + `solucion` text COLLATE utf8_unicode_ci NOT NULL, + `estado` enum('No atendida','Vista','En Proceso','Solucionada') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'No atendida', + `fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `id_reparador` int(2) DEFAULT NULL, + `ref` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `articulo` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `marca` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `config_host` (`config_host`), + KEY `id_user` (`id_user`), + KEY `id_reparador` (`id_reparador`), + CONSTRAINT `reparacion_ibfk_1` FOREIGN KEY (`id_user`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `reparacion_ibfk_2` FOREIGN KEY (`config_host`) REFERENCES `config_host` (`config_host_id`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `reparacion_ibfk_4` FOREIGN KEY (`id_reparador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `rolekk` +-- + +DROP TABLE IF EXISTS `rolekk`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `rolekk` ( + `role_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `description` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`role_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `root` +-- + +DROP TABLE IF EXISTS `root`; +/*!50001 DROP VIEW IF EXISTS `root`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `root` AS SELECT + 1 AS `DiadelaSemana`, + 1 AS `Hora`, + 1 AS `Fecha`, + 1 AS `Dispositivo`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `rounding` +-- + +DROP TABLE IF EXISTS `rounding`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `rounding` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `amount` double NOT NULL DEFAULT '0', + `price` double DEFAULT '0', + `discount` double NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `route` +-- + +DROP TABLE IF EXISTS `route`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `route` ( + `agency_id` smallint(5) unsigned NOT NULL, + `week_day` tinyint(3) unsigned NOT NULL COMMENT 'weekday de access el domingo = 1, sabado = 7. Intentar cambiar al de Mysql Lunes = 0', + PRIMARY KEY (`agency_id`,`week_day`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `ruta_location` +-- + +DROP TABLE IF EXISTS `ruta_location`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ruta_location` ( + `Id_Ruta` int(10) unsigned NOT NULL, + `longitude` decimal(11,7) NOT NULL, + `latitude` decimal(11,7) NOT NULL, + `time_location` datetime NOT NULL, + PRIMARY KEY (`Id_Ruta`), + CONSTRAINT `Id_Ruta_Location` FOREIGN KEY (`Id_Ruta`) REFERENCES `Rutas` (`Id_Ruta`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `salarioDits` +-- + +DROP TABLE IF EXISTS `salarioDits`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `salarioDits` ( + `idSalario_dits` int(11) NOT NULL AUTO_INCREMENT, + `idaccion_dits` int(11) NOT NULL, + `ODBC_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Ticket` int(11) NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `value_old` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `value_new` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`idSalario_dits`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `scan` +-- + +DROP TABLE IF EXISTS `scan`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `scan` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `lft` int(11) NOT NULL, + `rgt` int(11) NOT NULL, + `name` varchar(45) CHARACTER SET utf8 DEFAULT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Se borra automaticamente 8 dias en el pasado desde vn2008.clean'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `scan_line` +-- + +DROP TABLE IF EXISTS `scan_line`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `scan_line` ( + `scan_line_id` int(11) NOT NULL AUTO_INCREMENT, + `scan_id` int(11) NOT NULL, + `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`scan_line_id`), + KEY `id_scan_id_idx` (`scan_id`), + CONSTRAINT `id_scan_id` FOREIGN KEY (`scan_id`) REFERENCES `scan` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `sharingcart` +-- + +DROP TABLE IF EXISTS `sharingcart`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `sharingcart` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `Id_Trabajador` int(11) NOT NULL, + `datSTART` date NOT NULL, + `datEND` date NOT NULL, + `Id_Suplente` int(11) NOT NULL, + `odbc_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `Worker` (`Id_Trabajador`), + KEY `Suplent` (`Id_Suplente`), + CONSTRAINT `Suplent_key` FOREIGN KEY (`Id_Suplente`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, + CONSTRAINT `Trabajador_key` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `sharingcart_bi` BEFORE INSERT ON `sharingcart` FOR EACH ROW + +BEGIN + + SET NEW.datSTART = GREATEST(CURDATE(),NEW.datSTART); + SET NEW.datEND = GREATEST(CURDATE(),NEW.datEND); + + IF NEW.Id_Trabajador = NEW.Id_Suplente THEN + SET NEW.Id_Trabajador = NULL; + + + +END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `sharingcart_bu` BEFORE UPDATE ON `sharingcart` FOR EACH ROW + +BEGIN + + SET NEW.datSTART = GREATEST(CURDATE(),NEW.datSTART); + SET NEW.datEND = GREATEST(CURDATE(),NEW.datEND); + + IF NEW.Id_Trabajador = NEW.Id_Suplente THEN + SET NEW.Id_Trabajador = NULL; + + +END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `sharingclient` +-- + +DROP TABLE IF EXISTS `sharingclient`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `sharingclient` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `Id_Trabajador` int(11) NOT NULL, + `datSTART` date NOT NULL, + `datEND` date NOT NULL, + `Id_Cliente` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `Worker` (`Id_Trabajador`), + KEY `Client` (`Id_Cliente`), + CONSTRAINT `Clients_key` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE, + CONSTRAINT `Trabajadores_key` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`sharingclient_BEFORE_INSERT` BEFORE INSERT ON `sharingclient` FOR EACH ROW +BEGIN + +SET NEW.datEND = GREATEST(CURDATE(),NEW.datEND); +SET NEW.datSTART = GREATEST(CURDATE(),NEW.datSTART); + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`sharingclient_BEFORE_UPDATE` BEFORE UPDATE ON `sharingclient` FOR EACH ROW +BEGIN + +SET NEW.datEND = GREATEST(CURDATE(),NEW.datEND); +SET NEW.datSTART = GREATEST(CURDATE(),NEW.datSTART); + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `sms` +-- + +DROP TABLE IF EXISTS `sms`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `sms` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `Id_trabajador` int(11) NOT NULL, + `text` varchar(160) COLLATE utf8_unicode_ci NOT NULL, + `to` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `DATE_ODBC` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `sent` tinyint(4) NOT NULL DEFAULT '0', + `Id_Cliente` int(11) DEFAULT NULL, + `response` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `from` varchar(9) COLLATE utf8_unicode_ci NOT NULL DEFAULT '693474205', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `sms_bi` BEFORE INSERT ON `sms` + FOR EACH ROW + BEGIN + DECLARE intLast INT; + DECLARE strTrab VARCHAR(3); + + SET NEW.`to` = LTRIM(NEW.`to`); + IF NEW.`to` LIKE '6________' or NEW.`to` LIKE '7________'THEN + SET NEW.`to` = CONCAT('0034',REPLACE(NEW.`to`,' ','')); + ELSE + IF NEW.`to` NOT LIKE '00346________' or NEW.`to` NOT LIKE '00347________'THEN + INSERT INTO Mensajes(Mensaje,Fecha,Remitente,Destinatario) + VALUES(CONCAT("El mensaje que ha enviado no contenía un número de teléfono MÓVIL válido:",NEW.`to`),NOW(),20,NEW.Id_trabajador); + SELECT LAST_INSERT_ID() INTO intlast; + SELECT CodigoTrabajador INTO strTrab FROM Trabajadores WHERE id_Trabajador = NEW.Id_Trabajador; + INSERT INTO Incidencias(Incidencia,Id_Trabajador,Destino,Fecha,Fecha_Mod) + VALUES (CONCAT('@@ ' , intLast), 20,strTrab, NOW(),NOW()); + SET NEW.id = 0; +SET intLast = 'fallo provocado'; + END IF; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `split` +-- + +DROP TABLE IF EXISTS `split`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `split` ( + `edi_id` int(11) NOT NULL, + `customer_id` int(11) NOT NULL, + `quantity` int(11) NOT NULL, + KEY `edi_id` (`edi_id`,`customer_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `state` +-- + +DROP TABLE IF EXISTS `state`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `state` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `order` tinyint(3) unsigned DEFAULT NULL, + `alert_level` int(11) NOT NULL DEFAULT '0', + `code` varchar(45) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `code_UNIQUE` (`code`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tag` +-- + +DROP TABLE IF EXISTS `tag`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tag` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(25) CHARACTER SET utf8 NOT NULL, + `free` tinyint(1) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Categorias para etiquetar los productos'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `tarifa_componentes` +-- + +DROP TABLE IF EXISTS `tarifa_componentes`; +/*!50001 DROP VIEW IF EXISTS `tarifa_componentes`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `tarifa_componentes` AS SELECT + 1 AS `Id_Componente`, + 1 AS `Componente`, + 1 AS `tarifa_componentes_series_id`, + 1 AS `tarifa_class`, + 1 AS `tax`, + 1 AS `is_renewable`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `tarifa_componentes_series` +-- + +DROP TABLE IF EXISTS `tarifa_componentes_series`; +/*!50001 DROP VIEW IF EXISTS `tarifa_componentes_series`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `tarifa_componentes_series` AS SELECT + 1 AS `tarifa_componentes_series_id`, + 1 AS `Serie`, + 1 AS `base`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `tarifas` +-- + +DROP TABLE IF EXISTS `tarifas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tarifas` ( + `tarifa_id` int(11) NOT NULL AUTO_INCREMENT, + `fecha` date NOT NULL, + `warehouse_id` smallint(6) unsigned NOT NULL, + `t0` double NOT NULL, + `t1` double NOT NULL, + `t2` double NOT NULL, + `t3` double NOT NULL, + PRIMARY KEY (`tarifa_id`), + KEY `tarifa_warehouse` (`warehouse_id`), + CONSTRAINT `tarifa_warehouse` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tblContadores` +-- + +DROP TABLE IF EXISTS `tblContadores`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tblContadores` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `ochoa` int(10) unsigned NOT NULL, + `nfactura` int(11) DEFAULT '0', + `nasiento` int(11) DEFAULT '0', + `serieA` int(11) DEFAULT '0', + `serieE` int(11) DEFAULT '0', + `serieR` int(11) DEFAULT '0', + `serieC` int(11) DEFAULT '0', + `SerieH` int(11) NOT NULL, + `serieP` int(11) DEFAULT '0', + `serieT` int(11) DEFAULT '0', + `FechaInventario` datetime DEFAULT NULL, + `serieM` int(11) DEFAULT '0', + `HistoricoArticulo` int(11) DEFAULT '0', + `week_goal` int(11) DEFAULT NULL, + `Rutafotos` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `numCaja` int(11) DEFAULT '0', + `CodigoRojo` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Tablet_Hora` datetime DEFAULT NULL, + `t0` int(11) NOT NULL DEFAULT '0', + `t1` int(11) NOT NULL DEFAULT '0', + `t2` int(11) NOT NULL DEFAULT '0', + `t3` int(11) NOT NULL DEFAULT '0', + `cc` double NOT NULL DEFAULT '0', + `palet` double NOT NULL DEFAULT '0', + `campaign` datetime NOT NULL, + `campaign_life` tinyint(3) unsigned NOT NULL, + `truck_days` tinyint(3) unsigned NOT NULL, + `tasa_transporte` double NOT NULL, + `escaner_path` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `turnoimpreso` int(4) DEFAULT NULL, + `truck_length` int(11) DEFAULT '24', + `fuel_consumption` int(11) DEFAULT NULL, + `petrol` decimal(10,1) DEFAULT NULL, + `maintenance` decimal(10,1) DEFAULT NULL, + `hour_price` decimal(10,1) DEFAULT NULL, + `meter_price` decimal(10,1) DEFAULT NULL, + `km_price` decimal(10,1) DEFAULT NULL, + `route_option` int(11) DEFAULT '1', + `dbproduccion` tinyint(1) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`tblContadores_bi` BEFORE INSERT ON `tblContadores` FOR EACH ROW +BEGIN + DECLARE v_count INT; + + SELECT COUNT(*) INTO v_count FROM tblContadores; + + IF v_count > 0 THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'ONLY_ONE_ROW_ALLOWED'; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `tblIVA` +-- + +DROP TABLE IF EXISTS `tblIVA`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tblIVA` ( + `tipoiva` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `iva` smallint(6) NOT NULL DEFAULT '0', + `cuenta` double DEFAULT '0', + `cuentaRE` double DEFAULT '0', + `cuentaivaRE` double DEFAULT '0', + `REQ` double DEFAULT '0', + PRIMARY KEY (`tipoiva`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `template_bionic_component` +-- + +DROP TABLE IF EXISTS `template_bionic_component`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `template_bionic_component` ( + `warehouse_id` smallint(5) unsigned NOT NULL, + `item_id` int(11) NOT NULL, + `component_id` int(10) unsigned NOT NULL, + `cost` decimal(10,4) NOT NULL, + KEY `item_warehouse` (`item_id`,`warehouse_id`) USING BTREE, + KEY `item_warehouse_component` (`item_id`,`warehouse_id`,`component_id`) USING HASH +) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `template_bionic_lot` +-- + +DROP TABLE IF EXISTS `template_bionic_lot`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `template_bionic_lot` ( + `warehouse_id` smallint(5) unsigned NOT NULL, + `item_id` int(11) NOT NULL, + `available` double DEFAULT NULL, + `buy_id` int(11) DEFAULT NULL, + `fix` tinyint(3) unsigned DEFAULT '0', + KEY `item_id` (`item_id`), + KEY `item_warehouse` (`item_id`,`warehouse_id`) USING HASH +) ENGINE=MEMORY DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `template_bionic_price` +-- + +DROP TABLE IF EXISTS `template_bionic_price`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `template_bionic_price` ( + `warehouse_id` smallint(5) unsigned NOT NULL, + `item_id` int(11) NOT NULL, + `rate` tinyint(3) unsigned NOT NULL, + `items` int(11) DEFAULT NULL, + `grouping` int(11) DEFAULT NULL, + `price` decimal(10,2) DEFAULT NULL, + KEY `item_id` (`item_id`) USING BTREE +) ENGINE=MEMORY DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `thermograph` +-- + +DROP TABLE IF EXISTS `thermograph`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `thermograph` ( + `thermograph_id` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `model` enum('TL30','SENSITECH','TREKVIEW1','TREKVIEW2','DISPOSABLE') COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`thermograph_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `ticketCreationData` +-- + +DROP TABLE IF EXISTS `ticketCreationData`; +/*!50001 DROP VIEW IF EXISTS `ticketCreationData`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ticketCreationData` AS SELECT + 1 AS `DiadelaSemana`, + 1 AS `Hora`, + 1 AS `Fecha`, + 1 AS `Dispositivo`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `ticket_location` +-- + +DROP TABLE IF EXISTS `ticket_location`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ticket_location` ( + `Id_Ticket` int(11) NOT NULL, + `longitude` decimal(11,7) DEFAULT NULL, + `latitude` decimal(11,7) DEFAULT NULL, + PRIMARY KEY (`Id_Ticket`), + CONSTRAINT `Id_Ticket_Location` FOREIGN KEY (`Id_Ticket`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `ticket_observation` +-- + +DROP TABLE IF EXISTS `ticket_observation`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ticket_observation` ( + `ticket_observation_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `Id_Ticket` int(11) NOT NULL, + `observation_type_id` tinyint(3) unsigned NOT NULL, + `text` text COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`ticket_observation_id`), + UNIQUE KEY `Id_Ticket` (`Id_Ticket`,`observation_type_id`), + KEY `observation_type_id` (`observation_type_id`), + CONSTRAINT `ticket_observation_ibfk_1` FOREIGN KEY (`Id_Ticket`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `ticket_observation_ibfk_2` FOREIGN KEY (`observation_type_id`) REFERENCES `observation_type` (`observation_type_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Todas las observaciones referentes a un ticket'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `ticket_stateKK` +-- + +DROP TABLE IF EXISTS `ticket_stateKK`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ticket_stateKK` ( + `ticket_id` int(11) NOT NULL, + `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `user_id` int(11) NOT NULL, + `state_id` tinyint(1) unsigned NOT NULL DEFAULT '1', + UNIQUE KEY `ticket_id` (`ticket_id`), + KEY `user_id` (`user_id`), + KEY `state_id` (`state_id`), + CONSTRAINT `ticket_stateKK_ibfk_1` FOREIGN KEY (`ticket_id`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `ticket_stateKK_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE CASCADE, + CONSTRAINT `ticket_stateKK_ibfk_3` FOREIGN KEY (`state_id`) REFERENCES `state` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ticket_stateAfterInsert` + AFTER INSERT ON `ticket_stateKK` FOR EACH ROW +BEGIN + CALL stock.queueAdd ('ticket', NEW.ticket_id, NULL); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ticket_stateAfterDelete` + AFTER UPDATE ON `ticket_stateKK` FOR EACH ROW +BEGIN + CALL stock.queueAdd ('ticket', NEW.ticket_id, OLD.ticket_id); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `tickets_gestdoc` +-- + +DROP TABLE IF EXISTS `tickets_gestdoc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tickets_gestdoc` ( + `Id_Ticket` int(11) NOT NULL, + `gestdoc_id` int(11) NOT NULL, + PRIMARY KEY (`Id_Ticket`,`gestdoc_id`), + KEY `gestdoc_id` (`gestdoc_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `time` +-- + +DROP TABLE IF EXISTS `time`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `time` ( + `date` date NOT NULL, + `period` int(6) NOT NULL, + `month` int(2) NOT NULL, + `year` int(4) NOT NULL, + `day` int(2) NOT NULL, + `week` int(2) NOT NULL, + PRIMARY KEY (`date`), + KEY `day_index` (`day`) USING HASH, + KEY `week_index` (`week`) USING HASH, + KEY `year_index` (`year`) USING HASH, + KEY `month_index` (`month`) USING HASH, + KEY `periodo` (`period`) USING HASH +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tabla de referencia para las semanas, años y meses'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tipsa` +-- + +DROP TABLE IF EXISTS `tipsa`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tipsa` ( + `kilos` tinyint(3) unsigned NOT NULL, + `importe` double unsigned NOT NULL, + `zona` tinyint(3) unsigned NOT NULL, + PRIMARY KEY (`kilos`,`zona`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tmpNEWTARIFAS` +-- + +DROP TABLE IF EXISTS `tmpNEWTARIFAS`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tmpNEWTARIFAS` ( + `Id_Cliente` int(11) NOT NULL, + `Cliente` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `Consumo_medio_mensual` double(17,0) DEFAULT NULL, + `Tarifa_Actual` int(11) DEFAULT '0', + `Nueva_Tarifa` int(11) DEFAULT NULL, + `Id_Trabajador` int(11) DEFAULT '20', + PRIMARY KEY (`Id_Cliente`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `transport` +-- + +DROP TABLE IF EXISTS `transport`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `transport` ( + `wday` tinyint(4) NOT NULL, + PRIMARY KEY (`wday`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `travel` +-- + +DROP TABLE IF EXISTS `travel`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `travel` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `shipment` date DEFAULT NULL, + `shipment_hour` time DEFAULT NULL, + `landing` date NOT NULL, + `landing_hour` time DEFAULT NULL, + `warehouse_id` smallint(6) unsigned DEFAULT NULL, + `warehouse_id_out` smallint(6) unsigned DEFAULT NULL, + `agency_id` int(11) DEFAULT NULL, + `ref` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `delivered` tinyint(1) NOT NULL DEFAULT '0', + `received` tinyint(1) NOT NULL DEFAULT '0', + `m3` decimal(10,2) unsigned DEFAULT NULL, + `kg` decimal(10,0) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `shipment_2` (`shipment`,`landing`,`warehouse_id`,`warehouse_id_out`,`agency_id`,`ref`), + KEY `agency_id` (`agency_id`), + KEY `shipment` (`shipment`), + KEY `landing` (`landing`), + KEY `warehouse_landing` (`warehouse_id`,`landing`), + KEY `warehouse_out_shipment` (`warehouse_id_out`,`shipment`), + CONSTRAINT `travel_ibfk_1` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, + CONSTRAINT `travel_ibfk_2` FOREIGN KEY (`warehouse_id_out`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, + CONSTRAINT `travel_ibfk_3` FOREIGN KEY (`agency_id`) REFERENCES `Agencias` (`Id_Agencia`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `travelBeforeInsert` + BEFORE INSERT ON `travel` FOR EACH ROW +BEGIN + -- Evita fechas absurdas + + IF NEW.landing < TIMESTAMPADD(YEAR, -10, CURDATE()) + OR NEW.shipment < TIMESTAMPADD(YEAR, -10, CURDATE()) + OR NEW.landing < NEW.shipment + THEN + SET NEW.landing = NULL; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `travelBeforeUpdate` + BEFORE UPDATE ON `travel` FOR EACH ROW +BEGIN + DECLARE trabajador INT; + + -- Volem permetre dates iguals de eixida i arribada per al magatzems filiats en warehouse_tree + + IF NEW.landing < NEW.shipment THEN + SET NEW.shipment = NEW.landing; + END IF; + + -- Evita fechas absurdas + + IF NEW.landing < TIMESTAMPADD(YEAR,-10, CURDATE()) + OR NEW.shipment < TIMESTAMPADD(YEAR,-10,CURDATE()) + THEN + SET NEW.landing = NULL; + END IF; + + -- Ditacio para averiguar cuando se marca como delivered = true los travels, pues aparecen por la mañana sin explicacion + + IF ABS(NEW.delivered) > ABS(OLD.delivered) + THEN + SELECT Id_Trabajador into trabajador from Trabajadores where user_id = account.userGetId(); + + INSERT INTO travel_dits (idaccion_dits,Id_Trabajador,Id_Ticket,value_old,value_new) + VALUES (89/*Cambia delivered*/ ,IFNULL(trabajador,20),NEW.id,OLD.delivered,CONCAT(NEW.delivered,' desde ' ,user())); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`travelAfterUpdate` + AFTER UPDATE ON `travel` FOR EACH ROW +BEGIN + CALL stock.queueAdd ('travel', NEW.id, OLD.id); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`travelAfterDelete` + AFTER DELETE ON `travel` FOR EACH ROW +BEGIN + CALL stock.queueAdd ('travel', NULL, OLD.id); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `travel_dits` +-- + +DROP TABLE IF EXISTS `travel_dits`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `travel_dits` ( + `idtravel_dits` int(11) NOT NULL AUTO_INCREMENT, + `idaccion_dits` int(11) NOT NULL, + `ODBC_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Ticket` int(11) NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `value_old` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `value_new` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`idtravel_dits`), + KEY `fgkey1_idx` (`idaccion_dits`), + KEY `fgkey2_idx` (`Id_Ticket`), + KEY `fgkey3_idx` (`Id_Trabajador`), + CONSTRAINT `travel_dits_ibfk_1` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `travel_pattern` +-- + +DROP TABLE IF EXISTS `travel_pattern`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `travel_pattern` ( + `travel_pattern_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `week_start` tinyint(3) unsigned NOT NULL, + `week_end` tinyint(3) unsigned NOT NULL, + `warehouse_out` smallint(5) unsigned NOT NULL, + `warehouse_in` smallint(5) unsigned NOT NULL, + `agency_id` int(11) NOT NULL, + `day_out` tinyint(3) unsigned NOT NULL, + `duration` tinyint(3) unsigned NOT NULL, + `ref` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`travel_pattern_id`), + KEY `warehouse_out` (`warehouse_out`), + KEY `warehouse_in` (`warehouse_in`), + KEY `agency_id` (`agency_id`), + CONSTRAINT `travel_pattern_ibfk_3` FOREIGN KEY (`warehouse_out`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, + CONSTRAINT `travel_pattern_ibfk_4` FOREIGN KEY (`agency_id`) REFERENCES `Agencias` (`Id_Agencia`) ON UPDATE CASCADE, + CONSTRAINT `travel_pattern_ibfk_5` FOREIGN KEY (`warehouse_in`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `travel_reserve` +-- + +DROP TABLE IF EXISTS `travel_reserve`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `travel_reserve` ( + `travel_reserve_id` int(11) NOT NULL AUTO_INCREMENT, + `travel_id` int(11) unsigned NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `reserved` decimal(4,1) DEFAULT NULL, + `buyed` decimal(4,1) DEFAULT NULL, + `askingfor` decimal(4,1) DEFAULT NULL, + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `labeled` decimal(4,1) unsigned NOT NULL DEFAULT '0.0', + PRIMARY KEY (`Id_Trabajador`,`travel_id`), + UNIQUE KEY `travel_reserve_id_UNIQUE` (`travel_reserve_id`), + KEY `travel_travel_reserve_idx` (`travel_id`), + KEY `traveL_buyer_id_idx` (`Id_Trabajador`), + CONSTRAINT `travel_reserve_ibfk_1` FOREIGN KEY (`travel_id`) REFERENCES `travel` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla almacenamos los m3 que cada comprador tiene asignados, por travel.'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `travel_thermograph` +-- + +DROP TABLE IF EXISTS `travel_thermograph`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `travel_thermograph` ( + `thermograph_id` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `odbc_date` date NOT NULL, + `warehouse_id` smallint(6) unsigned NOT NULL, + `travel_id` int(10) unsigned DEFAULT NULL, + `temperature` enum('COOL','WARM') COLLATE utf8_unicode_ci NOT NULL, + `result` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `gestdoc_id` int(11) DEFAULT NULL, + PRIMARY KEY (`thermograph_id`,`odbc_date`), + KEY `thermograph_fk_idx` (`thermograph_id`), + KEY `gestdoc_fk_idx` (`gestdoc_id`), + KEY `travel_id` (`travel_id`), + KEY `warehouse_id` (`warehouse_id`), + CONSTRAINT `gestdoc_fk` FOREIGN KEY (`gestdoc_id`) REFERENCES `gestdoc` (`id`) ON UPDATE CASCADE, + CONSTRAINT `thermograph_fk` FOREIGN KEY (`thermograph_id`) REFERENCES `thermograph` (`thermograph_id`) ON UPDATE CASCADE, + CONSTRAINT `travel_fk` FOREIGN KEY (`travel_id`) REFERENCES `travel` (`id`), + CONSTRAINT `travel_thermograph_ibfk_1` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Registra cada termografo que se ha introducido en cada travel'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `trolley` +-- + +DROP TABLE IF EXISTS `trolley`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `trolley` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `ref` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `turn` +-- + +DROP TABLE IF EXISTS `turn`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `turn` ( + `number` int(11) NOT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`number`,`odbc_date`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `unary` +-- + +DROP TABLE IF EXISTS `unary`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `unary` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `parent` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `idunary_UNIQUE` (`id`), + KEY `unary_parent_idx` (`parent`), + CONSTRAINT `unary_parent` FOREIGN KEY (`parent`) REFERENCES `unary` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `unaryScanFilter` +-- + +DROP TABLE IF EXISTS `unaryScanFilter`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `unaryScanFilter` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `filter` text COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `unary_scan` +-- + +DROP TABLE IF EXISTS `unary_scan`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `unary_scan` ( + `unary_id` int(11) NOT NULL, + `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `type` set('BUYS','EXPEDITIONS') COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`unary_id`), + KEY `scan_unary_idx` (`unary_id`), + CONSTRAINT `unary_scan` FOREIGN KEY (`unary_id`) REFERENCES `unary` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `unary_scan_line` +-- + +DROP TABLE IF EXISTS `unary_scan_line`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `unary_scan_line` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `unary_id` int(11) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `id_UNIQUE` (`id`), + KEY `unary_line_idx` (`unary_id`), + CONSTRAINT `unary_line` FOREIGN KEY (`unary_id`) REFERENCES `unary_scan` (`unary_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `unary_scan_line_buy` +-- + +DROP TABLE IF EXISTS `unary_scan_line_buy`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `unary_scan_line_buy` ( + `scan_line_id` int(11) NOT NULL, + `Id_Article` int(11) NOT NULL, + PRIMARY KEY (`scan_line_id`), + UNIQUE KEY `scan_line_id_UNIQUE` (`scan_line_id`), + KEY `Id_Article_buy_idx` (`Id_Article`), + CONSTRAINT `Id_Article_buy` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `scan_line_id_patriarcal` FOREIGN KEY (`scan_line_id`) REFERENCES `unary_scan_line` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `unary_scan_line_expedition` +-- + +DROP TABLE IF EXISTS `unary_scan_line_expedition`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `unary_scan_line_expedition` ( + `scan_line_id` int(11) NOT NULL, + `expedition_id` int(11) NOT NULL, + PRIMARY KEY (`scan_line_id`), + UNIQUE KEY `scan_line_id_UNIQUE` (`scan_line_id`), + KEY `expedition_id_scan_idx` (`expedition_id`), + CONSTRAINT `expedition_id_scan` FOREIGN KEY (`expedition_id`) REFERENCES `expeditions` (`expeditions_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `unary_source` +-- + +DROP TABLE IF EXISTS `unary_source`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `unary_source` ( + `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `v_Agenda` +-- + +DROP TABLE IF EXISTS `v_Agenda`; +/*!50001 DROP VIEW IF EXISTS `v_Agenda`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_Agenda` AS SELECT + 1 AS `Tipo`, + 1 AS `Id`, + 1 AS `Nombre`, + 1 AS `Telephone`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_Agenda2` +-- + +DROP TABLE IF EXISTS `v_Agenda2`; +/*!50001 DROP VIEW IF EXISTS `v_Agenda2`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_Agenda2` AS SELECT + 1 AS `Tipo`, + 1 AS `Id`, + 1 AS `Nombre`, + 1 AS `Telefono`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_Articles_botanical` +-- + +DROP TABLE IF EXISTS `v_Articles_botanical`; +/*!50001 DROP VIEW IF EXISTS `v_Articles_botanical`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_Articles_botanical` AS SELECT + 1 AS `Id_Article`, + 1 AS `edi_botanic`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_Movimientos_Volumen_shipping_charge` +-- + +DROP TABLE IF EXISTS `v_Movimientos_Volumen_shipping_charge`; +/*!50001 DROP VIEW IF EXISTS `v_Movimientos_Volumen_shipping_charge`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_Movimientos_Volumen_shipping_charge` AS SELECT + 1 AS `Id_Ticket`, + 1 AS `Id_Movimiento`, + 1 AS `Fecha`, + 1 AS `price`, + 1 AS `freight`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_Ordenes` +-- + +DROP TABLE IF EXISTS `v_Ordenes`; +/*!50001 DROP VIEW IF EXISTS `v_Ordenes`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_Ordenes` AS SELECT + 1 AS `Id_ORDEN`, + 1 AS `ORDEN`, + 1 AS `datORDEN`, + 1 AS `datTICKET`, + 1 AS `CodVENDEDOR`, + 1 AS `CodCOMPRADOR`, + 1 AS `CANTIDAD`, + 1 AS `PRECIOMAX`, + 1 AS `PREU`, + 1 AS `Id_ARTICLE`, + 1 AS `Id_CLIENTE`, + 1 AS `COMENTARIO`, + 1 AS `OK`, + 1 AS `TOTAL`, + 1 AS `datCOMPRA`, + 1 AS `KO`, + 1 AS `Id_Movimiento`, + 1 AS `odbc_date`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_XDiario_ALL` +-- + +DROP TABLE IF EXISTS `v_XDiario_ALL`; +/*!50001 DROP VIEW IF EXISTS `v_XDiario_ALL`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_XDiario_ALL` AS SELECT + 1 AS `empresa_id`, + 1 AS `SUBCTA`, + 1 AS `Eurodebe`, + 1 AS `Eurohaber`, + 1 AS `Fecha`, + 1 AS `FECHA_EX`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_accion` +-- + +DROP TABLE IF EXISTS `v_accion`; +/*!50001 DROP VIEW IF EXISTS `v_accion`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_accion` AS SELECT + 1 AS `accion_id`, + 1 AS `accion`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_account` +-- + +DROP TABLE IF EXISTS `v_account`; +/*!50001 DROP VIEW IF EXISTS `v_account`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_account` AS SELECT + 1 AS `user_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_analisis_ventas` +-- + +DROP TABLE IF EXISTS `v_analisis_ventas`; +/*!50001 DROP VIEW IF EXISTS `v_analisis_ventas`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_analisis_ventas` AS SELECT + 1 AS `Familia`, + 1 AS `Reino`, + 1 AS `Comercial`, + 1 AS `Comprador`, + 1 AS `Provincia`, + 1 AS `almacen`, + 1 AS `Año`, + 1 AS `Mes`, + 1 AS `Semana`, + 1 AS `Vista`, + 1 AS `Importe`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_awb_volumen` +-- + +DROP TABLE IF EXISTS `v_awb_volumen`; +/*!50001 DROP VIEW IF EXISTS `v_awb_volumen`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_awb_volumen` AS SELECT + 1 AS `awb_id`, + 1 AS `codigo`, + 1 AS `importe`, + 1 AS `Vol_Total`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_barcodes` +-- + +DROP TABLE IF EXISTS `v_barcodes`; +/*!50001 DROP VIEW IF EXISTS `v_barcodes`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_barcodes` AS SELECT + 1 AS `code`, + 1 AS `Id_Article`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_barcodes_plus` +-- + +DROP TABLE IF EXISTS `v_barcodes_plus`; +/*!50001 DROP VIEW IF EXISTS `v_barcodes_plus`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_barcodes_plus` AS SELECT + 1 AS `code`, + 1 AS `Id_Article`, + 1 AS `Article`, + 1 AS `Medida`, + 1 AS `Color`, + 1 AS `Categoria`, + 1 AS `Producer`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_botanic_export` +-- + +DROP TABLE IF EXISTS `v_botanic_export`; +/*!50001 DROP VIEW IF EXISTS `v_botanic_export`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_botanic_export` AS SELECT + 1 AS `Nom_botanic`, + 1 AS `Id_Paises`, + 1 AS `restriction`, + 1 AS `description`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_compres` +-- + +DROP TABLE IF EXISTS `v_compres`; +/*!50001 DROP VIEW IF EXISTS `v_compres`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_compres` AS SELECT + 1 AS `Familia`, + 1 AS `reino_id`, + 1 AS `Id_Compra`, + 1 AS `Id_Entrada`, + 1 AS `Id_Article`, + 1 AS `Cantidad`, + 1 AS `Costefijo`, + 1 AS `Portefijo`, + 1 AS `Novincular`, + 1 AS `Etiquetas`, + 1 AS `Packing`, + 1 AS `grouping`, + 1 AS `Comisionfija`, + 1 AS `Embalajefijo`, + 1 AS `Nicho`, + 1 AS `Id_Cubo`, + 1 AS `Tarifa1`, + 1 AS `Tarifa2`, + 1 AS `Tarifa3`, + 1 AS `PVP`, + 1 AS `Vida`, + 1 AS `Id_Trabajador`, + 1 AS `punteo`, + 1 AS `odbc_date`, + 1 AS `Inventario`, + 1 AS `Id_Proveedor`, + 1 AS `Fecha`, + 1 AS `Confirmada`, + 1 AS `Redada`, + 1 AS `empresa_id`, + 1 AS `travel_id`, + 1 AS `Pedida`, + 1 AS `recibida_id`, + 1 AS `id`, + 1 AS `shipment`, + 1 AS `landing`, + 1 AS `warehouse_id`, + 1 AS `warehouse_id_out`, + 1 AS `agency_id`, + 1 AS `ref`, + 1 AS `delivered`, + 1 AS `received`, + 1 AS `Article`, + 1 AS `Medida`, + 1 AS `Tallos`, + 1 AS `caja`, + 1 AS `Categoria`, + 1 AS `id_origen`, + 1 AS `Tipo`, + 1 AS `tipo_id`, + 1 AS `Color`, + 1 AS `Min`, + 1 AS `Coste`, + 1 AS `fuente`, + 1 AS `iva_group_id`, + 1 AS `cm3`, + 1 AS `producer_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_departure_limit` +-- + +DROP TABLE IF EXISTS `v_departure_limit`; +/*!50001 DROP VIEW IF EXISTS `v_departure_limit`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_departure_limit` AS SELECT + 1 AS `warehouse_id`, + 1 AS `fecha`, + 1 AS `hora`, + 1 AS `minSpeed`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_descuadre_bionic` +-- + +DROP TABLE IF EXISTS `v_descuadre_bionic`; +/*!50001 DROP VIEW IF EXISTS `v_descuadre_bionic`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_descuadre_bionic` AS SELECT + 1 AS `Id_Ticket`, + 1 AS `Alias`, + 1 AS `Concepte`, + 1 AS `suma_componente`, + 1 AS `Preu`, + 1 AS `Descuento`, + 1 AS `diferencia`, + 1 AS `Fecha`, + 1 AS `benvenut`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_descuadre_porte` +-- + +DROP TABLE IF EXISTS `v_descuadre_porte`; +/*!50001 DROP VIEW IF EXISTS `v_descuadre_porte`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_descuadre_porte` AS SELECT + 1 AS `Id_Ticket`, + 1 AS `suma_componente`, + 1 AS `teorico_agencia`, + 1 AS `diferencia`, + 1 AS `Fecha`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_descuadre_porte2` +-- + +DROP TABLE IF EXISTS `v_descuadre_porte2`; +/*!50001 DROP VIEW IF EXISTS `v_descuadre_porte2`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_descuadre_porte2` AS SELECT + 1 AS `Id_Ticket`, + 1 AS `suma_componente`, + 1 AS `Fecha`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_empresa` +-- + +DROP TABLE IF EXISTS `v_empresa`; +/*!50001 DROP VIEW IF EXISTS `v_empresa`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_empresa` AS SELECT + 1 AS `logo`, + 1 AS `id`, + 1 AS `registro`, + 1 AS `gerente_id`, + 1 AS `alta`, + 1 AS `Nombre`, + 1 AS `Apellidos`, + 1 AS `Proveedor`, + 1 AS `Domicilio`, + 1 AS `CP`, + 1 AS `Localidad`, + 1 AS `NIF`, + 1 AS `Telefono`, + 1 AS `Alias`, + 1 AS `abbreviation`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_encajado` +-- + +DROP TABLE IF EXISTS `v_encajado`; +/*!50001 DROP VIEW IF EXISTS `v_encajado`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_encajado` AS SELECT + 1 AS `hora`, + 1 AS `minuto`, + 1 AS `cm3`, + 1 AS `warehouse_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_encajado_ultima_hora` +-- + +DROP TABLE IF EXISTS `v_encajado_ultima_hora`; +/*!50001 DROP VIEW IF EXISTS `v_encajado_ultima_hora`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_encajado_ultima_hora` AS SELECT + 1 AS `m3`, + 1 AS `warehouse_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_expeditions_shipping_charge` +-- + +DROP TABLE IF EXISTS `v_expeditions_shipping_charge`; +/*!50001 DROP VIEW IF EXISTS `v_expeditions_shipping_charge`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_expeditions_shipping_charge` AS SELECT + 1 AS `Id_Ticket`, + 1 AS `shipping_charge`, + 1 AS `Fecha`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_expeditions_shipping_charge2` +-- + +DROP TABLE IF EXISTS `v_expeditions_shipping_charge2`; +/*!50001 DROP VIEW IF EXISTS `v_expeditions_shipping_charge2`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_expeditions_shipping_charge2` AS SELECT + 1 AS `Id_Ticket`, + 1 AS `shipping_charge`, + 1 AS `Fecha`, + 1 AS `warehouse_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_fallo` +-- + +DROP TABLE IF EXISTS `v_fallo`; +/*!50001 DROP VIEW IF EXISTS `v_fallo`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_fallo` AS SELECT + 1 AS `queja_id`, + 1 AS `accion_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_inter` +-- + +DROP TABLE IF EXISTS `v_inter`; +/*!50001 DROP VIEW IF EXISTS `v_inter`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_inter` AS SELECT + 1 AS `inter_id`, + 1 AS `state_id`, + 1 AS `nota`, + 1 AS `odbc_date`, + 1 AS `Id_Ticket`, + 1 AS `Id_Trabajador`, + 1 AS `Id_supervisor`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_jerarquia` +-- + +DROP TABLE IF EXISTS `v_jerarquia`; +/*!50001 DROP VIEW IF EXISTS `v_jerarquia`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_jerarquia` AS SELECT + 1 AS `Id_Trabajador`, + 1 AS `boss_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_location` +-- + +DROP TABLE IF EXISTS `v_location`; +/*!50001 DROP VIEW IF EXISTS `v_location`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_location` AS SELECT + 1 AS `longitude`, + 1 AS `latitude`, + 1 AS `Id_Consigna`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_mana_spellers` +-- + +DROP TABLE IF EXISTS `v_mana_spellers`; +/*!50001 DROP VIEW IF EXISTS `v_mana_spellers`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_mana_spellers` AS SELECT + 1 AS `Id_Trabajador`, + 1 AS `size`, + 1 AS `used`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_miriam` +-- + +DROP TABLE IF EXISTS `v_miriam`; +/*!50001 DROP VIEW IF EXISTS `v_miriam`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_miriam` AS SELECT + 1 AS `Id_Article`, + 1 AS `Concepte`, + 1 AS `Cantidad`, + 1 AS `Preu`, + 1 AS `Descuento`, + 1 AS `Fecha`, + 1 AS `Id_Cliente`, + 1 AS `Importe`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_movimientos_log` +-- + +DROP TABLE IF EXISTS `v_movimientos_log`; +/*!50001 DROP VIEW IF EXISTS `v_movimientos_log`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_movimientos_log` AS SELECT + 1 AS `idmovimientos_log`, + 1 AS `Id_Movimiento`, + 1 AS `odbc_date`, + 1 AS `Id_Trabajador`, + 1 AS `field_name`, + 1 AS `new_value`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_movimientos_mark` +-- + +DROP TABLE IF EXISTS `v_movimientos_mark`; +/*!50001 DROP VIEW IF EXISTS `v_movimientos_mark`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_movimientos_mark` AS SELECT + 1 AS `Id_Movimiento`, + 1 AS `Accion`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_pedidos_auto_preparados` +-- + +DROP TABLE IF EXISTS `v_pedidos_auto_preparados`; +/*!50001 DROP VIEW IF EXISTS `v_pedidos_auto_preparados`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_pedidos_auto_preparados` AS SELECT + 1 AS `CodigoTrabajador`, + 1 AS `Id_Ticket`, + 1 AS `Momento`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_pedidos_auto_preparadoskk` +-- + +DROP TABLE IF EXISTS `v_pedidos_auto_preparadoskk`; +/*!50001 DROP VIEW IF EXISTS `v_pedidos_auto_preparadoskk`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_pedidos_auto_preparadoskk` AS SELECT + 1 AS `CodigoTrabajador`, + 1 AS `Fecha`, + 1 AS `Id_Ticket`, + 1 AS `Momento`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_phonebook` +-- + +DROP TABLE IF EXISTS `v_phonebook`; +/*!50001 DROP VIEW IF EXISTS `v_phonebook`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_phonebook` AS SELECT + 1 AS `Id_Cliente`, + 1 AS `Telefono`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_price_fixed` +-- + +DROP TABLE IF EXISTS `v_price_fixed`; +/*!50001 DROP VIEW IF EXISTS `v_price_fixed`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_price_fixed` AS SELECT + 1 AS `warehouse_id`, + 1 AS `item_id`, + 1 AS `rate_0`, + 1 AS `rate_1`, + 1 AS `rate_2`, + 1 AS `rate_3`, + 1 AS `date_start`, + 1 AS `date_end`, + 1 AS `bonus`, + 1 AS `grouping`, + 1 AS `Packing`, + 1 AS `caja`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_price_fixed_group` +-- + +DROP TABLE IF EXISTS `v_price_fixed_group`; +/*!50001 DROP VIEW IF EXISTS `v_price_fixed_group`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_price_fixed_group` AS SELECT + 1 AS `warehouse_id`, + 1 AS `item_id`, + 1 AS `rate_0`, + 1 AS `rate_1`, + 1 AS `rate_2`, + 1 AS `rate_3`, + 1 AS `date_start`, + 1 AS `date_end`, + 1 AS `bonus`, + 1 AS `grouping`, + 1 AS `Packing`, + 1 AS `caja`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_session` +-- + +DROP TABLE IF EXISTS `v_session`; +/*!50001 DROP VIEW IF EXISTS `v_session`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_session` AS SELECT + 1 AS `id`, + 1 AS `CodigoTrabajador`, + 1 AS `Id_Trabajador`, + 1 AS `Id_Cliente`, + 1 AS `Cliente`, + 1 AS `Fecha`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_ticket_amount` +-- + +DROP TABLE IF EXISTS `v_ticket_amount`; +/*!50001 DROP VIEW IF EXISTS `v_ticket_amount`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_ticket_amount` AS SELECT + 1 AS `Id_Ticket`, + 1 AS `amount`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_trabajadores` +-- + +DROP TABLE IF EXISTS `v_trabajadores`; +/*!50001 DROP VIEW IF EXISTS `v_trabajadores`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_trabajadores` AS SELECT + 1 AS `CodigoTrabajador`, + 1 AS `Nombre`, + 1 AS `Fecha_Inicio`, + 1 AS `Password`, + 1 AS `user`, + 1 AS `Apellidos`, + 1 AS `Id_Trabajador`, + 1 AS `Foto`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_user` +-- + +DROP TABLE IF EXISTS `v_user`; +/*!50001 DROP VIEW IF EXISTS `v_user`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_user` AS SELECT + 1 AS `id`, + 1 AS `mysql_user_id`, + 1 AS `name`, + 1 AS `password`, + 1 AS `active`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_ventes` +-- + +DROP TABLE IF EXISTS `v_ventes`; +/*!50001 DROP VIEW IF EXISTS `v_ventes`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_ventes` AS SELECT + 1 AS `Agencia`, + 1 AS `Categoria`, + 1 AS `tipo_id`, + 1 AS `Medida`, + 1 AS `Article`, + 1 AS `Color`, + 1 AS `Id_Cliente`, + 1 AS `Tipo`, + 1 AS `Factura`, + 1 AS `warehouse_id`, + 1 AS `Id_Movimiento`, + 1 AS `Id_Article`, + 1 AS `Familia`, + 1 AS `Id_Ticket`, + 1 AS `Concepte`, + 1 AS `Cantidad`, + 1 AS `quantity`, + 1 AS `Preu`, + 1 AS `Descuento`, + 1 AS `CostFixat`, + 1 AS `Reservado`, + 1 AS `OK`, + 1 AS `PrecioFijado`, + 1 AS `odbc_date`, + 1 AS `Fecha`, + 1 AS `FechaCompleta`, + 1 AS `Alias`, + 1 AS `Id_Consigna`, + 1 AS `Importe`, + 1 AS `Origen`, + 1 AS `reino_id`, + 1 AS `invoice`, + 1 AS `producer_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_venteskk` +-- + +DROP TABLE IF EXISTS `v_venteskk`; +/*!50001 DROP VIEW IF EXISTS `v_venteskk`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_venteskk` AS SELECT + 1 AS `Agencia`, + 1 AS `Categoria`, + 1 AS `tipo_id`, + 1 AS `Medida`, + 1 AS `Article`, + 1 AS `Color`, + 1 AS `Id_Cliente`, + 1 AS `Tipo`, + 1 AS `Factura`, + 1 AS `warehouse_id`, + 1 AS `Id_Movimiento`, + 1 AS `Id_Article`, + 1 AS `Familia`, + 1 AS `Id_Ticket`, + 1 AS `Concepte`, + 1 AS `Cantidad`, + 1 AS `quantity`, + 1 AS `Preu`, + 1 AS `Descuento`, + 1 AS `CostFixat`, + 1 AS `Reservado`, + 1 AS `OK`, + 1 AS `PrecioFijado`, + 1 AS `odbc_date`, + 1 AS `Fecha`, + 1 AS `FechaCompleta`, + 1 AS `Alias`, + 1 AS `Id_Consigna`, + 1 AS `Importe`, + 1 AS `Origen`, + 1 AS `reino_id`, + 1 AS `invoice`, + 1 AS `producer_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_warehouse` +-- + +DROP TABLE IF EXISTS `v_warehouse`; +/*!50001 DROP VIEW IF EXISTS `v_warehouse`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_warehouse` AS SELECT + 1 AS `id`, + 1 AS `almacen`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_xsubclien` +-- + +DROP TABLE IF EXISTS `v_xsubclien`; +/*!50001 DROP VIEW IF EXISTS `v_xsubclien`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_xsubclien` AS SELECT + 1 AS `Id_Cliente`, + 1 AS `empresa_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_xsubcuentas` +-- + +DROP TABLE IF EXISTS `v_xsubcuentas`; +/*!50001 DROP VIEW IF EXISTS `v_xsubcuentas`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_xsubcuentas` AS SELECT + 1 AS `COD`, + 1 AS `TITULO`, + 1 AS `NIF`, + 1 AS `DOMICILIO`, + 1 AS `POBLACION`, + 1 AS `PROVINCIA`, + 1 AS `CODPOSTAL`, + 1 AS `country_code`, + 1 AS `empresa_id`, + 1 AS `EMAIL`, + 1 AS `IDNIF`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_xsubprov` +-- + +DROP TABLE IF EXISTS `v_xsubprov`; +/*!50001 DROP VIEW IF EXISTS `v_xsubprov`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_xsubprov` AS SELECT + 1 AS `proveedor_id`, + 1 AS `empresa_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `versiones` +-- + +DROP TABLE IF EXISTS `versiones`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `versiones` ( + `programa` varchar(11) COLLATE utf8_unicode_ci NOT NULL, + `version` int(11) NOT NULL, + `critical` tinyint(4) NOT NULL DEFAULT '0', + PRIMARY KEY (`programa`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `viaxpress` +-- + +DROP TABLE IF EXISTS `viaxpress`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `viaxpress` ( + `codigo_postal` varchar(5) COLLATE utf8_unicode_ci NOT NULL, + `zona` tinyint(4) NOT NULL DEFAULT '2', + `m_t` tinyint(4) NOT NULL DEFAULT '0', + `POBLACION` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + `PROVINCIA` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`codigo_postal`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `vnCreditClassification` +-- + +DROP TABLE IF EXISTS `vnCreditClassification`; +/*!50001 DROP VIEW IF EXISTS `vnCreditClassification`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `vnCreditClassification` AS SELECT + 1 AS `id`, + 1 AS `client`, + 1 AS `dateStart`, + 1 AS `dateEnd`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `vnCreditInsurance` +-- + +DROP TABLE IF EXISTS `vnCreditInsurance`; +/*!50001 DROP VIEW IF EXISTS `vnCreditInsurance`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `vnCreditInsurance` AS SELECT + 1 AS `id`, + 1 AS `creditClassification`, + 1 AS `credit`, + 1 AS `creationDate`, + 1 AS `grade`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `vnSolunionCAP` +-- + +DROP TABLE IF EXISTS `vnSolunionCAP`; +/*!50001 DROP VIEW IF EXISTS `vnSolunionCAP`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `vnSolunionCAP` AS SELECT + 1 AS `creditInsurance`, + 1 AS `dateStart`, + 1 AS `dateEnd`, + 1 AS `dateLeaving`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `warehouse` +-- + +DROP TABLE IF EXISTS `warehouse`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `warehouse` ( + `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `fuente` tinyint(1) unsigned NOT NULL DEFAULT '0', + `address_name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `delay` double NOT NULL DEFAULT '0.004', + `reserve` tinyint(4) NOT NULL DEFAULT '0', + `tpv` tinyint(2) unsigned zerofill NOT NULL DEFAULT '00', + `Id_Paises` mediumint(8) unsigned NOT NULL DEFAULT '1', + `zone_label` tinyint(4) NOT NULL DEFAULT '0', + `comisionantes` tinyint(4) NOT NULL DEFAULT '0', + `inventario` tinyint(2) NOT NULL DEFAULT '0', + `is_comparative` tinyint(2) NOT NULL DEFAULT '0' COMMENT 'Si esta a true,en la comparativa muestra el stock de este almacen, cuando no se especifica almacen.', + `valuatedInventory` tinyint(2) NOT NULL DEFAULT '0', + `isManaged` tinyint(2) NOT NULL DEFAULT '0', + `hasConfectionTeam` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `name_UNIQUE` (`name`), + KEY `Id_Paises` (`Id_Paises`), + CONSTRAINT `warehouse_ibfk_1` FOREIGN KEY (`Id_Paises`) REFERENCES `Paises` (`Id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `warehouse_ai` AFTER INSERT ON `warehouse` FOR EACH ROW +begin + IF NEW.Fuente THEN + INSERT INTO warehouse_alias (alias) VALUES(NEW.`name`); + INSERT INTO warehouse_joined(warehouse_id,warehouse_alias_id) + VALUES(NEW.id,LAST_INSERT_ID()); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `warehouse_au` AFTER UPDATE ON `warehouse` FOR EACH ROW +begin + IF NEW.fuente IS TRUE and OLD.fuente IS FALSE then + INSERT INTO warehouse_alias (alias) VALUES(NEW.`name`); + INSERT INTO warehouse_joined(warehouse_id,warehouse_alias_id) + VALUES(NEW.id,LAST_INSERT_ID()); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Table structure for table `warehouse_alias` +-- + +DROP TABLE IF EXISTS `warehouse_alias`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `warehouse_alias` ( + `warehouse_alias_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `alias` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`warehouse_alias_id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_filtro` +-- + +DROP TABLE IF EXISTS `warehouse_filtro`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `warehouse_filtro` ( + `warehouse_id` smallint(6) unsigned NOT NULL, + `Id_Trabajador` int(11) NOT NULL, + `ok` tinyint(3) unsigned DEFAULT '1', + PRIMARY KEY (`Id_Trabajador`,`warehouse_id`), + KEY `wh_worker_idx` (`Id_Trabajador`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tabla que permite filtrar los almacenes que muestra la comparativa, recordando la selección personal del usuario'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_group` +-- + +DROP TABLE IF EXISTS `warehouse_group`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `warehouse_group` ( + `warehouse_alias_id` smallint(5) unsigned NOT NULL DEFAULT '22', + `warehouse_id` smallint(5) unsigned NOT NULL, + PRIMARY KEY (`warehouse_alias_id`,`warehouse_id`), + KEY `warehosue_group_ware_idx` (`warehouse_id`), + CONSTRAINT `warehosue_group_ware` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `warehouse_group_alias` FOREIGN KEY (`warehouse_alias_id`) REFERENCES `warehouse_alias` (`warehouse_alias_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Agrupa warehouses '; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_joined` +-- + +DROP TABLE IF EXISTS `warehouse_joined`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `warehouse_joined` ( + `warehouse_id` smallint(5) unsigned NOT NULL, + `warehouse_alias_id` smallint(5) unsigned NOT NULL, + PRIMARY KEY (`warehouse_id`,`warehouse_alias_id`), + CONSTRAINT `warehouse_joined_ibfk_3` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_lc` +-- + +DROP TABLE IF EXISTS `warehouse_lc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `warehouse_lc` ( + `whin` smallint(6) unsigned NOT NULL, + `whout` smallint(6) unsigned NOT NULL, + `m3` double NOT NULL DEFAULT '15', + `days` int(11) NOT NULL DEFAULT '1', + PRIMARY KEY (`whin`,`whout`), + KEY `whout_wh_idx` (`whout`), + CONSTRAINT `whin_wh` FOREIGN KEY (`whin`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, + CONSTRAINT `whout_wh` FOREIGN KEY (`whout`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Warehouses cost for linking'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_pickup` +-- + +DROP TABLE IF EXISTS `warehouse_pickup`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `warehouse_pickup` ( + `warehouse_id` smallint(5) unsigned NOT NULL, + `agency_id` int(11) DEFAULT NULL, + PRIMARY KEY (`warehouse_id`), + UNIQUE KEY `agency_id` (`agency_id`,`warehouse_id`), + CONSTRAINT `warehouse_pickup_ibfk_1` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `warehouse_pickup_ibfk_2` FOREIGN KEY (`agency_id`) REFERENCES `Agencias` (`Id_Agencia`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `warehouse_tree_bidi` +-- + +DROP TABLE IF EXISTS `warehouse_tree_bidi`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `warehouse_tree_bidi` ( + `father` tinyint(1) unsigned NOT NULL, + `son` tinyint(1) unsigned NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `wh_selection` +-- + +DROP TABLE IF EXISTS `wh_selection`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `wh_selection` ( + `Id_Trabajador` int(11) NOT NULL, + `warehouse_id` smallint(6) unsigned NOT NULL, + PRIMARY KEY (`Id_Trabajador`,`warehouse_id`), + KEY `Trabajadores` (`Id_Trabajador`), + KEY `Warehouse` (`warehouse_id`), + CONSTRAINT `Trabajadores` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, + CONSTRAINT `Warehouse` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Permite que los usuarios seleccionen los almacenes que van a'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `widget` +-- + +DROP TABLE IF EXISTS `widget`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `widget` ( + `widget_id` int(11) NOT NULL, + `chr` int(11) NOT NULL, + PRIMARY KEY (`widget_id`), + UNIQUE KEY `chr_UNIQUE` (`chr`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `wks` +-- + +DROP TABLE IF EXISTS `wks`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `wks` ( + `wk` int(10) unsigned NOT NULL, + `yr` int(10) unsigned NOT NULL, + `vwk` int(10) unsigned NOT NULL, + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `comments` text COLLATE utf8_unicode_ci, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `workcenter_holiday` +-- + +DROP TABLE IF EXISTS `workcenter_holiday`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `workcenter_holiday` ( + `workcenter_id` int(11) NOT NULL, + `day` double NOT NULL, + `year` smallint(6) NOT NULL, + PRIMARY KEY (`workcenter_id`,`day`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `workerDocument` +-- + +DROP TABLE IF EXISTS `workerDocument`; +/*!50001 DROP VIEW IF EXISTS `workerDocument`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `workerDocument` AS SELECT + 1 AS `id`, + 1 AS `worker`, + 1 AS `document`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `workerTeam` +-- + +DROP TABLE IF EXISTS `workerTeam`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `workerTeam` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `team` int(11) NOT NULL, + `user` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `user_team_idx` (`user`), + CONSTRAINT `user_team` FOREIGN KEY (`user`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `workerTeamCollegues` +-- + +DROP TABLE IF EXISTS `workerTeamCollegues`; +/*!50001 DROP VIEW IF EXISTS `workerTeamCollegues`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `workerTeamCollegues` AS SELECT + 1 AS `workerId`, + 1 AS `collegueId`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `workerTeam_kk` +-- + +DROP TABLE IF EXISTS `workerTeam_kk`; +/*!50001 DROP VIEW IF EXISTS `workerTeam_kk`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `workerTeam_kk` AS SELECT + 1 AS `team`, + 1 AS `user`, + 1 AS `id`, + 1 AS `Id_Trabajador`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `zeleris` +-- + +DROP TABLE IF EXISTS `zeleris`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `zeleris` ( + `codigo_postal` mediumint(8) unsigned NOT NULL, + `franja` tinyint(3) unsigned NOT NULL, + PRIMARY KEY (`codigo_postal`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `zones` +-- + +DROP TABLE IF EXISTS `zones`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `zones` ( + `zone_id` tinyint(4) NOT NULL, + `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `printingOrder` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`zone_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Zonas de reparto'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping routines for database 'vn2008' +-- +/*!50003 DROP FUNCTION IF EXISTS `AltaEmpleado` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `AltaEmpleado`(strCodTrabajador varchar(3),strNombre varchar(50),strApellidos varchar(50),strDni varchar(9), + strDomicilio longtext,strCodPostal varchar(5),strPoblacion varchar(25),provinceId smallint(5), intempresa_id smallint(5),strMovil varchar(11)) RETURNS varchar(50) CHARSET utf8 +BEGIN + +DECLARE RETORNO varchar(50) DEFAULT 'Empleado creado CORRECTAMENTE'; +DECLARE tmpUserId INT(11) DEFAULT 0; +DECLARE intId_Cliente int(11) DEFAULT 0; +DECLARE Cod_Trabajador VARCHAR(8) DEFAULT strCodTrabajador; +DECLARE strPassword VARCHAR(50); +DECLARE strSambaNombre VARCHAR(30); + +samba:BEGIN + +proc:BEGIN + -- IF (boolCrearSamba) THEN + -- SELECT Id_Cliente_Interno INTO intId_Cliente FROM Trabajadores WHERE Nombre=strNombre and Apellidos=strApellidos; + -- SELECT CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),'.',intId_Cliente) INTO strPassword; + -- LEAVE proc; + -- END IF; +-- Tabla Clientes +SELECT COUNT(*) INTO intId_Cliente FROM Clientes WHERE `IF`=strDni; +IF (intId_Cliente=0) THEN + -- SELECT IFNULL(province_id,1) INTO intprovince_id FROM province WHERE `name`=strProvincia; + SELECT MAX(Id_Cliente)+1 INTO intId_Cliente FROM Clientes WHERE Id_Cliente<999999; + + INSERT INTO Clientes (Id_Cliente,Cliente,Domicilio,`IF`,Telefono,province_id,Poblacion,CodPostal,RazonSocial,Contacto,Oficial,Descuento) + SELECT intId_Cliente,Concat('TR ',strNombre,' ',StrApellidos),strDomicilio,strDni,strMovil,provinceId,strPoblacion,strCodPostal, + CONCAT(strApellidos,' ',strNombre),strNombre,1,3; +ELSE + SELECT id_cliente INTO intId_Cliente FROM Clientes WHERE `IF`=strDni; +END IF; + +SELECT CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),'.',intId_Cliente) INTO strPassword; + +-- Tabla Trabajadores +IF (SELECT COUNT(*) FROM Trabajadores WHERE Nombre=strNombre AND Apellidos=strApellidos)=0 THEN + + IF strCodTrabajador IS NULL THEN + SET Cod_Trabajador = CONCAT(LEFT(strNombre, 1), LEFT(strApellidos, 1), MID(strApellidos, (LOCATE(' ', strApellidos) + 1), 1)); + END IF; + + IF (SELECT COUNT(*) FROM Trabajadores WHERE CodigoTrabajador=Cod_Trabajador) > 0 THEN + SET Cod_Trabajador = CONCAT(Cod_Trabajador, (FLOOR(RAND() * 100))); + END IF; + + SELECT CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),'.',intId_Cliente) INTO strPassword; + + INSERT INTO Trabajadores (CodigoTrabajador,Nombre,Apellidos,`Password`,dni,empresa_id,id_Cliente_Interno) + SELECT Cod_Trabajador,strNombre,strApellidos,LCASE(strPassword),strDni,intempresa_id,intId_Cliente; +ELSE + SET RETORNO="CodigoTrabajador Existente"; +END IF; + -- LEAVE SAMBA; +END; -- PROC + +-- Tabla Account, lo crea como usuario y en samba +-- Obtengo el nombre sin espacios +SET strSambaNombre = REPLACE(strNombre,' ',''); +IF (SELECT COUNT(*) FROM account.user WHERE `name`=convert(strNombre USING utf8) COLLATE utf8_general_ci)>0 THEN -- Si existe cojo la inicial del nombre+1º apellido + SELECT CONCAT(LEFT(strNombre,1),CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),intId_Cliente)) + INTO strSambaNombre; +END IF; + + IF (SELECT COUNT(*) FROM account.user where id=intId_Cliente)=0 THEN + INSERT INTO account.user (id,role,`name`,`password`,active) VALUES (intId_Cliente,1,lcase(strSambaNombre),MD5(LCASE(strPassword)),1); + INSERT INTO account.account (id,lastchange,`expire`,user_id) values (intId_Cliente,CURRENT_DATE(),CURRENT_DATE(),intId_Cliente); + UPDATE Trabajadores SET user_id=intId_Cliente WHERE Id_Cliente_Interno=intId_Cliente; + ELSE + INSERT INTO account.user (role,`name`,`password`,active) VALUES (1,lcase(strSambaNombre),MD5(LCASE(strPassword)),1); + SET tmpUserId = LAST_INSERT_ID(); + INSERT INTO account.account (id,lastchange,`expire`,user_id) values (tmpUserId,CURRENT_DATE(),CURRENT_DATE(),tmpUserId); + UPDATE Trabajadores SET user_id=tmpUserId WHERE Id_Cliente_Interno=intId_Cliente; + END IF; + + REPLACE INTO account.mailAliasAccount(mailAlias, account) VALUES (48,intId_Cliente); + +END; -- samba + +RETURN RETORNO; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `AltaEmpleadokk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `AltaEmpleadokk`(strCodTrabajador varchar(3),strNombre varchar(50),strApellidos varchar(50),strDni varchar(9), + strDomicilio longtext,strCodPostal varchar(5),strPoblacion varchar(25),provinceId smallint(5), intempresa_id smallint(5),strMovil varchar(11)) RETURNS varchar(50) CHARSET utf8 +BEGIN + +DECLARE RETORNO varchar(50) DEFAULT 'Empleado creado CORRECTAMENTE'; +DECLARE tmpUserId INT(11) DEFAULT 0; +DECLARE intId_Cliente int(11) DEFAULT 0; +DECLARE Cod_Trabajador VARCHAR(8) DEFAULT strCodTrabajador; +DECLARE strPassword VARCHAR(50); +DECLARE strSambaNombre VARCHAR(30); + +samba:BEGIN + +proc:BEGIN + -- IF (boolCrearSamba) THEN + -- SELECT Id_Cliente_Interno INTO intId_Cliente FROM Trabajadores WHERE Nombre=strNombre and Apellidos=strApellidos; + -- SELECT CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),'.',intId_Cliente) INTO strPassword; + -- LEAVE proc; + -- END IF; +-- Tabla Clientes +SELECT COUNT(*) INTO intId_Cliente FROM Clientes WHERE `IF`=strDni; +IF (intId_Cliente=0) THEN + -- SELECT IFNULL(province_id,1) INTO intprovince_id FROM province WHERE `name`=strProvincia; + SELECT MAX(Id_Cliente)+1 INTO intId_Cliente FROM Clientes WHERE Id_Cliente<999999; + + INSERT INTO Clientes (Id_Cliente,Cliente,Domicilio,`IF`,Telefono,province_id,Poblacion,CodPostal,RazonSocial,Contacto,Oficial,Descuento) + SELECT intId_Cliente,Concat('TR ',strNombre,' ',StrApellidos),strDomicilio,strDni,strMovil,provinceId,strPoblacion,strCodPostal, + CONCAT(strApellidos,' ',strNombre),strNombre,1,3; +ELSE + SELECT id_cliente INTO intId_Cliente FROM Clientes WHERE `IF`=strDni; +END IF; + +SELECT CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),'.',intId_Cliente) INTO strPassword; + +-- Tabla Trabajadores +IF (SELECT COUNT(*) FROM Trabajadores WHERE Nombre=strNombre AND Apellidos=strApellidos)=0 THEN + + IF strCodTrabajador IS NULL THEN + SET Cod_Trabajador = CONCAT(LEFT(strNombre, 1), LEFT(strApellidos, 1), MID(strApellidos, (LOCATE(' ', strApellidos) + 1), 1)); + END IF; + + IF (SELECT COUNT(*) FROM Trabajadores WHERE CodigoTrabajador=Cod_Trabajador) > 0 THEN + SET Cod_Trabajador = CONCAT(Cod_Trabajador, (FLOOR(RAND() * 100))); + END IF; + + SELECT CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),'.',intId_Cliente) INTO strPassword; + + INSERT INTO Trabajadores (CodigoTrabajador,Nombre,Apellidos,`Password`,dni,empresa_id,id_Cliente_Interno) + SELECT Cod_Trabajador,strNombre,strApellidos,LCASE(strPassword),strDni,intempresa_id,intId_Cliente; +ELSE + SET RETORNO="CodigoTrabajador Existente"; +END IF; + -- LEAVE SAMBA; +END; -- PROC + +-- Tabla Account, lo crea como usuario y en samba +-- Obtengo el nombre sin espacios +SET strSambaNombre = REPLACE(strNombre,' ',''); +IF (SELECT COUNT(*) FROM account.user WHERE `name`=convert(strNombre USING utf8) COLLATE utf8_general_ci)>0 THEN -- Si existe cojo la inicial del nombre+1º apellido + SELECT CONCAT(LEFT(strNombre,1),CONCAT(IF(INSTR(StrApellidos,' ')=0,StrApellidos,LEFT(strApellidos,INSTR(StrApellidos,' ')-1)),intId_Cliente)) + INTO strSambaNombre; +END IF; + + IF (SELECT COUNT(*) FROM account.user where id=intId_Cliente)=0 THEN + INSERT INTO account.user (id,role,`name`,`password`,active) VALUES (intId_Cliente,1,lcase(strSambaNombre),MD5(LCASE(strPassword)),1); + INSERT INTO account.account (id,lastchange,`expire`,user_id) values (intId_Cliente,CURRENT_DATE(),CURRENT_DATE(),intId_Cliente); + UPDATE Trabajadores SET user_id=intId_Cliente WHERE Id_Cliente_Interno=intId_Cliente; + ELSE + INSERT INTO account.user (role,`name`,`password`,active) VALUES (1,lcase(strSambaNombre),MD5(LCASE(strPassword)),1); + SET tmpUserId = LAST_INSERT_ID(); + INSERT INTO account.account (id,lastchange,`expire`,user_id) values (tmpUserId,CURRENT_DATE(),CURRENT_DATE(),tmpUserId); + UPDATE Trabajadores SET user_id=tmpUserId WHERE Id_Cliente_Interno=intId_Cliente; + END IF; + + REPLACE INTO account.mailAliasAccount(mailAlias, account) VALUES (48,intId_Cliente); + +END; -- samba + +RETURN RETORNO; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `articod` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `articod`(intArt INT) RETURNS varchar(70) CHARSET utf8 COLLATE utf8_unicode_ci +BEGIN + DECLARE strArt VARCHAR(70); + SELECT CONCAT(Article,' ', Medida, ' ',Color) INTO strArt FROM Articles WHERE Id_Article = intArt; + + RETURN strArt; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `asiento` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `asiento`( + v_asiento INT + ,v_date DATE + ,v_subaccount VARCHAR(12) + ,v_account VARCHAR(12) + ,v_concept VARCHAR(25) + ,v_debit DOUBLE + ,v_credit DOUBLE + ,v_euro DOUBLE + ,v_serial CHAR(1) + ,v_invoice VARCHAR(8) + ,v_vat DOUBLE + ,v_re DOUBLE + ,v_aux TINYINT + ,v_company INT +) RETURNS int(11) +BEGIN + IF v_asiento IS NULL + THEN + SELECT MAX(ASIEN) + 1 INTO v_asiento FROM XDiario FOR UPDATE; + END IF; + + INSERT INTO XDiario + SET + ASIEN = v_asiento + ,FECHA = v_date + ,SUBCTA = v_subaccount + ,CONTRA = v_account + ,CONCEPTO = v_concept + ,EURODEBE = v_debit + ,EUROHABER = v_credit + ,BASEEURO = v_euro + ,SERIE = v_serial + ,FACTURA = v_invoice + ,IVA = v_vat + ,RECEQUIV = v_re + ,AUXILIAR = IF(v_aux = FALSE, NULL, '*') + ,MONEDAUSO = 2 + ,empresa_id = v_company; + + RETURN v_asiento; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `Averiguar_ComercialCliente` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `Averiguar_ComercialCliente`(v_customer INT, v_date DATE) RETURNS varchar(3) CHARSET utf8 + DETERMINISTIC +BEGIN +/** + * Dado un id cliente y una fecha, devuelve su comercial. + * Para más información ir a Averiguar_ComercialCliente_Id() + * + * @param v_customer El id del cliente + * @param v_date Fecha a comprobar + * @return El código del comercial para la fecha dada + **/ + DECLARE v_employee CHAR(3); + DECLARE v_salesperson INT; + + SET v_salesperson = Averiguar_ComercialCliente_Id(v_customer, v_date); + + SELECT CodigoTrabajador + INTO v_employee + FROM Trabajadores + WHERE Id_Trabajador = v_salesperson; + + RETURN IFNULL(v_employee, '---'); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `Averiguar_ComercialCliente_Id` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `Averiguar_ComercialCliente_Id`(v_customer INT, v_date DATE) RETURNS int(11) + DETERMINISTIC +BEGIN +/** + * Dado un id cliente y una fecha, devuelve su comercial para ese dia, teniendo + * en cuenta la jerarquía de las tablas: 1º la de sharingclient, 2º la de + * sharingcart y tercero la de clientes. + * + * @param v_customer El id del cliente + * @param v_date Fecha a comprobar + * @return El id del comercial para la fecha dada + **/ + DECLARE v_salesperson INT DEFAULT NULL; + DECLARE v_substitute INT DEFAULT NULL; + DECLARE v_loop BOOLEAN; + + -- Obtiene el comercial original y el de sharingclient + + SELECT c.Id_Trabajador, s.Id_Trabajador + INTO v_salesperson, v_substitute + FROM Clientes c + LEFT JOIN sharingclient s + ON c.Id_Cliente = s.Id_Cliente + AND v_date BETWEEN s.datSTART AND s.datEND + WHERE c.Id_Cliente = v_customer + ORDER BY s.id + LIMIT 1; + + -- Si no hay ninguno en sharingclient busca en sharingcart + + IF v_substitute IS NOT NULL + THEN + SET v_salesperson = v_substitute; + ELSEIF v_salesperson IS NOT NULL + THEN + DROP TEMPORARY TABLE IF EXISTS tmp.stack; + CREATE TEMPORARY TABLE tmp.stack + (INDEX (substitute)) + ENGINE = MEMORY + SELECT v_salesperson substitute; + + l: LOOP + SELECT Id_Suplente INTO v_substitute + FROM sharingcart + WHERE v_date BETWEEN datSTART AND datEND + AND Id_Trabajador = v_salesperson + ORDER BY id + LIMIT 1; + + IF v_substitute IS NULL THEN + LEAVE l; + END IF; + + SELECT COUNT(*) > 0 INTO v_loop + FROM tmp.stack WHERE substitute = v_substitute; + + IF v_loop THEN + LEAVE l; + END IF; + + INSERT INTO tmp.stack SET + substitute = v_substitute; + + SET v_salesperson = v_substitute; + END LOOP; + + DROP TEMPORARY TABLE tmp.stack; + END IF; + + RETURN v_salesperson; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `Averiguar_ComercialCliente_IdTicket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `Averiguar_ComercialCliente_IdTicket`(v_ticket INT) RETURNS varchar(3) CHARSET utf8 + DETERMINISTIC +BEGIN +/** + * Dado un id ticket, devuelve su comercial. + * Para más información ir a Averiguar_ComercialCliente_Id() + * + * @param v_customer El id del cliente + * @param v_date Fecha a comprobar + * @return El código del comercial para la fecha dada + **/ + DECLARE v_customer INT; + DECLARE v_date DATE; + + SELECT id_cliente, fecha + INTO v_customer, v_date + FROM Tickets WHERE id_ticket = v_ticket; + + RETURN Averiguar_ComercialCliente(v_customer, v_date); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `Averiguar_ComercialCliente_IdTicket_Id` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `Averiguar_ComercialCliente_IdTicket_Id`(v_ticket INT) RETURNS int(11) + DETERMINISTIC +BEGIN +/** + * Dado un id ticket, devuelve su comercial. + * Para más información ir a Averiguar_ComercialCliente_Id() + * + * @param v_customer El id del cliente + * @param v_date Fecha a comprobar + * @return El id del comercial para la fecha dada + **/ + DECLARE v_customer INT; + DECLARE v_date DATE; + + SELECT id_cliente, fecha + INTO v_customer, v_date + FROM Tickets WHERE id_ticket = v_ticket; + + RETURN Averiguar_ComercialCliente_Id(v_customer, v_date); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `Averiguar_Comprador` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `Averiguar_Comprador`(idARTICLE INT) RETURNS varchar(3) CHARSET utf8 +BEGIN + +-- Devuelve la abreviatura del comprador del articulo + +DECLARE buyer VARCHAR(3); + +SELECT CodigoTrabajador INTO buyer +FROM Trabajadores t +JOIN Tipos tp on tp.Id_Trabajador = t.Id_Trabajador +JOIN Articles a on a.tipo_id = tp.tipo_id +WHERE Id_Article = idARTICLE; + + +RETURN buyer; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `base_ticket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `base_ticket`(Id_Ticket INT) RETURNS double +BEGIN + + DECLARE base DOUBLE; + SELECT + red(SUM(Cantidad * Preu * (100 - Descuento) / 100)) into base + FROm + Movimientos m + INNER JOIN Tickets t USING (Id_Ticket) + WHERE t.Id_Ticket = Id_Ticket; + +RETURN base; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `bionicCalcReverse` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `bionicCalcReverse`(vWarehouse INT, + vMargin DECIMAL(10,3), + vRetailedPrice DECIMAL(10,3), + vM3 DECIMAL(10,3), + vConsigna INT, + vAgencia INT) RETURNS decimal(10,3) +BEGIN + DECLARE COEFICIENTE_DE_INFLACION_GENERAL INT DEFAULT 1.3; + DECLARE DENSIDAD_MINIMA_PESO_VOLUMETRICO INT DEFAULT 167; + DECLARE VOLUMEN_CAJA_VERDNATURA BIGINT DEFAULT 138000; + DECLARE vCost DECIMAL(10,4) DEFAULT 0; + DECLARE vCustomer INT; + DECLARE vRecovery DECIMAL(10,4) DEFAULT 0; + DECLARE vMana DECIMAL(10,4) DEFAULT 0; + DECLARE vPort DECIMAL(10,4) DEFAULT 0; + + SELECT Id_Cliente INTO vCustomer FROM Consignatarios WHERE Id_Consigna = vConsigna; + + -- Recobro + SELECT ROUND(LEAST(recobro,0.25), 3) INTO vRecovery + FROM bi.claims_ratio + WHERE Id_Cliente = vCustomer AND recobro > 0.009; + + -- Componente de maná automático, en función del maná acumulado por el comercial. + SELECT ROUND(prices_modifier_rate, 3) INTO vMana + FROM Clientes c + JOIN bs.mana_spellers ms ON c.Id_Trabajador = ms.Id_Trabajador + WHERE ms.prices_modifier_activated AND c.Id_Cliente = vCustomer; + + -- Reparto + SELECT COEFICIENTE_DE_INFLACION_GENERAL + * ROUND( + vM3 + * az.price + * az.inflacion + / VOLUMEN_CAJA_VERDNATURA, 4 + ) INTO vPort + FROM vn2008.Agencias a + JOIN vn2008.Consignatarios c ON c.Id_Consigna = vConsigna AND a.Id_Agencia = vAgencia + JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = vWarehouse AND ap.province_id = c.province_id + JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = vAgencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = vWarehouse; + + -- Modificacion de precio por dia de preparacion del pedido + -- No aplicada + + SET vCost = ((vRetailedPrice - vPort) / ( 1 + (vRecovery + vMana))) - vMargin; + + RETURN vCost; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `botanic_export_is_updatable` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `botanic_export_is_updatable`(v_edi_genus_id MEDIUMINT,v_edi_specie_id MEDIUMINT,v_id_Paises MEDIUMINT,v_restriction MEDIUMINT) RETURNS int(11) +BEGIN + DECLARE is_updatable INTEGER; + SELECT COUNT(*) INTO is_updatable FROM botanic_export + WHERE edi_genus_id = v_edi_genus_id + AND (v_edi_specie_id = edi_specie_id OR IFNULL(v_edi_specie_id,edi_specie_id) IS NULL) + AND (v_id_Paises = Id_Paises OR IFNULL(v_id_Paises,Id_Paises) IS NULL) + AND v_restriction = restriction; +RETURN is_updatable; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `buffer_name` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `buffer_name`(v_date DATE, v_wh INT) RETURNS varchar(11) CHARSET utf8 +BEGIN + RETURN CONCAT('b', YEAR(v_date), MONTH(v_date), DAY(v_date), IFNULL(v_wh, 0)); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `buyingAbsoluteCost` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `buyingAbsoluteCost`(vCompra BIGINT) RETURNS int(11) +BEGIN +/** + * Devuelve el coste completo de una compra + * + * @param vCompra Id_Compra a calcular + * @return Suma de los 4 componentes del coste + */ + +DECLARE vCost DOUBLE; + +SELECT IFNULL(Costefijo,0) + IFNULL(Portefijo,0) + IFNULL(Embalajefijo,0) + IFNULL(Comisionfija,0) +INTO vCost +FROM Compres +WHERE Id_Compra = vCompra; + +RETURN vCost; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `cc_to_iban` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `cc_to_iban`(cc VARCHAR(20)) RETURNS varchar(4) CHARSET utf8 + DETERMINISTIC +BEGIN + DECLARE iban VARCHAR(4); + select + CONCAT('ES', + RIGHT( + concat(0, + 98- + mod( + concat( + mod( + concat( + mod( + concat( + mod( + substring(cc,1,8), + 97), + substring(cc,9,8) + ), + 97), + substring( + concat( + cc, + 142800 + ), + 17, + 8 + ) + ), + 97), + substring( + concat( + cc, + 142800 + ), + 25, + 2 + ) + ), + 97) + ) + ,2) + )into iban; +RETURN iban; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `CM3` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `CM3`(v_buy_id INT) RETURNS int(11) +BEGIN + DECLARE id_CUB VARCHAR(10); + DECLARE id_ART INT; + SELECT Id_Cubo, Id_Article INTO id_CUB, id_ART + FROM Compres c + WHERE c.Id_compra = v_buy_id; + + RETURN cm3_2(id_CUB, id_ART); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `cm3_2` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `cm3_2`(id_CUB VARCHAR(10), id_ART INT) RETURNS int(11) +BEGIN + DECLARE v_cm3 INT; + + SELECT SUM(IF(b.Volumen > 0, + b.Volumen, + x * y * IF(z = 0, Medida + 10, z) + )) INTO v_cm3 + FROM Cubos b + INNER JOIN Articles a ON Id_Article = id_ART + WHERE Id_Cubo = id_CUB; + + RETURN v_cm3; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `cm3_unidad` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `cm3_unidad`(v_buy_id INT) RETURNS int(11) +BEGIN + DECLARE id_CUB VARCHAR(10); + DECLARE id_ART INT; + DECLARE intPACK INT; + + SELECT Id_Cubo, Id_Article, Packing INTO id_CUB, id_ART, intPACK + FROM Compres c + WHERE c.Id_compra = v_buy_id; + + RETURN ifnull(round(cm3_2(id_CUB, id_ART)/intPACK),0); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `code_to_id` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `code_to_id`(idART VARCHAR(22)) RETURNS int(11) + DETERMINISTIC +BEGIN + DECLARE idchecked INT; + + set idchecked = (SELECT Id_Article FROM barcodes WHERE code = idART); + + IF idchecked THEN + RETURN idchecked; + END IF; + + IF idART > 6000000 THEN + SELECT Id_Article INTO idchecked + FROM Compres WHERE Id_Compra = idART; + ELSE + SET idchecked = CAST(idART AS SIGNED); + END IF; + + RETURN idchecked; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `code_to_id2` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `code_to_id2`(idART VARCHAR(22)) RETURNS int(11) +BEGIN + DECLARE idchecked INT; + + SELECT IFNULL(Id_Article,COUNT(*)) INTO idchecked + FROM barcodes + WHERE code = idART LIMIT 1; + + IF idchecked THEN + RETURN idchecked; + END IF; + + IF idART > 6000000 THEN + /*SELECT Id_Article INTO idchecked + FROM Compres WHERE Id_Compra = idART;*/ + SET idchecked = CAST(idART AS SIGNED); + ELSE + SET idchecked = CAST(idART AS SIGNED); + END IF; + + RETURN idchecked; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `cub` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `cub`(v_buy_id INT) RETURNS int(11) +BEGIN + DECLARE v_cm3 INT; + + SELECT SUM(Etiquetas * IF(b.Volumen > 0, + b.Volumen, + IF(z = 0, + x * y * (Medida + 10), + x * y * z + ) + )) INTO v_cm3 + FROM Compres c + INNER JOIN Cubos b USING (Id_Cubo) + INNER JOIN Articles a USING (Id_Article) + WHERE c.Id_compra = v_buy_id; + + RETURN v_cm3; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `currate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `currate`() RETURNS double +BEGIN + +DECLARE dblRATE DOUBLE; + +SELECT rate INTO dblRATE FROM reference_rate ORDER BY date DESC LIMIT 1 ; + +RETURN dblRATE; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `date_inv` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `date_inv`() RETURNS datetime + DETERMINISTIC +BEGIN + RETURN (SELECT FechaInventario FROM tblContadores LIMIT 1); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `DAYEND` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `DAYEND`(v_date DATE) RETURNS datetime + DETERMINISTIC +BEGIN + RETURN TIMESTAMP(v_date,'23:59:59'); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `FIRSTDAYOFYEAR` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `FIRSTDAYOFYEAR`(datFEC DATE) RETURNS date +BEGIN + +DECLARE datRETURNS DATE; + +SELECT TIMESTAMPADD(DAY, -1 * DAYOFYEAR(datFEC) + 1, datFEC) INTO datRETURNS; + +RETURN datRETURNS; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `f_periodo` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `f_periodo`(datFEC date) RETURNS int(7) + DETERMINISTIC +BEGIN +DECLARE intPeriod INT; + +SELECT Year(datFEC) * 100 + week(datFEC) into intPeriod; + +RETURN intPeriod; + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `getBouquetId` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getBouquetId`( + vName VARCHAR(50), + vType int, + vSize int, + vColour VARCHAR(5) +) RETURNS int(11) +BEGIN +/** + * De vuelve el ID del ramo. Si no existe uno parecido, lo crea. + * + * @param vName Nombre del artículo + * @param vType Tipo de flor/planta + * @param vSize Tamaño del ramo + * @param vColour Color del ramo + * @return ID del ramo + */ + DECLARE bouquetId INT(11); + + CALL vn2008.createBouquet(vName, vType, vSize, vColour, @vItem); + + SET bouquetId = (SELECT @vItem); + +RETURN bouquetId; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `getInvoiceWeight` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getInvoiceWeight`(vInvoice VARCHAR(15)) RETURNS decimal(10,2) +BEGIN + DECLARE vTotalWeight DECIMAL(10,2); + + SELECT SUM(IFNULL(tallos,1) * Cantidad * a.density) sumTotal + INTO vTotalWeight FROM Tickets t + LEFT JOIN Movimientos m ON m.Id_Ticket = t.Id_Ticket + LEFT JOIN Articles a ON a.Id_Article = m.Id_Article + LEFT JOIN Tipos tp ON tp.tipo_id = a.tipo_id + WHERE t.Factura = vInvoice AND Codintrastat; + RETURN vTotalWeight; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `getShippingFromTicket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getShippingFromTicket`(vTicket INTEGER) RETURNS decimal(10,2) +BEGIN + DECLARE vValue DECIMAL(10,2); + SELECT + SUM(Valor * m.Cantidad) INTO vValue + FROM + Movimientos_componentes mc + JOIN + Movimientos m ON m.Id_Movimiento = mc.Id_Movimiento + JOIN + bi.tarifa_componentes tc ON mc.Id_Componente = tc.Id_Componente + JOIN + bi.tarifa_componentes_series tcs ON tcs.tarifa_componentes_series_id = tc.tarifa_componentes_series_id + AND tcs.tarifa_componentes_series_id = 6 + + WHERE m.Id_Ticket = vTicket; + + RETURN vValue; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `get_special_price` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `get_special_price`(intArticle int(11),intCliente int(11)) RETURNS decimal(10,2) +BEGIN + DECLARE price DECIMAL(10,2); + + SELECT rate_3 INTO price FROM price_fixed WHERE item_id = intArticle AND CURDATE() BETWEEN date_start AND date_end order by odbc_date DESC limit 1; + + SELECT precioespecial INTO price FROM PreciosEspeciales WHERE Id_Article = intArticle and Id_Cliente = intCliente ; +RETURN price; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `get_Trabajador` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `get_Trabajador`() RETURNS int(11) + DETERMINISTIC +BEGIN + RETURN IFNULL((SELECT Id_Trabajador FROM Trabajadores WHERE user_id = account.userGetId()),20); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `has_notify_passport` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `has_notify_passport`(idA INT, idCompra INT) RETURNS tinyint(1) +BEGIN + DECLARE has_passport BOOLEAN; + DECLARE is_already_sent BOOLEAN; + + SELECT COUNT(*) INTO has_passport FROM vn2008.botanic_export be JOIN + vn2008.Articles_botanical ab ON be.edi_genus_id = ab.genus_id + AND IFNULL(be.edi_specie_id, ab.specie_id) = ab.specie_id + AND be.restriction = 'Se Requiere Certificado' + JOIN vn2008.Articles a ON a.Id_Article = ab.Id_Article + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + WHERE ab.Id_Article = idA AND t.reino_id = 2; + + IF has_passport THEN + SELECT COUNT(*) INTO is_already_sent FROM mail M + JOIN vn2008.Compres c ON c.Id_Compra = idCompra + WHERE `text` LIKE CONCAT('%',c.buy_edi_id,'%') limit 1; + END IF; + RETURN has_passport && NOT is_already_sent; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `intrastat_neto` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `intrastat_neto`( intINSTRASTAT INTEGER,intUNIDADES INTEGER) RETURNS double +BEGIN + +DECLARE n DOUBLE; + +select ROUND(intUNIDADES / (sum(MEDIA) / count(media)),2) into n from ( +select *, unidades / neto MEDIA FROM intrastat_data WHERE intrastat_id = intINSTRASTAT and neto and unidades > 0 ORDER BY odbc_date DESC limit 50) t; +-- JGF 01/06 per a evitar Kg en negatiu +RETURN n/2; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `is_bionic` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `is_bionic`(intTicket INT) RETURNS tinyint(1) +BEGIN + DECLARE bolIsBionic boolean; + SELECT (COUNT(*) > 0) INTO bolIsBionic FROM order_Tickets ot + WHERE ot.Id_Ticket = intTicket; + RETURN bolIsBionic; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `lang` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `lang`() RETURNS char(2) CHARSET utf8 + DETERMINISTIC +BEGIN + RETURN IFNULL(@lang, 'es'); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `next_venc` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `next_venc`( datFecha DATE,intDia INT,intPayDay INT) RETURNS date +BEGIN + +DECLARE n DATE; +DECLARE datVenc DATE; +DECLARE intVenc INT; + + SELECT TIMESTAMPADD(DAY,intDia,datFecha) INTO datVenc; + SELECT DAY(datVenc) INTO intVenc; + + SELECT MIN(TIMESTAMPADD(MONTH,(intVenc > intPayDay),DATE_FORMAT(datVenc,CONCAT('%y/%m/',intPayDay)))) INTO n; +RETURN n; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `next_venctesting` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `next_venctesting`( datFecha DATE,intDia INT,intPayDay INT) RETURNS date +BEGIN + +DECLARE n DATE; +DECLARE datVenc DATE; +DECLARE intVenc INT; + + SELECT TIMESTAMPADD(DAY,intDia,datFecha) INTO datVenc; + SELECT DAY(datVenc) INTO intVenc; + + SELECT IFNULL + ( + TIMESTAMPADD + ( + MONTH, + (intVenc > intPayDay), + DATE_FORMAT + ( + datVenc, + CONCAT('%y/%m/',intPayDay) + ) + ), + LAST_DAY(datVenc) + ) INTO n; +RETURN n; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `nz` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `nz`(dblCANTIDAD DOUBLE) RETURNS double + DETERMINISTIC +BEGIN + + DECLARE dblRESULT DOUBLE; + + SET dblRESULT = IFNULL(dblCANTIDAD,0); + + RETURN dblRESULT; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `paymentday` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `paymentday`(vDated DATE, vDayToPay INT) RETURNS date +BEGIN + +DECLARE vDued DATE; + +SET vDued = vn.getDueDate(vDated, vDayToPay); + +RETURN vDued; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `periodo` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `periodo`(datFEC DATETIME) RETURNS int(6) + DETERMINISTIC +BEGIN + +DECLARE intPERIODO INt; + +SET intPERIODO = YEAR(datFEC) * 100 + MONTH(datFEC); + +RETURN intPERIODO; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `periodo_day` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `periodo_day`(datFEC DATETIME) RETURNS int(8) + DETERMINISTIC +BEGIN + +DECLARE intPERIODO INt; + +SET intPERIODO = YEAR(datFEC) * 10000 + MONTH(datFEC) * 100 + DAY(datFEC); + +RETURN intPERIODO; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `porte` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `porte`(intId_Ticket INT) RETURNS double +BEGIN + + + DECLARE dblprice DOUBLE; + SELECT + SUM(`az`.`price`) INTO dblprice + FROM + (((((`expeditions` `e` + JOIN `Tickets` `t` ON ((`e`.`ticket_id` = `t`.`Id_Ticket`))) + JOIN `Consignatarios` `c` ON ((`c`.`Id_Consigna` = `t`.`Id_Consigna`))) + JOIN `Agencias` `a` ON ((`a`.`Id_Agencia` = `t`.`Id_Agencia`))) + JOIN `Agencias_province` `ap` ON (((`t`.`warehouse_id` = `ap`.`warehouse_id`) + AND (`ap`.`province_id` = `c`.`province_id`) + AND (`ap`.`agency_id` = `a`.`agency_id`)))) + JOIN `Agencias_zonas` `az` ON (((`az`.`Id_Agencia` = `t`.`Id_Agencia`) + AND (`az`.`zona` = `ap`.`zona`) + AND (`t`.`warehouse_id` = `az`.`warehouse_id`) + AND (`az`.`Id_Article` = `e`.`EsBulto`)))) + WHERE + ((`t`.`Fecha` >= '2015-10-01') + AND (`t`.`empresa_id` IN (442 , 791))) AND t.Id_Ticket = intId_Ticket + GROUP BY `t`.`Id_Ticket`; + + RETURN dblprice; + +/* + DECLARE intId_Agencia INT; + DECLARE int_agency_id SMALLINT; + DECLARE int_province_id SMALLINT; + DECLARE bolCOD71 TINYINT(1); + DECLARE intPorte DOUBLE DEFAULT -1; + DECLARE dayofweek TINYINT(1) default 0; + DECLARE suplemento DOUBLE DEFAULT 9.41; + DECLARE strCodPostal VARCHAR(5); + DECLARE intWarehouse_id SMALLINT; + DECLARE dbldescuento DOUBLE DEFAULT 0; + DECLARE intVista TINYINT(1); + DECLARE dblvolumen DOUBLE; + + SET @porte := 0; + SELECT a.agency_id, t.Id_Agencia, cod71, Porte,c.CODPOSTAL,t.warehouse_id,c.province_id,cli.Descuento,IFNULL(ag.Vista,a.Vista), por_volumen + INTO int_agency_id,intId_Agencia, bolCOD71,intPorte,strCodPostal,intWarehouse_id,int_province_id,dbldescuento,intVista,dblvolumen + FROM Tickets t + JOIN Consignatarios c USING(Id_Consigna) + JOIN Agencias a ON t.Id_Agencia = a.Id_Agencia + JOIN agency agn ON agn.agency_id = a.agency_id + JOIN Clientes cli on c.Id_Cliente=cli.Id_Cliente + LEFT JOIN agency_warehouse ag ON ag.agency_id = a.agency_id + WHERE Id_Ticket = intId_Ticket limit 1; + + + + + IF bolCOD71 THEN + + IF intId_Agencia = 47 THEN -- Si es viaxpress + SELECT price INTO dblprice FROM Agencias_zonas az INNER JOIN viaxpress USING(zona) + WHERE Id_Agencia = 47 AND codigo_postal = strCodPostal AND az.warehouse_id = intWarehouse_id; + ELSE + SELECT price INTO dblprice FROM Agencias_zonas az + WHERE Id_Agencia = intId_Agencia AND 71 = Id_Article AND az.warehouse_id = intWarehouse_id + AND zona = (SELECT zona FROM Agencias_province + WHERE warehouse_id = intWarehouse_id AND agency_id = int_agency_id and province_id = int_province_id); + END IF; + + ELSE + SELECT 0 INTO dblprice; + END IF; + + */ + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `red` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `red`( intCANTIDAD DOUBLE) RETURNS double + DETERMINISTIC +BEGIN + + DECLARE n DOUBLE; + + SET n = SIGN(intCANTIDAD) * TRUNCATE( (ABS(intCANTIDAD) * 100) + 0.5001 ,0) /100 ; + + RETURN n; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `risk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `risk`(datMax DATE, intCustomer INT) RETURNS decimal(10,2) +BEGIN +/** + * Deprecated + * + * Utilizar vn.clientGetDebt + **/ + + DECLARE decRisk DECIMAL(10,2) DEFAULT 0; + + SELECT vn.clientGetDebt(intCustomer,datMax) INTO decRisk; + + RETURN decRisk; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `semana` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `semana`(datFec DATETIME) RETURNS int(11) + DETERMINISTIC +BEGIN + /* DECLARE intWeek TINYINT DEFAULT WEEK(datFec, 1); + DECLARE intYear SMALLINT DEFAULT YEAR(datFec); + + +-- La funcio week dona un error en els primers dies del any +-- Por convención, consideraremos que el año tiene siempre 52 semanas, y la 53 se incorpora a la 1 del año siguiente. +-- Mysql week function smells, so ... + + IF intWeek > 52 THEN + + SET intWeek = 1; + + IF MONTH(datFec) = 12 THEN + + SET intYear = intYear + 1; + + SET intWeek = 1; + + + END IF; + + END IF; + + RETURN intYear * 100 + intWeek; +*/ + + RETURN vnperiod(datFec); + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `shipmentDay` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `shipmentDay`(landingDay INT, intervalDays INT) RETURNS int(11) +BEGIN + +/* PAK 01/09/16 +* +* Devuelve el weekday resultante de restar al landingDay los dias de intervalDays +* +*/ + +DECLARE resultDay INT; + +SET resultDay = (landingDay + 7 - (intervalDays mod 7)) mod 7; + +RETURN resultDay; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `ticket_freight` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `ticket_freight`(idT INT) RETURNS decimal(10,3) +BEGIN + DECLARE intWh INTEGER; + DECLARE datFecha DATE; + DECLARE dblFreight DECIMAL(10,2); + + SELECT warehouse_id, Fecha INTO intWh,datFecha FROM Tickets WHERE Id_Ticket = idT; + + CALL item_last_buy_(intWh,datFecha); + + SELECT SUM((`M`.`Cantidad` * (CM3(`b`.`buy_id`) / 1000000 /`C`.`Packing`) * `az`.`price` / 0.08)) INTO dblFreight + FROM Movimientos M + JOIN t_item_last_buy b on M.Id_Article = b.item_id + JOIN Compres C ON C.Id_Compra = b.buy_id + JOIN Tickets t on t.Id_Ticket = M.Id_Ticket + JOIN `Consignatarios` `cn` ON (`cn`.`Id_Consigna` = `t`.`Id_Consigna`) + JOIN `Agencias` `a` ON (`a`.`Id_Agencia` = `t`.`Id_Agencia`) + JOIN `Agencias_province` `ap` ON (`t`.`warehouse_id` = `ap`.`warehouse_id`) + AND (`ap`.`province_id` = `cn`.`province_id`) + AND (`ap`.`agency_id` = `a`.`agency_id`) + JOIN `Agencias_zonas` `az` ON (`az`.`Id_Agencia` = `t`.`Id_Agencia`) + AND (`az`.`zona` = `ap`.`zona`) + AND (`t`.`warehouse_id` = `az`.`warehouse_id`) + AND (`az`.`Id_Article` = 71) + WHERE M.Id_Ticket = idT; + + DROP TEMPORARY TABLE t_item_last_buy; + + RETURN dblFreight; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `ticket_state` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `ticket_state`( + strFAC VARCHAR(15), + intIMP TINYINT(1), + intETI TINYINT(1), + intBLO TINYINT(1) + + ) RETURNS varchar(15) CHARSET utf8 +BEGIN +CASE + + WHEN strFAC IS NOT NULL AND strFAC != '' THEN RETURN 'FACTURADO'; + + WHEN intETI <> 0 THEN RETURN 'ALBARAN'; + + WHEN intIMP <> 0 THEN RETURN 'PREPARACION'; + + WHEN intBLO <> 0 THEN RETURN 'BLOQUEADO'; + + ELSE RETURN 'LIBRE'; + +END CASE; + + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `ticket_state_2` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `ticket_state_2`( + idTICKET INT(11) + + ) RETURNS varchar(15) CHARSET utf8 +BEGIN + +DECLARE strVAR VARCHAR(15); + + +SELECT ticket_state(Factura, PedidoImpreso, Etiquetasemitidas, Blocked) +INTO strVAR +FROM Tickets +WHERE Id_Ticket = idTICKET; + + + +RETURN strVAR; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `ticket_state_3` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `ticket_state_3`( + idTICKET INT(11) + + ) RETURNS varchar(15) CHARSET utf8 +BEGIN + +DECLARE strVAR VARCHAR(15); +DECLARE strNAM VARCHAR(15); +DECLARE fltID FLOAT DEFAULT 0; +DECLARE strfac VARCHAR(15); +DECLARE inteti tinyint; +DECLARE intimp tinyint; +DECLARE intblk tinyint; + +SELECT s.`name`,id INTO strNAM,fltID + FROM Tickets t INNER JOIN vncontrol.inter i USING(Id_Ticket) + INNER JOIN state s ON s.id = i.state_id + WHERE Id_Ticket = idTICKET ORDER BY i.odbc_date DESC,i.state_id DESC LIMIT 1; + +SELECT Factura, PedidoImpreso, Etiquetasemitidas, Blocked + INTO strfac,intimp,inteti,intblk + FROM Tickets + WHERE Id_Ticket = idTICKET; + +CASE + + + WHEN strfac <> '' AND fltID < 11 THEN RETURN 'FACTURADO'; + + WHEN inteti <> 0 AND fltID < 11 THEN RETURN 'ALBARAN' ; + + WHEN intimp <> 0 AND fltID <= 5 THEN RETURN 'EN PREPARACION'; + + WHEN fltID > 0 THEN RETURN strNAM; + + ELSE RETURN 'LIBRE'; + +END CASE; + + +RETURN strVAR; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `ticket_total` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `ticket_total`(ticket_id INT) RETURNS double +BEGIN + DECLARE v_total DOUBLE; + + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; + + CREATE TEMPORARY TABLE ticket_tmp + (INDEX idx USING HASH (ticket_id)) + ENGINE = MEMORY + SELECT ticket_id; + + CALL ticket_total (); + + SELECT total INTO v_total FROM ticket_total; + + DROP TEMPORARY TABLE ticket_total; + DROP TEMPORARY TABLE ticket_tmp; + + RETURN v_total; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `ticket_volumen` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `ticket_volumen`(idT INT) RETURNS decimal(10,3) +BEGIN + DECLARE intWh INTEGER; + DECLARE datFecha DATE; + DECLARE dblVolume DECIMAL(10,3); + + SELECT warehouse_id, Fecha + INTO intWh,datFecha + FROM Tickets + WHERE Id_Ticket = idT; + + SELECT IFNULL(SUM(m.Cantidad * cm3)/1000000,0) INTO dblVolume + FROM Movimientos m + JOIN bi.rotacion r on r.Id_Article = m.Id_Article AND r.warehouse_id = intWh + WHERE m.Id_Ticket = idT; + + RETURN dblVolume; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `ticket_volumen_encajado` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `ticket_volumen_encajado`(idT INT) RETURNS decimal(10,1) +BEGIN + +/* Devuelve el volumen estimado de un pedido, en cajas +* +* idT Numero de ticket +* +*/ + + + DECLARE vVolumenCajaM3 DOUBLE; + DECLARE vTicketVolumenEnCajas DECIMAL(10,1); + DECLARE CAJA VARCHAR(10) DEFAULT '94'; + + SELECT Volumen/1000000 INTO vVolumenCajaM3 FROM Cubos WHERE Id_Cubo = CAJA; + + SET vTicketVolumenEnCajas = ticket_volumen(idT) / vVolumenCajaM3; + + RETURN vTicketVolumenEnCajas; + +RETURN 1; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `ticket_volumen_en_cajas` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `ticket_volumen_en_cajas`(idT INT) RETURNS decimal(10,1) +BEGIN + +/* Devuelve el volumen estimado de un pedido, en cajas +* +* idT Numero de ticket +* +* + + + DECLARE vVolumenCajaM3 DOUBLE; + DECLARE vTicketVolumenEnCajas DECIMAL(10,1); + DECLARE CAJA VARCHAR(10) DEFAULT '94'; + + SELECT Volumen/1000000 INTO vVolumenCajaM3 FROM Cubos WHERE Id_Cubo = CAJA; + + SET vTicketVolumenEnCajas = ticket_volumen(idT) / vVolumenCajaM3; + + RETURN vTicketVolumenEnCajas; +*/ +RETURN 1; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `till_entry` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `till_entry`( + v_customer INT + ,v_bank INT + ,v_amount DOUBLE + ,v_concept VARCHAR(25) + ,v_date DATE + ,v_serial CHAR(1) + ,v_batch TINYINT + ,v_number INT + ,v_company SMALLINT + ,v_employee INT +) RETURNS int(11) +BEGIN + DECLARE v_account VARCHAR(12); + DECLARE v_subaccount VARCHAR(12); + DECLARE v_asiento INT DEFAULT NULL; + + -- Inserta el registro en cajas + + INSERT INTO Cajas + SET + Id_Trabajador = v_employee + ,Id_Banco = v_bank + ,Entrada = v_amount + ,Concepto = v_concept + ,Cajafecha = v_date + ,Serie = v_serial + ,Partida = v_batch + ,Numero = v_number + ,empresa_id = v_company; + + -- Inserta los asientos contables + + SELECT Cuenta INTO v_account + FROM Bancos WHERE Id_Banco = v_bank; + + SELECT Cuenta INTO v_subaccount + FROM Clientes WHERE Id_Cliente = v_customer; + + SET v_asiento = asiento + ( + v_asiento + ,v_date + ,v_account + ,v_subaccount + ,v_concept + ,v_amount + ,0 + ,0 + ,NULL -- Serie + ,NULL -- Factura + ,NULL -- IVA + ,NULL -- Recargo + ,FALSE -- Auxiliar + ,v_company + ); + DO asiento + ( + v_asiento + ,v_date + ,v_subaccount + ,v_account + ,v_concept + ,0 + ,v_amount + ,0 + ,NULL -- Serie + ,NULL -- Factura + ,NULL -- IVA + ,NULL -- Recargo + ,FALSE -- Auxiliar + ,v_company + ); + + RETURN NULL; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `to_weeks` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `to_weeks`(v_date DATE) RETURNS int(11) + DETERMINISTIC +BEGIN + RETURN FLOOR((TO_DAYS(v_date) - 366) / 7); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `ubicator_cabecaja` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `ubicator_cabecaja`(x SMALLINT,y SMALLINT,z SMALLINT,w SMALLINT,d SMALLINT,h SMALLINT) RETURNS tinyint(1) +BEGIN + +IF ((y>d) OR (x>w) OR (z>h)) THEN -- si no cabe alguna de las medidas en la balda. + RETURN FALSE; +END IF; +RETURN TRUE; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `vnday` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `vnday`(datfec DATE) RETURNS int(11) + DETERMINISTIC +BEGIN + +DECLARE intper INT; + +SELECT day INTO intper FROM time WHERE date = datfec; + +RETURN intper; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `vndayname` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `vndayname`(datfec DATE) RETURNS varchar(10) CHARSET utf8 COLLATE utf8_unicode_ci + DETERMINISTIC +BEGIN + +DECLARE vDayName VARCHAR(10); + +CASE weekday(datfec) + + WHEN 6 then + SET vDayName = 'Domingo'; + + WHEN 0 then + SET vDayName = 'Lunes'; + + WHEN 1 then + SET vDayName = 'Martes'; + + WHEN 2 then + SET vDayName = 'Miercoles'; + + WHEN 3 then + SET vDayName = 'Jueves'; + + WHEN 4 then + SET vDayName = 'Viernes'; + + WHEN 5 then + SET vDayName = 'Sabado'; + +END CASE; + +RETURN vDayName; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `vnmonth` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `vnmonth`(datfec DATE) RETURNS int(11) + DETERMINISTIC +BEGIN + +DECLARE intper INT; + +SELECT month INTO intper FROM time WHERE date = datfec; + +RETURN intper; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `vnperiod` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `vnperiod`(datfec DATE) RETURNS int(6) + DETERMINISTIC +BEGIN + +DECLARE intper INT; + +SELECT period INTO intper FROM time WHERE date = datfec; + +RETURN intper; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `vntrimestre` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `vntrimestre`(datfec DATE) RETURNS int(11) + DETERMINISTIC +BEGIN + + CASE + WHEN MONTH(datfec)<=3 THEN RETURN 1; + WHEN MONTH(datfec)<=6 THEN RETURN 2; + WHEN MONTH(datfec)<=9 THEN RETURN 3; + ELSE return 4; + END CASE; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `vnweek` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `vnweek`(datfec DATE) RETURNS int(11) + DETERMINISTIC +BEGIN + +DECLARE intper INT; + +SELECT week INTO intper FROM time WHERE date = datfec; + +RETURN intper; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `vnyear` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `vnyear`(datfec DATE) RETURNS int(11) + DETERMINISTIC +BEGIN + +DECLARE intper INT; + +SELECT year INTO intper FROM time WHERE date = datfec; + +RETURN intper; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `abono` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `abono`(IN idT MEDIUMINT, IN idUSER SMALLINT) +BEGIN +-- OBSOLETO USAR vn.refund() + DECLARE idC MEDIUMINT; + DECLARE newFEC DATE; + DECLARE idWH TINYINT; + DECLARE idUSER SMALLINT; + DECLARE idEMP MEDIUMINT; + DECLARE idCON MEDIUMINT; + DECLARE newTICKET MEDIUMINT; + + + SELECT Id_Cliente, TIMESTAMPADD(DAY, 1,Fecha), warehouse_id, empresa_id, Id_Consigna INTO idC, newFEC, idWH, idEMP, idCON + FROM Tickets WHERE Id_Ticket = idT; + + SELECT Id_Trabajador into idUSER from Trabajadores where user_id = account.userGetId(); + IF idUSER IS NULL THEN + SET idUSER = 20; + END IF; + + CALL ticket_new_complet(idC, newFEC, idWH, idUSER, idEMP, idCON, 23,NULL,newTICKET); + + UPDATE Tickets SET Etiquetasemitidas = 1 WHERE Id_Ticket = newTICKET; + + INSERT INTO Movimientos(Id_Ticket, Id_Article, Cantidad, Concepte, Preu, Descuento, PrecioFijado) + SELECT newTICKET, Id_Article, -1 * Cantidad, Concepte, Preu, Descuento, 1 FROM Movimientos WHERE Id_Ticket = idT; + SELECT newTICKET; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `account_conciliacion_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `account_conciliacion_add`() +BEGIN + +update account_conciliacion ac +join +( + select idaccount_conciliacion, @c:= if(@id = id_calculated, @c + 1, 1) contador + , @id:= id_calculated as id_calculated, concat(id_calculated,'(',@c,')') as new_id from account_conciliacion + join + ( + select id_calculated, count(*) rep, @c:= 0, @id:= concat('-',id_calculated) from account_conciliacion + group by id_calculated + having rep > 1 + ) sub using(id_calculated) +) sub2 using(idaccount_conciliacion) +set ac.id_calculated = sub2.new_id; + + +insert into Cajas(Cajafecha, Partida, Serie, Concepto, Entrada, Salida, Id_Banco, Id_Trabajador, empresa_id, warehouse_id, Proveedores_account_id, id_calculated) +select Fechaoperacion, TRUE, 'MB', ac.Concepto, IF(DebeHaber = 2, importe,null), IF(DebeHaber = 1, importe, null), pa.Id_Banco, 20 + , pa.Id_Proveedor, 1, ac.Id_Proveedores_account,ac.id_calculated +from account_conciliacion ac +join Proveedores_account pa on pa.Id_Proveedores_account = ac.Id_Proveedores_account +left join Cajas c on c.id_calculated = ac.id_calculated +where c.Id_Caja is null; + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `accumulatorsReadingDateUpdate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `accumulatorsReadingDateUpdate`() +BEGIN + +/* Actualiza los valores de la tabla en función de la cotización del EUR/USD +* +*/ + +UPDATE accumulatorsReadingDate a + JOIN + ( + SELECT + d.id, + CASE + WHEN rr.rate between p.lowerBarrier and p.rate THEN p.strike + WHEN rr.rate between p.rate and p.upperBarrier AND p.financialProductTypefk = 'AC' THEN p.strike + WHEN rr.rate >= p.upperBarrier THEN p.strike * 2 + ELSE 0 + END AS Acumulado + FROM vn2008.reference_rate rr + JOIN accumulatorsReadingDate d ON d.readingDate = rr.date + JOIN pago_sdc p ON p.pago_sdc_id = d.pagoSdcfk + WHERE IFNULL(amount,0) = 0 + AND rr.rate >= p.lowerBarrier) sub ON sub.id = a.id + SET a.amount = sub.Acumulado + WHERE a.amount IS NULL; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `add_awb_component` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `add_awb_component`(IN v_awb SMALLINT) +BEGIN + + INSERT IGNORE INTO awb_component (awb_id,Id_Proveedor,awb_component_type_id,awb_role_id,awb_unit_id,value,Id_Moneda) + SELECT id,Id_Proveedor,awb_component_type_id,awb_role_id,awb_unit_id,LEAST(GREATEST(value1,IFNULL(min_value,value1)),IFNULL(max_value,value1)),Id_Moneda + FROM ( + SELECT a.id,IFNULL(act.carguera_id,CASE awb_role_id WHEN 1 THEN a.carguera_id WHEN 2 THEN a.transitario_id WHEN 3 THEN f.airline_id END) Id_Proveedor, + act.awb_component_type_id,act.awb_role_id,act.awb_unit_id, value * + CASE awb_unit_id + WHEN '1000Tj-20' THEN ((CAST(stems AS SIGNED) - 20000)/1000) + (min_value / value) + WHEN '1000Tj-10' THEN ((CAST(stems AS SIGNED) - 10000)/1000) + (min_value / value) + WHEN '100GW' THEN peso/100 + WHEN 'AWB' THEN 1 -- No action + WHEN 'FB' THEN hb/2 + WHEN 'GW' THEN peso + WHEN 'TW' THEN GREATEST(peso,volume_weight) + END value1 + , value, + act.Id_Moneda, act.min_value, act.max_value + FROM awb a JOIN flight f ON f.flight_id = a.flight_id + LEFT JOIN awb_component_template act ON ((IFNULL(act.carguera_id, a.carguera_id) = a.carguera_id AND awb_role_id = 1) + OR (IFNULL(act.carguera_id, a.transitario_id) = a.transitario_id AND awb_role_id = 2)) + AND IFNULL(act.airport_out, f.airport_out) = f.airport_out AND IFNULL(act.airport_in, f.airport_in) = f.airport_in + AND IFNULL(act.airline_id, f.airline_id) = f.airline_id + WHERE a.id = v_awb AND Fecha <= CURDATE() ORDER BY Fecha DESC) t ; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `adelantarTickets` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `adelantarTickets`(datCurrent DATE,datAttempted DATE) +BEGIN + DECLARE vWarehouse INTEGER; + DECLARE vFechedTicket INTEGER; + DECLARE done INT DEFAULT 0; + DECLARE vFetchCounter INT DEFAULT 0; + DECLARE cur1 CURSOR FOR + SELECT ticketId + FROM tmpTicketList; + DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; + + OPEN cur1; + + SELECT warehouse_id INTO vWarehouse FROM tmpTicketList ttl JOIN Tickets t ON t.Id_Ticket = ttl.ticketId LIMIT 1; + CALL item_stock(vWarehouse,CURDATE(),NULL); + + DROP TEMPORARY TABLE IF EXISTS tmpAdelantarTickets; + CREATE TEMPORARY TABLE tmpAdelantarTickets( + Id_Ticket INT, + count INT, + media DOUBLE) + ENGINE = MEMORY; + + REPEAT + FETCH cur1 INTO vFechedTicket; + + INSERT INTO tmpAdelantarTickets + SELECT + vFechedTicket, + COUNT(Cantidad), + AVG(Cantidad <= IFNULL(Saldo, 0)) AS `AVG` + FROM Movimientos m + LEFT JOIN + (SELECT + * + FROM + (SELECT + Id_Article, Saldo + FROM + (SELECT + Dia, Id_Article, SUM(Entradas - Salidas) AS Saldo + FROM + ( + SELECT CURDATE() AS Dia, + item_id Id_Article, + stock AS Entradas, + 0 AS Salidas + FROM tmp_item ti + JOIN Movimientos m ON m.Id_Article = ti.item_id AND m.Id_Ticket = vFechedTicket + UNION ALL + SELECT DATE(t.Fecha) AS Dia, + mt.Id_Article, + 0 AS Entradas, + - m.Cantidad AS Salidas + FROM Tickets t + JOIN Movimientos m ON m.Id_Ticket = t.Id_Ticket AND t.warehouse_id = vWarehouse + JOIN Movimientos mt ON mt.Id_Article = m.Id_Article + WHERE mt.Id_Ticket = vFechedTicket AND + t.Fecha BETWEEN curdate() AND datCurrent + UNION ALL + SELECT tr.landing, c.Id_Article, c.Cantidad, 0 + FROM + Compres c + JOIN Movimientos mt ON mt.Id_Article = c.Id_Article + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel tr ON tr.id = travel_id and tr.warehouse_id = vWarehouse + WHERE mt.Id_Ticket = vFechedTicket AND + tr.landing BETWEEN curdate() AND datCurrent + UNION ALL + SELECT tr.shipment, c.Id_Article, - c.Cantidad, 0 + FROM + Compres c + JOIN Movimientos mt ON mt.Id_Article = c.Id_Article + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel tr ON tr.id = travel_id and tr.warehouse_id_out = vWarehouse + WHERE mt.Id_Ticket = vFechedTicket AND tr.shipment BETWEEN curdate() AND datCurrent + ) sub GROUP BY Dia , Id_Article) sub2 + ORDER BY Saldo) sub3 + GROUP BY Id_Article) sub4 USING (Id_Article) + WHERE m.Id_Ticket = vFechedTicket; + + UNTIL done END REPEAT; + + select * from tmpAdelantarTickets; + CLOSE cur1; + DROP TEMPORARY TABLE IF EXISTS tmpAdelantarTickets; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `agencia_descuadre` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `agencia_descuadre`(datSince DATE, datTo DATE, intAgency INT, intWarehouseAlias INT) +BEGIN + + + DECLARE isFile boolean; + DECLARE datTo2359 DATETIME; + + SET datTo2359 = util.dayEnd(datTo); + + SELECT SUM(price) INTO isFile FROM agencia_descuadre; + + IF NOT IFNULL(isFile,0) THEN + + SELECT t.Id_Ticket,0 AS Total_Agencia,t.Id_Consigna,t.empresa_id,t.warehouse_id, + v.suma_componente AS VN, v.suma_componente - shipping_charge AS Difer, + e.shipping_charge AS teorico,t.Id_Agencia, t.Bultos,t.Id_Cliente, ap.zona + + FROM Tickets t LEFT JOIN + (SELECT Id_Ticket, SUM(suma_componente) suma_componente,Fecha + FROM v_descuadre_porte2 + WHERE Fecha BETWEEN datSince AND datTo2359 + GROUP BY Id_Ticket) v ON t.Id_Ticket = v.Id_Ticket + LEFT JOIN (SELECT Id_Ticket, SUM(shipping_charge) shipping_charge, Fecha + FROM v_expeditions_shipping_charge2 + WHERE Fecha BETWEEN datSince AND datTo2359 + GROUP BY Id_Ticket + ) e ON t.Id_Ticket = e.Id_Ticket + JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia + JOIN Consignatarios c ON t.Id_Consigna = c.Id_Consigna + JOIN Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = t.warehouse_id AND ap.province_id = c.province_id + JOIN warehouse_group wg ON wg.warehouse_id =t.warehouse_id + WHERE DATE(t.Fecha) BETWEEN datSince AND datTo2359 AND a.agency_id = intAgency and wg.warehouse_alias_id = intWarehouseAlias; + + ELSE + + SELECT t.Id_Ticket, Round(sum_price , 2) AS Total_Agencia,t.Id_Consigna,t.empresa_id,t.warehouse_id, + v.suma_componente AS VN, IF(isFile,Round(sum_price, 2) - v.suma_componente,v.diferencia) AS Difer, + v.teorico_agencia AS teorico,zd.Id_Agencia, t.Bultos,t.Id_Cliente + FROM + (SELECT + *, SUM(price) sum_price + FROM + (select + t.Id_Ticket, zd.price,t.Id_Consigna, zd.date,t.empresa_id,t.warehouse_id,c.Descuento,t.Id_Agencia + from + agencia_descuadre zd + LEFT JOIN Tickets t ON t.Id_Ticket = zd.Id_Ticket + LEFT JOIN Clientes c ON c.Id_Cliente = t.Id_Cliente + ORDER BY t.Id_Cliente DESC) t + GROUP BY Id_Ticket,`date`) zd + LEFT JOIN + Tickets t ON zd.date = DATE(t.Fecha) + AND zd.Id_Consigna = t.Id_Consigna + AND zd.warehouse_id = t.warehouse_id + AND zd.Id_Agencia = t.Id_Agencia + LEFT JOIN + v_descuadre_porte v ON v.Id_Ticket = t.Id_Ticket + WHERE t.Id_Cliente <> 4712 AND t.Id_Cliente <> 450 + GROUP BY zd.date,Id_Consigna,warehouse_id,zd.Id_Agencia -- HAVING Difer > 0.5 OR Difer < -0.5 jgf 2015-08-18 + ORDER BY v.diferencia; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `agencia_volume` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `agencia_volume`() +BEGIN + DECLARE v_start DATETIME DEFAULT TIMESTAMP(CURDATE()); + DECLARE v_end DATETIME DEFAULT TIMESTAMP(CURDATE(), '23:59:59'); + + + SET v_start = IF(WEEKDAY(CURDATE()), CURDATE(),TIMESTAMPADD(DAY,-1,CURDATE())); + SET v_start = IF(CURDATE() = '2014-05-02', '2014-05-01',v_start); + DROP TEMPORARY TABLE IF EXISTS agenVOL; + CREATE TEMPORARY TABLE agenVOL + ( + Id_Ticket INT PRIMARY KEY + ,Id_Agencia INT + ,Agencia VARCHAR(30) + ,Bultos INT DEFAULT 0 + ,Faltan INT DEFAULT 0 + /*,Prioridad VARCHAR(15) DEFAULT ''*/ + ) + ENGINE=MEMORY; + + -- Insertamos los tickets que ya tienen la linea de portes + + INSERT INTO agenVOL(Id_Agencia, Agencia, Id_Ticket, Bultos) + SELECT a.Id_Agencia, name , Id_Ticket, sum(Cantidad) Bultos + FROM Tickets t + JOIN Agencias a USING(Id_Agencia) + JOIN Movimientos m USING(Id_Ticket) + JOIN agency ag USING(agency_id) + JOIN warehouse_joined wj ON wj.warehouse_id = t.warehouse_id + WHERE Concepte LIKE '%porte%' + AND wj.warehouse_alias_id = 1 -- El 1 equivale a Silla (SillaFV-SillaPCA) + AND Fecha BETWEEN v_start AND v_end + AND Vista = 1 + GROUP BY Id_Ticket; + + -- Insertamos los tickets que ya tienen expediciones, que fallaran si se repite la clave primaria. + + INSERT INTO agenVOL(Id_Agencia, Agencia, Id_Ticket, Bultos) + SELECT a.Id_Agencia, name, ticket_id, COUNT(ticket_id) + FROM expeditions e + JOIN Tickets t ON t.Id_Ticket = e.ticket_id + JOIN Agencias a ON a.Id_Agencia = e.agency_id + JOIN agency ag ON ag.agency_id = a.agency_id + JOIN warehouse_joined wj ON wj.warehouse_id = t.warehouse_id + WHERE t.Fecha BETWEEN v_start AND v_end + AND wj.warehouse_alias_id = 1 -- El 1 equivale a Silla (SillaFV-SillaPCA) + AND Vista = 1 + GROUP BY ticket_id + ON DUPLICATE KEY UPDATE Bultos = Bultos; + + -- Adivinamos el futuro + INSERT INTO agenVOL(Id_Agencia, Agencia, Id_Ticket, Faltan) + SELECT a.Id_Agencia, name, Id_Ticket, 1 as Faltan + FROM Tickets t + JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia + JOIN agency ag ON ag.agency_id = a.agency_id + LEFT JOIN expeditions e ON e.ticket_id = t.Id_Ticket + JOIN warehouse_joined wj ON wj.warehouse_id = t.warehouse_id + WHERE Fecha BETWEEN v_start AND v_end + AND Bultos = 0 AND expeditions_id IS NULL AND EtiquetasEmitidas = 0 + AND wj.warehouse_alias_id = 1 -- JGF 18/12/14 El 1 equivale a Silla (SillaFV-SillaPCA) + AND Vista = 1 + GROUP BY Id_Ticket + ON DUPLICATE KEY UPDATE Faltan = Faltan + 1; + + + -- Matizamos la urgencia para ZELERIS + /* + UPDATE agenVOL a + JOIN Tickets t USING(Id_Ticket) + JOIN Clientes c USING(Id_Cliente) + JOIN Agencias agen ON agen.Id_Agencia = t.Id_Agencia + JOIN agency ag ON ag.agency_id = agen.agency_id + JOIN Agencias_province ap ON ag.agency_id = ap.province_id + JOIN province p ON p.province_id = ap.province_id + SET a.Prioridad = IF(p.name IN ('VALENCIA','MURCIA','MADRID','BARCELONA','GIRONA','ALICANTE','CASTELLON'), 'LENTA','RAPIDA') + WHERE ag.name LIKE 'zeleris';*/ + + SELECT agen.agency_id, name Agencia, COUNT(Id_Ticket) expediciones, SUM(Bultos) Bultos, SUM(Faltan) Faltan/*, Prioridad*/ + FROM agenVOL a + JOIN Agencias agen USING(Id_Agencia) + JOIN agency ag USING(agency_id) + GROUP BY ag.agency_id/*, Prioridad*/ ; + + DROP TEMPORARY TABLE IF EXISTS agenVOL; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `alfa_invoices` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `alfa_invoices`(IN datFEC DATE) +BEGIN + +DECLARE datSTART DATETIME; +DECLARE vTotal DECIMAL(10,2) DEFAULT 0.00; + +SET @myId = -10000000; +SET @myRef = 'factura'; +SET @myTotal = vTotal; + +SET datSTART = TIMESTAMPADD(DAY, -1 * DAYOFMONTH(datFEC) + 1, datfec); + +IF datFEC < '2017-07-01' THEN + + SELECT Id_Factura `Invoice no`, + date(Fecha) as `Invoice date`, + Id_Cliente `Debtor no`, + `IF` `Vat nr`, + Razonsocial `Name`, + BI7 `Amount excl Vat 6%`, + BI16 `Amount excl Vat 19%`, + IVA7 `Vat 6%`, + IVA16 `Vat 19%`, + Importe `Total inc Vat` + from Facturas + INNER JOIN Clientes USING(Id_Cliente) + where empresa_id = 567 + and Fecha BETWEEN datSTART AND datFEC + order by `Invoice date`, factura_id; + +ELSE + +SELECT * FROM + ( + SELECT io.ref `Invoice no`, + io.issued `Invoice date`, + IF(@myId = io.id, '', clientFk) `Debtor no`, + IF(@myId = io.id, '', c.fi) `Vat nr`, + IF(@myId = io.id, '', c.socialName) `Name`, + taxableBase `Taxable Amount excl VAT`, + CONCAT(CAST(pgc.rate AS DECIMAL(2,0)) ,' %') `VAT Rate`, + CAST(vat AS DECIMAL(10,2)) `VAT Quote`, + CAST(@myTotal + taxableBase + vat AS DECIMAL(10,2)) `Total plus Vat`, + IF(@myId := io.id, NULL, NULL) as ControlField + FROM vn.invoiceOut io + JOIN vn.client c ON c.id = io.clientFk + JOIN vn.invoiceOutTax iot ON iot.invoiceOutFk = io.id + JOIN vn.pgc ON pgc.code = iot.pgcFk + WHERE io.companyFk = 567 + AND io.issued BETWEEN datSTART AND datFEC + ORDER BY io.id, iot.id + ) t1 + ORDER BY `Invoice date` DESC, `Invoice no`; + +END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `article` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `article`() +BEGIN + DROP TEMPORARY TABLE IF EXISTS `article_inventory`; + CREATE TEMPORARY TABLE `article_inventory` + ( + `article_id` INT(11) NOT NULL PRIMARY KEY, + `future` DATETIME + ) + ENGINE = MEMORY; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `articleTagUpdatePriority_kk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `articleTagUpdatePriority_kk`(IN vItem INT) +BEGIN +/* +* DEPRECATED +*/ + +CALL vn.itemTagUpdatePriority(vItem); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `article_available_single` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `article_available_single`(IN v_wh TINYINT, IN v_date DATETIME, IN id_single INT) +BEGIN + + CALL bionic_available_single (v_wh, v_date,id_single,0); + + + SELECT available AS minimo FROM tmp_item + WHERE item_id = id_single; +-- ixen totes les linies en lloc d'una sola + DROP TEMPORARY TABLE IF EXISTS tmp_item; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `article_inventory_warehouses` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `article_inventory_warehouses`(vDate DATE) +proc: BEGIN +/** + * Recalcula los inventarios de todos los almacenes. + * + * @param vDate Fecha de los nuevos inventarios + */ + DECLARE vWh INT; + DECLARE vDone BOOL; + DECLARE vEntryId INT; + DECLARE vTravelId INT; + DECLARE vDateTime DATETIME DEFAULT TIMESTAMP(vDate, '00:00:00'); + DECLARE vDeleteDate DATE DEFAULT TIMESTAMPADD(DAY, -2, vDate); + + DECLARE cWarehouses CURSOR FOR + SELECT id FROM warehouse WHERE inventario; + + DECLARE CONTINUE HANDLER FOR NOT FOUND + SET vDone = TRUE; + + OPEN cWarehouses; + + l: LOOP + + SET vDone = FALSE; + FETCH cWarehouses INTO vWh; + + IF vDone THEN + LEAVE l; + END IF; + + INSERT INTO travel SET + warehouse_id_out = 13, + warehouse_id = vWh, + shipment = vDateTime, + landing = vDateTime, + agency_id = 53, + ref = 'inventario', + delivered = TRUE, + received = TRUE; + + SELECT LAST_INSERT_ID() INTO vTravelId; + + INSERT INTO Entradas SET + Id_Proveedor = 4, + Fecha = vDateTime, + Confirmada = TRUE, + Pedida = TRUE, + travel_id = vTravelId; + + SELECT LAST_INSERT_ID() INTO vEntryId; + + -- Inserta el visible + + CALL inventario_multiple_inventarios (vWh, vDateTime); + + -- Inserta Last_buy_id + + ALTER TABLE article_inventory + ADD buy_id INT; + + UPDATE article_inventory ai + JOIN + ( + SELECT * FROM ( + SELECT Id_Article, Id_Compra,warehouse_id + FROM Compres c + JOIN Entradas e USING (Id_Entrada) + JOIN travel tr ON tr.id = e.travel_id + WHERE Novincular = FALSE + AND costefijo > 0 AND tarifa2 > 0 + AND NOT Redada + AND landing BETWEEN date_inv() AND vDate + ORDER BY (vWh = warehouse_id) DESC, landing DESC + ) t1 + GROUP BY Id_Article + ) t + ON ai.article_id = t.Id_Article + SET ai.buy_id = t.Id_Compra; + + INSERT INTO Compres ( + Id_Entrada + ,Id_Article + ,Cantidad + ,Costefijo + ,Packing + ,Id_Cubo + ,Tarifa2 + ,Tarifa3 + ,Productor + ) + SELECT + vEntryId + ,AI.article_id + ,IF(AI.visible < 0,0,AI.visible) + ,ifnull(C.Costefijo,0) + ifnull(C.Portefijo,0) + ifnull(C.Comisionfija,0) + ifnull(C.Embalajefijo,0) + ,C.Packing + ,C.Id_Cubo + ,C.Tarifa2 + ,C.Tarifa3 + ,C.Productor + FROM article_inventory AI + LEFT JOIN Compres C ON C.Id_Compra = AI.buy_id; + + DROP TEMPORARY TABLE article_inventory; + END LOOP; + + CLOSE cWarehouses; + + UPDATE tblContadores SET FechaInventario = vDate; + + DELETE e + FROM travel t + JOIN Entradas e ON e.travel_id = t.id + WHERE Id_Proveedor = 4 + AND shipment <= vDeleteDate + AND (DAY(shipment) <> 1 OR shipment < TIMESTAMPADD(MONTH, -5, CURDATE())); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `article_minacum` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `article_minacum`(IN v_wh TINYINT, IN v_date_ini DATETIME, IN v_range INT) +BEGIN + -- Cálculo del mínimo acumulado + + DECLARE v_date DATE DEFAULT v_date_ini; + DECLARE v_date_end DATETIME; + + SET v_date_ini = TIMESTAMP(DATE(v_date_ini), '00:00:00'); + SET v_date_end = TIMESTAMP(TIMESTAMPADD(DAY, v_range, v_date_ini),'23:59:59'); + + -- CALL item_travel (v_wh, v_date_ini); + + DROP TEMPORARY TABLE IF EXISTS article_minacum; + CREATE TEMPORARY TABLE article_minacum + ENGINE = MEMORY + SELECT t.article_id, t.warehouse_id, minacum(dat, amount, v_date) AS amount FROM ( + SELECT article_id, DATE(Fecha) AS dat, SUM(amount) AS amount, warehouse_id FROM ( + SELECT Id_Article article_id, Fecha, -Cantidad AS amount, warehouse_id + FROM Movimientos m INNER JOIN Tickets t USING (Id_Ticket) + WHERE Fecha BETWEEN v_date_ini AND v_date_end + AND Cantidad != 0 + AND (@aid IS NULL OR Id_Article = @aid) + AND (v_wh IS NULL OR t.warehouse_id = v_wh) + UNION ALL + SELECT Id_Article, t.landing, Cantidad, warehouse_id + FROM Compres c INNER JOIN Entradas e USING (Id_Entrada) + LEFT JOIN travel t ON e.travel_id = t.id + WHERE t.landing BETWEEN v_date_ini AND v_date_end + AND (v_wh IS NULL OR t.warehouse_id = v_wh) + AND e.Inventario = FALSE + AND Cantidad != 0 + AND (@aid IS NULL OR Id_Article = @aid) + UNION ALL + SELECT Id_Article, t.shipment, -Cantidad, warehouse_id_out + FROM Compres c INNER JOIN Entradas e USING (Id_Entrada) + LEFT JOIN travel t ON e.travel_id = t.id + WHERE t.shipment BETWEEN v_date_ini AND v_date_end + AND (v_wh IS NULL OR t.warehouse_id_out = v_wh) + AND e.Inventario = FALSE + AND Cantidad != 0 + AND (@aid IS NULL OR Id_Article = @aid) + ) t1 + GROUP BY t1.article_id, dat, warehouse_id + ) t + + GROUP BY t.article_id, warehouse_id HAVING amount != 0; + SET @aid = NULL; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `article_multiple_buy` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `article_multiple_buy`(v_date DATETIME, wh INT) +BEGIN + DECLARE v_date_aux DATETIME; + + SELECT TIMESTAMPADD(DAY, -90, CURDATE()) INTO v_date_aux; + + ALTER TABLE article_inventory + ADD buy_id INT; + + DROP TEMPORARY TABLE IF EXISTS tmp; + + CREATE TEMPORARY TABLE tmp + (KEY (Id_Article)) + ENGINE = MEMORY + SELECT * FROM + ( + SELECT Id_Article, Id_Compra + FROM bi.Last_buy_id + ORDER BY (wh = warehouse_id) DESC + ) t + GROUP BY Id_Article; + + UPDATE article_inventory ai + JOIN tmp t ON ai.article_id = t.Id_Article + SET ai.buy_id = t.Id_Compra; + + -- Los valores de hoy + + TRUNCATE TABLE tmp; + + INSERT INTO tmp + SELECT Id_Article, Id_Compra + FROM Compres c + JOIN Entradas e USING (Id_Entrada) + JOIN travel tr ON tr.id = e.travel_id + WHERE Novincular = FALSE + AND tarifa2 > 0 + AND landing BETWEEN CURDATE() AND v_date + ORDER BY (wh = warehouse_id) DESC; + + UPDATE article_inventory ai + INNER JOIN tmp t + ON ai.article_id = t.Id_Article + SET ai.buy_id = t.Id_Compra; + + CREATE INDEX idx USING HASH ON article_inventory (buy_id); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `article_multiple_buy_date` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `article_multiple_buy_date`(IN date_ DATETIME, IN wh TINYINT(3)) +BEGIN + + DECLARE datINV DATE; + SELECT FechaInventario INTO datINV FROM tblContadores; + + ALTER TABLE `article_inventory` + ADD `buy_date` datetime NOT NULL; + + UPDATE article_inventory INNER JOIN + ( + + SELECT * FROM + ( + SELECT travel.landing AS bdate, Compres.Id_Article AS article_id + FROM Compres + JOIN Entradas USING(Id_Entrada) + JOIN travel ON travel.id = Entradas.travel_id + + JOIN warehouse W ON W.id = travel.warehouse_id + WHERE travel.landing BETWEEN datINV AND date_ + AND IF(wh = 0, W.comisionantes, wh = travel.warehouse_id) + /*AND Compres.Novincular = FALSE + AND Entradas.Id_Proveedor <> 4 + AND Entradas.Inventario = FALSE*/ + -- jgf 2017/03/06 en la comparativa no trau el dia de caducitat + AND Entradas.Redada = FALSE + ORDER BY article_id, bdate DESC + + ) AS temp + GROUP BY article_id + ) + AS buy ON article_inventory.article_id = buy.article_id + SET article_inventory.buy_date = buy.bdate; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `article_multiple_buy_last` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `article_multiple_buy_last`(IN wh TINYINT, IN date_end DATETIME) +BEGIN + DECLARE v_date DATETIME; + + DROP TEMPORARY TABLE IF EXISTS article_buy_last; + CREATE TEMPORARY TABLE article_buy_last + SELECT * FROM ( + SELECT c.Id_Article AS article_id, c.Id_Compra AS id + FROM Compres c INNER JOIN Entradas e USING(Id_Entrada) + INNER JOIN travel t ON t.id = e.travel_id + WHERE t.landing BETWEEN date_inv() AND date_end + AND c.Novincular = FALSE + AND c.tarifa2 > 0 + ORDER BY t.landing DESC,(wh IN (0,t.warehouse_id)) DESC, (Id_Cubo IS NULL) ,article_id, (e.Id_proveedor = 4) + ) t + GROUP BY article_id; + ALTER TABLE article_buy_last ADD INDEX (article_id); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `article_visible_single` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `article_visible_single`(IN v_wh TINYINT,IN v_article INT) +BEGIN +DECLARE bisible FLOAT; +CALL article_visible_single2(v_wh,v_article,@suma2); + +SET bisible = @suma2; +SELECT bisible AS suma, A.Id_Article, A.Article, A.Medida, A.Tallos, A.Nicho, O.Abreviatura as origen, A.Color, A.Tipo, A.Nicho, + A.Categoria + FROM v_compres A INNER JOIN Origen O ON O.id = A.id_origen WHERE A.Id_Article =v_article AND A.warehouse_id = v_wh ORDER BY landing DESC LIMIT 1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `article_visible_single2` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `article_visible_single2`(IN v_wh TINYINT,IN v_article INT,OUT int_amount INT) +BEGIN + + call item_stock(v_wh,CURDATE(),v_article); + call article_visible(v_wh); + + SELECT SUM(stock) INTO int_amount FROM tmp_item WHERE item_id = v_article ; + SELECT IFNULL(SUM(amount),0) + IFNULL(int_amount,0) INTO int_amount + FROM article_visible + WHERE article_id = v_article; + + DROP TEMPORARY TABLE tmp_item; + DROP TEMPORARY TABLE article_visible; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `availableTraslate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `availableTraslate`(vWarehouseLanding INT, v_date DATE,vWarehouseShipment INT) +proc: BEGIN + DECLARE v_date_ini DATE; + DECLARE v_date_end DATETIME; + DECLARE v_reserve_date DATETIME; + DECLARE v_date_inv DATE; + + IF v_date < CURDATE() + THEN + LEAVE proc; + END IF; + + CALL vn2008.item_stock (vWarehouseLanding, v_date, NULL); + + -- Calcula algunos parámetros necesarios + + SET v_date_ini = TIMESTAMP(v_date, '00:00:00'); + SET v_date_end = TIMESTAMP(TIMESTAMPADD(DAY, 4, v_date), '23:59:59'); + + SELECT FechaInventario INTO v_date_inv FROM vn2008.tblContadores; + + SELECT SUBTIME(NOW(), reserve_time) INTO v_reserve_date + FROM hedera.order_config; + + -- Calcula el ultimo dia de vida para cada producto + + DROP TEMPORARY TABLE IF EXISTS item_range; + CREATE TEMPORARY TABLE item_range + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT c.Id_Article item_id, MAX(landing) date_end + FROM vn2008.Compres c + JOIN vn2008.Entradas e ON c.Id_Entrada = e.Id_Entrada + JOIN vn2008.travel t ON t.id = e.travel_id + JOIN vn2008.warehouse w ON w.id = t.warehouse_id + WHERE t.landing BETWEEN v_date_inv AND v_date_ini + AND t.warehouse_id = vWarehouseLanding + AND NOT e.Inventario + AND NOT e.Redada + GROUP BY Id_Article; + + -- Tabla con el ultimo dia de last_buy para cada producto que hace un replace de la anterior + + CALL item_last_buy_(vWarehouseShipment,curdate()); + + DROP TEMPORARY TABLE IF EXISTS item_range_copy; + CREATE TEMPORARY TABLE item_range_copy LIKE item_range; + INSERT INTO item_range_copy + SELECT * FROM item_range; + + INSERT INTO item_range + SELECT t.item_id, tr.landing + FROM t_item_last_buy t + JOIN Compres c ON c.Id_Compra = t.buy_id + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel tr ON tr.id = e.travel_id + LEFT JOIN item_range_copy i ON t.item_id = i.item_id + WHERE t.warehouse_id = vWarehouseShipment + ON DUPLICATE KEY UPDATE item_range.date_end = GREATEST(item_range.date_end,landing); + + DROP TEMPORARY TABLE item_range_copy; + + -- Replica la tabla item_range para poder usarla varias veces en la misma consulta + + DROP TEMPORARY TABLE IF EXISTS item_range_copy1; + CREATE TEMPORARY TABLE item_range_copy1 LIKE item_range; + INSERT INTO item_range_copy1 + SELECT c.item_id, TIMESTAMP(TIMESTAMPADD(DAY, t.life, c.date_end), '23:59:59') date_end FROM item_range c + JOIN vn2008.Articles a ON a.Id_Article = c.item_id + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + HAVING date_end >= v_date_ini OR date_end IS NULL; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy2; + CREATE TEMPORARY TABLE item_range_copy2 LIKE item_range_copy1; + INSERT INTO item_range_copy2 + SELECT * FROM item_range_copy1; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy3; + CREATE TEMPORARY TABLE item_range_copy3 LIKE item_range_copy1; + INSERT INTO item_range_copy3 + SELECT * FROM item_range_copy1; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy4; + CREATE TEMPORARY TABLE item_range_copy4 LIKE item_range_copy1; + INSERT INTO item_range_copy4 + SELECT * FROM item_range_copy1; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy5; + CREATE TEMPORARY TABLE item_range_copy5 LIKE item_range_copy1; + INSERT INTO item_range_copy5 + SELECT * FROM item_range_copy1; + + -- Calcula el ATP + + DROP TEMPORARY TABLE IF EXISTS availableTraslate; + CREATE TEMPORARY TABLE availableTraslate + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT t.item_id, SUM(stock) available FROM ( + SELECT ti.item_id, stock + FROM vn2008.tmp_item ti + JOIN item_range ir ON ir.item_id = ti.item_id + UNION ALL + SELECT t.item_id, minacum(dt, amount, v_date) AS available FROM ( + SELECT item_id, DATE(dat) dt, SUM(amount) amount FROM ( + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_out i + JOIN item_range_copy1 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = vWarehouseLanding + UNION ALL + SELECT m.Id_Article item_id, t.landing dat, m.Cantidad amount + FROM Compres m + JOIN Entradas e ON m.Id_Entrada = e.Id_Entrada + JOIN travel t ON e.travel_id = t.id + JOIN item_range_copy2 ir ON ir.item_id = m.Id_Article + WHERE + e.Inventario = 0 + AND m.Cantidad <> 0 + AND e.redada = 0 + AND t.warehouse_id = vWarehouseLanding + AND t.landing >= v_date_ini + AND (ir.date_end IS NULL OR t.landing <= ir.date_end) + + UNION ALL + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_entry_out i + JOIN item_range_copy3 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = vWarehouseLanding + UNION ALL + SELECT r.item_id, r.shipment, -r.amount + FROM hedera.order_row r + JOIN hedera.`order` o ON o.id = r.order_id + JOIN item_range_copy4 ir ON ir.item_id = r.item_id + WHERE r.shipment >= v_date_ini + AND (ir.date_end IS NULL OR r.shipment <= ir.date_end) + AND r.warehouse_id = vWarehouseLanding + AND r.created >= v_reserve_date + AND NOT o.confirmed + ) t + GROUP BY item_id, dt + ) t + GROUP BY t.item_id + ) t GROUP BY t.item_id HAVING available != 0; + + DROP TEMPORARY TABLE + vn2008.tmp_item + ,item_range + ,item_range_copy1 + ,item_range_copy2 + ,item_range_copy3 + ,item_range_copy4 + ,item_range_copy5; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `availableTraslatekk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `availableTraslatekk`(vWarehouseLanding INT, v_date DATE,vWarehouseShipment INT) +proc: BEGIN + DECLARE v_date_ini DATE; + DECLARE v_date_end DATETIME; + DECLARE v_reserve_date DATETIME; + DECLARE v_date_inv DATE; + + IF v_date < CURDATE() + THEN + LEAVE proc; + END IF; + + CALL vn2008.item_stock (vWarehouseLanding, v_date, NULL); + + -- Calcula algunos parámetros necesarios + + SET v_date_ini = TIMESTAMP(v_date, '00:00:00'); + SET v_date_end = TIMESTAMP(TIMESTAMPADD(DAY, 4, v_date), '23:59:59'); + + SELECT FechaInventario INTO v_date_inv FROM vn2008.tblContadores; + + SELECT SUBTIME(NOW(), reserve_time) INTO v_reserve_date + FROM hedera.order_config; + + -- Calcula el ultimo dia de vida para cada producto + + DROP TEMPORARY TABLE IF EXISTS item_range; + CREATE TEMPORARY TABLE item_range + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT c.Id_Article item_id, MAX(landing) date_end + FROM vn2008.Compres c + JOIN vn2008.Entradas e ON c.Id_Entrada = e.Id_Entrada + JOIN vn2008.travel t ON t.id = e.travel_id + JOIN vn2008.warehouse w ON w.id = t.warehouse_id + WHERE t.landing BETWEEN v_date_inv AND v_date_ini + AND t.warehouse_id = vWarehouseLanding + AND NOT e.Inventario + AND NOT e.Redada + GROUP BY Id_Article; + + SELECT c.Id_Article item_id, MAX(landing) date_end + FROM vn2008.Compres c + JOIN vn2008.Entradas e ON c.Id_Entrada = e.Id_Entrada + JOIN vn2008.travel t ON t.id = e.travel_id + JOIN vn2008.warehouse w ON w.id = t.warehouse_id + WHERE t.landing BETWEEN v_date_inv AND v_date_ini + AND t.warehouse_id = vWarehouseLanding + AND NOT e.Inventario + AND NOT e.Redada + GROUP BY Id_Article; + + + -- Tabla con el ultimo dia de last_buy para cada producto que hace un replace de la anterior + + CALL item_last_buy_(vWarehouseShipment,curdate()); + + DROP TEMPORARY TABLE IF EXISTS item_range_copy; + CREATE TEMPORARY TABLE item_range_copy LIKE item_range; + INSERT INTO item_range_copy + SELECT * FROM item_range; + + INSERT INTO item_range + SELECT t.item_id, tr.landing + FROM t_item_last_buy t + JOIN Compres c ON c.Id_Compra = t.buy_id + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel tr ON tr.id = e.travel_id + LEFT JOIN item_range_copy i ON t.item_id = i.item_id + WHERE t.warehouse_id = vWarehouseShipment + ON DUPLICATE KEY UPDATE item_range.date_end = GREATEST(item_range.date_end,landing); + + + + SELECT t.item_id, tr.landing + FROM t_item_last_buy t + JOIN Compres c ON c.Id_Compra = t.buy_id + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel tr ON tr.id = e.travel_id + LEFT JOIN item_range_copy i ON t.item_id = i.item_id + WHERE t.warehouse_id = vWarehouseShipment; + + DROP TEMPORARY TABLE item_range_copy; + + -- Replica la tabla item_range para poder usarla varias veces en la misma consulta + + DROP TEMPORARY TABLE IF EXISTS item_range_copy1; + CREATE TEMPORARY TABLE item_range_copy1 LIKE item_range; + INSERT INTO item_range_copy1 + SELECT c.item_id, TIMESTAMP(TIMESTAMPADD(DAY, t.life, c.date_end), '23:59:59') date_end FROM item_range c + JOIN vn2008.Articles a ON a.Id_Article = c.item_id + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + HAVING date_end >= v_date_ini OR date_end IS NULL; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy2; + CREATE TEMPORARY TABLE item_range_copy2 LIKE item_range_copy1; + INSERT INTO item_range_copy2 + SELECT * FROM item_range_copy1; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy3; + CREATE TEMPORARY TABLE item_range_copy3 LIKE item_range_copy1; + INSERT INTO item_range_copy3 + SELECT * FROM item_range_copy1; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy4; + CREATE TEMPORARY TABLE item_range_copy4 LIKE item_range_copy1; + INSERT INTO item_range_copy4 + SELECT * FROM item_range_copy1; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy5; + CREATE TEMPORARY TABLE item_range_copy5 LIKE item_range_copy1; + INSERT INTO item_range_copy5 + SELECT * FROM item_range_copy1; + + -- Calcula el ATP +SELECT item_id, stock,'tmp_item' + FROM vn2008.tmp_item; + + DROP TEMPORARY TABLE IF EXISTS availableTraslate; + CREATE TEMPORARY TABLE availableTraslate + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT t.item_id, SUM(stock) available FROM ( + SELECT ti.item_id, stock + FROM vn2008.tmp_item ti + JOIN item_range ir ON ir.item_id = ti.item_id + UNION ALL + SELECT t.item_id, minacum(dt, amount, v_date) AS available FROM ( + SELECT item_id, DATE(dat) dt, SUM(amount) amount FROM ( + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_out i + JOIN item_range_copy1 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = vWarehouseLanding + UNION ALL + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_entry_in i + JOIN item_range_copy2 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = vWarehouseLanding + UNION ALL + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_entry_out i + JOIN item_range_copy3 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = vWarehouseLanding + UNION ALL + SELECT r.item_id, r.shipment, -r.amount + FROM hedera.order_row r + JOIN hedera.`order` o ON o.id = r.order_id + JOIN item_range_copy4 ir ON ir.item_id = r.item_id + WHERE r.shipment >= v_date_ini + AND (ir.date_end IS NULL OR r.shipment <= ir.date_end) + AND r.warehouse_id = vWarehouseLanding + AND r.created >= v_reserve_date + AND NOT o.confirmed + ) t + GROUP BY item_id, dt + ) t + GROUP BY t.item_id + ) t GROUP BY t.item_id HAVING available != 0; +SELECT i.item_id, i.dat, i.amount,'item_out',vWarehouseLanding + FROM vn2008.item_out i + JOIN item_range_copy1 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = vWarehouseLanding; +select * from availableTraslate; + DROP TEMPORARY TABLE + vn2008.tmp_item + ,item_range + ,item_range_copy1 + ,item_range_copy2 + ,item_range_copy3 + ,item_range_copy4 + ,item_range_copy5; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `availableTraslateTesting` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `availableTraslateTesting`(vWarehouseLanding INT, v_date DATE,vWarehouseShipment INT) +proc: BEGIN + DECLARE v_date_ini DATE; + DECLARE v_date_end DATETIME; + DECLARE v_reserve_date DATETIME; + DECLARE v_date_inv DATE; + + IF v_date < CURDATE() + THEN + LEAVE proc; + END IF; + + CALL vn2008.item_stock (vWarehouseLanding, v_date, NULL); + + -- Calcula algunos parámetros necesarios + + SET v_date_ini = TIMESTAMP(v_date, '00:00:00'); + SET v_date_end = TIMESTAMP(TIMESTAMPADD(DAY, 4, v_date), '23:59:59'); + + SELECT FechaInventario INTO v_date_inv FROM vn2008.tblContadores; + + SELECT SUBTIME(NOW(), reserve_time) INTO v_reserve_date + FROM hedera.order_config; + + -- Calcula el ultimo dia de vida para cada producto + + DROP TEMPORARY TABLE IF EXISTS item_range; + CREATE TEMPORARY TABLE item_range + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT c.Id_Article item_id, MAX(landing) date_end + FROM vn2008.Compres c + JOIN vn2008.Entradas e ON c.Id_Entrada = e.Id_Entrada + JOIN vn2008.travel t ON t.id = e.travel_id + JOIN vn2008.warehouse w ON w.id = t.warehouse_id + WHERE t.landing BETWEEN v_date_inv AND v_date_ini + AND t.warehouse_id = vWarehouseLanding + AND NOT e.Inventario + AND NOT e.Redada + GROUP BY Id_Article; + + -- Tabla con el ultimo dia de last_buy para cada producto que hace un replace de la anterior + + SELECT vWarehouseShipment; + + CALL item_last_buy_(vWarehouseShipment,v_date); + + SELECT *,'last_buy' FROM t_item_last_buy t ; -- WHERE t.item_id = 41576; + SELECT * FROM item_range t WHERE t.item_id = 41576; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy; + CREATE TEMPORARY TABLE item_range_copy LIKE item_range; + INSERT INTO item_range_copy + SELECT * FROM item_range; + + SELECT 'update' , t.item_id, tr.landing + FROM t_item_last_buy t + JOIN Compres c ON c.Id_Compra = t.buy_id + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel tr ON tr.id = e.travel_id + LEFT JOIN item_range_copy i ON t.item_id = i.item_id + WHERE t.warehouse_id = vWarehouseShipment AND t.item_id = 41576; + + INSERT INTO item_range + SELECT t.item_id, tr.landing + FROM t_item_last_buy t + JOIN Compres c ON c.Id_Compra = t.buy_id + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel tr ON tr.id = e.travel_id + LEFT JOIN item_range_copy i ON t.item_id = i.item_id + WHERE t.warehouse_id = vWarehouseShipment + ON DUPLICATE KEY UPDATE item_range.date_end = GREATEST(item_range.date_end,landing); + + DROP TEMPORARY TABLE item_range_copy; + + -- Replica la tabla item_range para poder usarla varias veces en la misma consulta + + DROP TEMPORARY TABLE IF EXISTS item_range_copy1; + CREATE TEMPORARY TABLE item_range_copy1 LIKE item_range; + INSERT INTO item_range_copy1 + SELECT c.item_id, TIMESTAMP(TIMESTAMPADD(DAY, t.life, c.date_end), '23:59:59') date_end FROM item_range c + JOIN vn2008.Articles a ON a.Id_Article = c.item_id + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + HAVING date_end >= v_date_ini OR date_end IS NULL; + + select * from item_range_copy1 where item_id = 41576; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy2; + CREATE TEMPORARY TABLE item_range_copy2 LIKE item_range_copy1; + INSERT INTO item_range_copy2 + SELECT * FROM item_range_copy1; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy3; + CREATE TEMPORARY TABLE item_range_copy3 LIKE item_range_copy1; + INSERT INTO item_range_copy3 + SELECT * FROM item_range_copy1; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy4; + CREATE TEMPORARY TABLE item_range_copy4 LIKE item_range_copy1; + INSERT INTO item_range_copy4 + SELECT * FROM item_range_copy1; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy5; + CREATE TEMPORARY TABLE item_range_copy5 LIKE item_range_copy1; + INSERT INTO item_range_copy5 + SELECT * FROM item_range_copy1; + + -- Calcula el ATP + SELECT ti.item_id, stock + FROM vn2008.tmp_item ti + JOIN item_range ir ON ir.item_id = ti.item_id ; + + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_out i + JOIN item_range_copy1 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = vWarehouseLanding; + + SELECT m.Id_Article item_id, t.landing dat, m.Cantidad amount + FROM Compres m + JOIN Entradas e ON m.Id_Entrada = e.Id_Entrada + JOIN travel t ON e.travel_id = t.id + JOIN item_range_copy2 ir ON ir.item_id = m.Id_Article + WHERE + e.Inventario = 0 + AND m.Cantidad <> 0 + AND e.redada = 0 + AND t.warehouse_id = vWarehouseLanding + AND t.landing >= v_date_ini + AND (ir.date_end IS NULL OR t.landing <= ir.date_end); + + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_entry_out i + JOIN item_range_copy3 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = vWarehouseLanding; + SELECT r.item_id, r.shipment, -r.amount + FROM hedera.order_row r + JOIN hedera.`order` o ON o.id = r.order_id + JOIN item_range_copy4 ir ON ir.item_id = r.item_id + WHERE r.shipment >= v_date_ini + AND (ir.date_end IS NULL OR r.shipment <= ir.date_end) + AND r.warehouse_id = vWarehouseLanding + AND r.created >= v_reserve_date + AND NOT o.confirmed; + + DROP TEMPORARY TABLE IF EXISTS availableTraslate; + CREATE TEMPORARY TABLE availableTraslate + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT t.item_id, SUM(stock) available FROM ( + SELECT ti.item_id, stock + FROM vn2008.tmp_item ti + JOIN item_range ir ON ir.item_id = ti.item_id + UNION ALL + SELECT t.item_id, minacum(dt, amount, v_date) AS available FROM ( + SELECT item_id, DATE(dat) dt, SUM(amount) amount FROM ( + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_out i + JOIN item_range_copy1 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = vWarehouseLanding + UNION ALL + SELECT m.Id_Article item_id, t.landing dat, m.Cantidad amount + FROM Compres m + JOIN Entradas e ON m.Id_Entrada = e.Id_Entrada + JOIN travel t ON e.travel_id = t.id + JOIN item_range_copy2 ir ON ir.item_id = m.Id_Article + WHERE + e.Inventario = 0 + AND m.Cantidad <> 0 + AND e.redada = 0 + AND t.warehouse_id = vWarehouseLanding + AND t.landing >= v_date_ini + AND (ir.date_end IS NULL OR t.landing <= ir.date_end) + + UNION ALL + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_entry_out i + JOIN item_range_copy3 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = vWarehouseLanding + UNION ALL + SELECT r.item_id, r.shipment, -r.amount + FROM hedera.order_row r + JOIN hedera.`order` o ON o.id = r.order_id + JOIN item_range_copy4 ir ON ir.item_id = r.item_id + WHERE r.shipment >= v_date_ini + AND (ir.date_end IS NULL OR r.shipment <= ir.date_end) + AND r.warehouse_id = vWarehouseLanding + AND r.created >= v_reserve_date + AND NOT o.confirmed + ) t + GROUP BY item_id, dt + ) t + GROUP BY t.item_id + ) t GROUP BY t.item_id HAVING available != 0; + + select * from availableTraslate where item_id = 41576; + + DROP TEMPORARY TABLE + vn2008.tmp_item + ,item_range + ,item_range_copy1 + ,item_range_copy2 + ,item_range_copy3 + ,item_range_copy4 + ,item_range_copy5; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `balance_create` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `balance_create`(IN vStartingMonth INT + , IN vEndingMonth INT + , IN vCompany INT + , IN vConsolidate BOOLEAN + , IN vInterGroupSalesIncluded BOOLEAN) +BEGIN + +DECLARE v_sql TEXT; +DECLARE strTABLE VARCHAR(20) DEFAULT "balance_nest_tree"; +DECLARE intGAP INTEGER DEFAULT 7; +DECLARE intYEARS INTEGER DEFAULT 3; +DECLARE vConsolidatedGroup INTEGER; +DECLARE vStartingDate DATE DEFAULT '2015-01-01'; +DECLARE vStartingYear INT DEFAULT 2015; + + +-- Solicitamos la tabla tmp.nest, como base para el balance +CALL nest_tree(strTABLE,intGAP, FALSE); + +DROP TEMPORARY TABLE IF EXISTS tmp.balance; + +CREATE TEMPORARY TABLE tmp.balance +SELECT * FROM tmp.nest; + +DROP TEMPORARY TABLE IF EXISTS tmp.empresas_receptoras; +DROP TEMPORARY TABLE IF EXISTS tmp.empresas_emisoras; + +IF vConsolidate THEN + SELECT empresa_grupo INTO vConsolidatedGroup FROM empresa WHERE id = vCompany; +END IF; + +CREATE TEMPORARY TABLE tmp.empresas_receptoras + SELECT id as empresa_id + FROM vn2008.empresa + WHERE id = vCompany + OR empresa_grupo = vConsolidatedGroup; + + +CREATE TEMPORARY TABLE tmp.empresas_emisoras + SELECT Id_Proveedor as empresa_id + FROM vn2008.Proveedores p; + +IF NOT vInterGroupSalesIncluded THEN + + DELETE ee.* + FROM tmp.empresas_emisoras ee + JOIN vn2008.empresa e on e.id = ee.empresa_id + WHERE e.empresa_grupo = vConsolidatedGroup; + + END IF; + +-- Se calculan las facturas que intervienen, para luego poder servir el desglose desde aqui +DROP TEMPORARY TABLE IF EXISTS tmp.balance_desglose; +CREATE TEMPORARY TABLE tmp.balance_desglose + SELECT er.empresa_id as receptora_id + , ee.empresa_id as emisora_id + , year(IFNULL(IFNULL(tr.dateBooking,tr.Fecha),IFNULL(r.dateBooking,r.Fecha))) as `year` + , month(IFNULL(IFNULL(tr.dateBooking,tr.Fecha),IFNULL(r.dateBooking,r.Fecha))) as `month` + , gastos_id as Id_Gasto + , sum(bi) as importe + FROM recibida r + JOIN recibida_iva ri on ri.recibida_id = r.id + JOIN tmp.empresas_receptoras er on er.empresa_id = r.empresa_id + JOIN tmp.empresas_emisoras ee ON ee.empresa_id = r.proveedor_id + LEFT JOIN vn2008.recibida_entrada re ON re.recibida_id = r.id + LEFT JOIN vn2008.recibida tr ON tr.id = re.awb_recibida + WHERE IFNULL(r.dateBooking,r.Fecha) between vStartingDate and CURDATE() + GROUP BY Id_Gasto, year, month, emisora_id, receptora_id; + + + +INSERT INTO tmp.balance_desglose(receptora_id + , emisora_id + , year + , month + , Id_Gasto + , importe) + SELECT gr.empresa_id + , gr.empresa_id + , year + , month + , Id_Gasto + , sum(importe) + FROM gastos_resumen gr + JOIN tmp.empresas_receptoras er on gr.empresa_id = er.empresa_id + WHERE year >= vStartingYear + AND month BETWEEN vStartingMonth AND vEndingMonth + GROUP BY Id_Gasto, year, month, gr.empresa_id; + + +DELETE FROM tmp.balance_desglose + WHERE month < vStartingMonth + OR month > vEndingMonth; + + + +-- Ahora el balance +SET v_sql = sql_printf ( + ' + ALTER TABLE tmp.balance + ADD COLUMN %t INT(10) NULL , + ADD COLUMN %t INT(10) NULL , + ADD COLUMN %t INT(10) NULL , + ADD COLUMN Id_Gasto VARCHAR(10) NULL, + ADD COLUMN Gasto VARCHAR(45) NULL; + ', + YEAR(CURDATE())-2, + YEAR(CURDATE())-1, + YEAR(CURDATE()) + ); + +CALL sql_query (v_sql); + + +-- Añadimos los gastos, para facilitar el formulario + +UPDATE tmp.balance b +JOIN vn2008.balance_nest_tree bnt on bnt.id = b.id +JOIN (SELECT Id_Gasto, Gasto + FROM vn2008.Gastos + GROUP BY Id_Gasto) g ON g.Id_Gasto = bnt.Id_Gasto +SET b.Id_Gasto = g.Id_Gasto + , b.Gasto = g.Gasto; + +-- Rellenamos los valores de primer nivel, los que corresponden a los gastos simples + +WHILE intYEARS > 0 DO + + SET intYEARS = intYEARS - 1; + + SET v_sql = sql_printf ( + ' + UPDATE tmp.balance b + JOIN + ( + SELECT Id_Gasto, sum(Importe) as Importe + FROM tmp.balance_desglose + WHERE year = %v + GROUP BY Id_Gasto + ) sub on sub.Id_Gasto = b.Id_Gasto + SET %t = - Importe; + ', + YEAR(CURDATE()) - intYEARS, + YEAR(CURDATE()) - intYEARS + ); + + CALL sql_query (v_sql); + +END WHILE; + +-- Añadimos las ventas + + + SET v_sql = sql_printf ( + ' + UPDATE tmp.balance b + JOIN ( + SELECT sum(IF(year = %v, venta, 0)) as y2 + , sum(IF(year = %v, venta, 0)) as y1 + , sum(IF(year = %v, venta, 0)) as y0 + , c.Gasto + + FROM bs.ventas_contables c + join tmp.empresas_receptoras er on er.empresa_id = c.empresa_id + WHERE month BETWEEN %v AND %v + GROUP BY c.Gasto + + ) sub ON sub.Gasto = b.Id_Gasto + SET %t = IFNULL(%t,0) + sub.y2 + , %t = IFNULL(%t,0) + sub.y1 + , %t = IFNULL(%t,0) + sub.y0 + ; + + ', + YEAR(CURDATE()) - 2, + YEAR(CURDATE()) - 1, + YEAR(CURDATE()), + vStartingMonth, + vEndingMonth, + YEAR(CURDATE()) - 2, YEAR(CURDATE()) - 2, + YEAR(CURDATE()) - 1, YEAR(CURDATE()) - 1, + YEAR(CURDATE()), YEAR(CURDATE()) + + ); + + CALL sql_query (v_sql); + +-- Ventas intra grupo +IF NOT vInterGroupSalesIncluded THEN + + SELECT lft, rgt + INTO @grupoLft, @grupoRgt + FROM tmp.balance b + WHERE TRIM(b.`name`) = 'Grupo'; + + DELETE + FROM tmp.balance + WHERE lft BETWEEN @grupoLft AND @grupoRgt; + +END IF; + + +-- Rellenamos el valor de los padres con la suma de los hijos +DROP TEMPORARY TABLE IF EXISTS tmp.balance_aux; +CREATE TEMPORARY TABLE tmp.balance_aux SELECT * FROM tmp.balance; + +UPDATE tmp.balance b +JOIN +( +select b1.id, b1.name, sum(b2.`2015`) as `2015`, sum(b2.`2016`) as `2016`, sum(b2.`2017`) as `2017` +from tmp.nest b1 +join tmp.balance_aux b2 on b2.lft between b1.lft and b1.rgt +group by b1.id) sub on sub.id = b.id +SET b.`2015` = sub.`2015`, b.`2016` = sub.`2016`, b.`2017` = sub.`2017` +; + + + +SELECT *, concat('',ifnull(Id_Gasto,'')) as newgasto FROM tmp.balance; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `base_ticket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `base_ticket`(IN Id_Ticket INT) +BEGIN + SELECT + red(SUM(Cantidad * Preu * (100 - Descuento) / 100)) AS base + FROm + Movimientos m + INNER JOIN Tickets t USING (Id_Ticket) + WHERE t.Id_Ticket = Id_Ticket; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_`( + v_date DATE, + v_consigna INT, + v_agencia INT) +BEGIN +/** + * Calcula el disponible para un conjunto de almacenes y fechas + * devueltos por el procedimiento travel_tree() + * + * @table t_bionic_available Tabla con los ids de cache + **/ + + DECLARE v_available_calc INT; + DECLARE v_shipment DATE; + DECLARE v_agency_id INT; + DECLARE v_wh INT; + DECLARE done BOOL; + DECLARE cur CURSOR FOR + SELECT warehouse_id, Fecha_envio FROM travel_tree; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + -- Establecemos los almacenes y las fechas que van a entrar al disponible + + SELECT agency_id INTO v_agency_id FROM Agencias WHERE Id_Agencia = v_agencia; + + CALL travel_tree (v_date,v_consigna, v_agency_id); + + DROP TEMPORARY TABLE IF EXISTS t_bionic_available; + CREATE TEMPORARY TABLE t_bionic_available( + calc_id INT UNSIGNED, + PRIMARY KEY (calc_id) + ) + ENGINE = MEMORY; + + OPEN cur; + l: LOOP + SET done = FALSE; + FETCH cur INTO v_wh, v_shipment; + + IF done THEN + LEAVE l; + END IF; + + CALL `cache`.available_refresh (v_available_calc, FALSE, v_wh, v_shipment); + + INSERT IGNORE INTO t_bionic_available (calc_id) + VALUES (v_available_calc); + END LOOP; + + CLOSE cur; + DROP TEMPORARY TABLE travel_tree; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_articlelist` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_articlelist`(IN strART VARCHAR(50) + , IN minMED DOUBLE + , IN maxMED DOUBLE + , IN minPVP DOUBLE + , IN maxPVP DOUBLE) +BEGIN + +DECLARE intSPACE_POS INT; +DECLARE strSUBTR VARCHAR(50); +DECLARE strFILTER VARCHAR(500); +DECLARE v_sql TEXT; + +DROP TEMPORARY TABLE IF EXISTS articlelist; + +CREATE TEMPORARY table articlelist +(Id_Article INT(11) PRIMARY KEY) +ENGINE = INNODB; + + + +-- Arreglos + +SET minMED = IFNULL(minMED,0); +SET minMED = IF(minMED = 0,0.01, minMED); +SET maxMED = IFNULL(maxMED,9990); +SET maxMED = IF(maxMED = 0,9990, maxMED); +SET minPVP = IFNULL(minPVP,0); +SET minPVP = IF(minPVP = 0, 0.01, minPVP); +SET maxPVP = IFNULL(maxPVP,9990); +SET maxPVP = IF(maxPVP = 0, 9990, maxPVP); + +-- ARTICLE + +SET strART = TRIM(strART); + +IF ASCII(strART) BETWEEN 48 AND 57 THEN + + INSERT INTO articlelist(Id_Article) VALUES(CAST(strART AS UNSIGNED)); + +ELSE + + SET strFILTER = 'TRUE '; + + WHILE LENGTH(strART) > 0 DO + + SET intSPACE_POS = POSITION(' ' IN strART) ; + + IF intSPACE_POS = 0 THEN + + SET strFILTER = CONCAT(strFILTER, ' AND CONCAT(a.Id_Article,Article,t.Tipo) LIKE "%',strART,'%"'); + SET strART = ''; + + ELSE + + SET strFILTER = CONCAT(strFILTER, ' AND CONCAT(a.Id_Article,Article,t.Tipo) LIKE "%',LEFT(strART,intSPACE_POS - 1),'%"'); + SET strART = TRIM(SUBSTRING(strART, intSPACE_POS)); + + END IF; + + + END WHILE; + + if minpvp = 0.01 and maxpvp = 9990 then + + SET v_sql = sql_printf ( + ' + REPLACE articlelist + SELECT a.Id_Article + FROM Articles a + LEFT JOIN Tipos t ON t.tipo_id = a.tipo_id + WHERE %s + AND Medida BETWEEN %v AND %v; + ' + + ,strFILTER + ,minMED + ,maxMED); + else + + SET v_sql = sql_printf ( + ' + REPLACE articlelist + SELECT a.Id_Article + FROM Articles a + LEFT JOIN Tipos t ON t.tipo_id = a.tipo_id + JOIN ( + SELECT DISTINCT Id_Article + FROM Movimientos m + JOIN Tickets t using(Id_Ticket) + JOIN Clientes c using(Id_Cliente) + WHERE Fecha > CURDATE() - INTERVAL 4 DAY + AND Preu BETWEEN %v AND %v + AND c.invoice <> 0 + ) v on v.Id_Article = a.Id_Article + WHERE %s + AND Medida BETWEEN %v AND %v; + ' + ,minPVP + ,maxPVP + ,strFILTER + ,minMED + ,maxMED); + end if; + + CALL sql_query (v_sql); + +END IF; +-- SELECT Id_Article, Article, Medida FROM Articles join articlelist using(Id_Article); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_items_` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_items_`(v_date DATE, -- fecha de recepcion de mercancia + v_consigna INT, + v_agencia INT) +BEGIN +/** + * Crea una tabla con los identificadores de los articulos disponibles. + * + * @table t_bionic_available_items + **/ + CALL bionic_available_ (v_date, v_consigna, v_agencia); + + DROP TEMPORARY TABLE IF EXISTS t_bionic_available_items; + CREATE TEMPORARY TABLE t_bionic_available_items + (INDEX (Id_Article)) + ENGINE = MEMORY + SELECT a.Id_Article, a.Article + FROM `cache`.available c + JOIN Articles a ON c.item_id = a.Id_Article + JOIN t_bionic_available ba ON c.calc_id = ba.calc_id + WHERE c.available GROUP BY a.Article; + + DROP TEMPORARY TABLE t_bionic_available; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_single` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_single`(IN v_wh TINYINT, IN v_date DATETIME, IN id_single INT, IN refresh TINYINT) +BEGIN + DECLARE intcalc_id INT; + call cache.available_refresh(intcalc_id,refresh, v_wh,v_date); + + SELECT available AS minimo FROM cache.available WHERE calc_id = intcalc_id AND item_id = id_single ; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_types_` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_types_`( + v_date DATE, -- fecha de recepcion de mercancia + v_consigna INT, + v_agencia INT) +BEGIN +/** + * Calcula los tipos disponibles para un conjunto de almacenes + * y fechas devueltos por el procedimiento travel_tree() + * + * @table t_bionic_available_types Tabla con los tipos disponibles + **/ + + CALL bionic_available_(v_date, v_consigna, v_agencia); + + DROP TEMPORARY TABLE IF EXISTS t_bionic_available_types; + CREATE TEMPORARY TABLE t_bionic_available_types + (INDEX (tipo_id)) + ENGINE = MEMORY + SELECT a.tipo_id, t.Tipo + FROM `cache`.available c + JOIN Articles a ON c.item_id = a.Id_Article + JOIN Tipos t ON t.tipo_id = a.tipo_id + JOIN t_bionic_available ba ON c.calc_id = ba.calc_id + WHERE c.available > 0 -- JGF 2016-03-23 en el bionic no apareixen negatius, els tipos que no continguen disponible, tampoc els volem mostrar + AND t.Orden != 0 + GROUP BY t.tipo_id; + + DROP TEMPORARY TABLE t_bionic_available; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_types_filter` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_types_filter`(IN v_date DATE, -- fecha de recepcion de mercancia + IN v_consigna INT, + IN v_agencia INT, + IN v_filter TEXT) +BEGIN + -- @return Table t_bionic_available_types + -- Este procedimiento devuelve una tabla t_bionic_available_types + -- que debe de ser borrar por quien la llame, y se conecta con la tabla articlelist + -- que tambien hay que eliminar + + DECLARE v_sql TEXT; + DECLARE v_list TEXT; + SET v_list = ''; + + SET v_filter = IFNULL(v_filter,' TRUE'); + + CALL bionic_available_(v_date, v_consigna, v_agencia); + -- Inroducimos los valores en una tabla temporal + DROP TEMPORARY TABLE IF EXISTS t_bionic_available_types; + + CALL check_table_existence('articlelist'); + + IF @table_exists THEN + + SET v_list = 'JOIN articlelist AL ON AL.Id_Article = a.Id_Article '; + + END IF; + + SET v_sql = sql_printf ( + ' + CREATE TEMPORARY TABLE t_bionic_available_types + SELECT a.tipo_id, Tipo, reino, count(*) as item_count + FROM `cache`.available c + JOIN Articles a ON c.item_id = a.Id_Article + JOIN Tipos t ON t.tipo_id = a.tipo_id + JOIN reinos r ON r.id = t.reino_id + JOIN t_bionic_available ba ON c.calc_id = ba.calc_id + %s + WHERE c.available > 0 + AND %s + GROUP BY a.tipo_id; + ' + , v_list + , v_filter); + + + + + CALL sql_query (v_sql); + + + + DROP TEMPORARY TABLE t_bionic_available; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc`( + v_date DATE, -- fecha de recepcion de mercancia + v_consigna INT, + v_agencia INT) +proc: BEGIN + DECLARE v_available_calc INT; + DECLARE v_shipment DATE; + DECLARE v_agency_id INT; + DECLARE v_customer INT; + DECLARE v_wh SMALLINT; + DECLARE done BOOL; + DECLARE cur CURSOR FOR + SELECT warehouse_id, Fecha_envio FROM vn2008.travel_tree; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_item; + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component; + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_price; + + -- Establecemos los almacenes y las fechas que van a entrar al dispo_multi + + SELECT agency_id INTO v_agency_id FROM vn2008.Agencias WHERE Id_Agencia = v_agencia; + SELECT Id_Cliente INTO v_customer FROM vn2008.Consignatarios WHERE Id_Consigna = v_consigna; + + CALL vn2008.travel_tree(v_date,v_consigna, v_agency_id); + + -- creamos la tabla temporal que almacenara los lotes (antigua cache.bionic) + + CREATE TEMPORARY TABLE tmp.bionic_lot LIKE + template_bionic_lot; + + OPEN cur; + l: LOOP + -- Comprovamos que quedan registros en el cursor + SET done = FALSE; + FETCH cur INTO v_wh, v_shipment; + IF done THEN + LEAVE l; + END IF; + CALL `cache`.available_refresh (v_available_calc, FALSE, v_wh, v_shipment); + + CALL item_last_buy_ (v_wh, v_shipment); + + INSERT INTO tmp.bionic_lot (warehouse_id, item_id, available, buy_id) + SELECT + v_wh, + i.item_id, + IFNULL(i.available, 0), + ilb.buy_id + FROM `cache`.available i + JOIN tmp.bionic_calc br ON br.item_id = i.item_id + LEFT JOIN Articles a ON a.Id_Article = i.item_id + LEFT JOIN t_item_last_buy ilb ON ilb.item_id = i.item_id + WHERE i.calc_id = v_available_calc + AND a.Id_Article != 100 + AND i.available > 0; + + DROP TEMPORARY TABLE t_item_last_buy; + + END LOOP; + + CLOSE cur; + + CALL bionic_calc_component(v_consigna,v_agencia); + + CREATE TEMPORARY TABLE tmp.bionic_item + ENGINE = MEMORY + SELECT b.item_id, SUM(b.available) available, p.name producer, a.Article item, a.Medida size, a.Tallos stems, + a.Categoria category, a.Color, a.Foto image, o.Abreviatura origin, bl.min_price price + FROM tmp.bionic_lot b + JOIN Articles a ON b.item_id = a.Id_Article + LEFT JOIN producer p ON p.producer_id = a.producer_id AND p.visible + JOIN Origen o ON o.id = a.id_origen + JOIN ( + SELECT MIN(price) min_price, item_id + FROM tmp.bionic_price + GROUP BY item_id + ) bl ON bl.item_id = b.item_id + GROUP BY b.item_id; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_clon` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_clon`(IN v_ticket BIGINT) +BEGIN + +/* +Este procedimiento "rebioniza" una linea, eliminando los componentes existentes e insertandolos de nuevo +*/ + DECLARE v_shipment DATE; + DECLARE v_customer INT; + DECLARE v_wh SMALLINT; + DECLARE v_agencia INT; + DECLARE v_consigna INT; + DECLARE v_landing DATE; + DECLARE v_agency INT; + + REPLACE order_Tickets(order_id,Id_Ticket) VALUES(48, v_ticket); + + SELECT t.Id_Cliente , t.warehouse_id, date(t.Fecha), t.Id_Consigna, t.Id_Agencia, t.landing, a.agency_id + INTO v_customer, v_wh, v_shipment, v_consigna, v_agencia, v_landing, v_agency + FROM vn2008.Agencias a + JOIN vn2008.Tickets t ON t.Id_Agencia = a.Id_Agencia + WHERE t.Id_Ticket = v_ticket; + + DROP TEMPORARY TABLE IF EXISTS travel_tree; + CREATE TEMPORARY TABLE travel_tree ENGINE = MEMORY + SELECT v_wh warehouse_id, v_shipment Fecha_envio, v_landing Fecha_recepcion; + + CALL item_last_buy_ (v_wh, v_shipment); -- rellena la tabla t_item_last_buy con la ultima compra + + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; + CREATE TEMPORARY TABLE tmp.bionic_lot + SELECT v_wh warehouse_id,NULL available, + m.Id_Article item_id,ilb.buy_id + FROM Movimientos m + LEFT JOIN t_item_last_buy ilb ON ilb.item_id = m.Id_Article + WHERE m.Id_Ticket = v_ticket GROUP BY m.Id_Article; + + CALL bionic_calc_component(v_consigna,v_agencia); + + -- Bionizamos lineas con Preu = 0 + DROP TEMPORARY TABLE IF EXISTS tmp.movement; + CREATE TEMPORARY TABLE tmp.movement + (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY + SELECT Id_Movimiento, v_wh warehouse_id FROM Movimientos m + JOIN Tickets t on t.Id_Ticket = m.Id_Ticket WHERE m.Id_Ticket = v_ticket AND Preu = 0; + CALL bionic_movement_update(1); + + -- Bionizamos lineas con Preu > 0 + DROP TEMPORARY TABLE IF EXISTS tmp.movement; + CREATE TEMPORARY TABLE tmp.movement + (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY + SELECT Id_Movimiento, v_wh warehouse_id FROM Movimientos m + JOIN Tickets t on t.Id_Ticket = m.Id_Ticket WHERE m.Id_Ticket = v_ticket AND Preu > 0; + CALL bionic_movement_update(6); + + IF v_landing IS NULL THEN + CALL travel_tree_shipment(v_shipment, v_consigna, v_agency,v_wh); + UPDATE Tickets t + JOIN travel_tree_shipment tts ON t.warehouse_id = tts.warehouse_id + SET t.landing = tts.landing + WHERE Id_Ticket = v_ticket; + END IF; + + -- Log + call Ditacio(v_ticket + ,'Bioniza Ticket' + ,'T' + , 20 + , 'proc bionic_calc_clon' + , NULL); + + -- Limpieza + DROP TEMPORARY TABLE t_item_last_buy; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_clonkk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_clonkk`(IN v_ticket BIGINT) +BEGIN + +/* +Este procedimiento "rebioniza" una linea, eliminando los componentes existentes e insertandolos de nuevo +*/ + DECLARE v_shipment DATE; + DECLARE v_customer INT; + DECLARE v_wh SMALLINT; + DECLARE v_agencia INT; + DECLARE v_consigna INT; + DECLARE v_landing DATE; + + REPLACE order_Tickets(order_id,Id_Ticket) VALUES(48, v_ticket); + + SELECT Id_Cliente , t.warehouse_id, date(t.Fecha), Id_Consigna , Id_Agencia + INTO v_customer ,v_wh, v_shipment , v_consigna , v_agencia + FROM vn2008.Agencias a + JOIN vn2008.Tickets t using(Id_Agencia) + WHERE Id_Ticket = v_ticket; + + DROP TEMPORARY TABLE IF EXISTS travel_tree; + CREATE TEMPORARY TABLE travel_tree ENGINE = MEMORY + SELECT v_wh warehouse_id, v_shipment Fecha_envio, v_landing Fecha_recepcion; + + CALL item_last_buy_ (v_wh, v_shipment); -- rellena la tabla t_item_last_buy con la ultima compra + + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; + CREATE TEMPORARY TABLE tmp.bionic_lot + SELECT v_wh warehouse_id,NULL available, + m.Id_Article item_id,ilb.buy_id + FROM Movimientos m + LEFT JOIN t_item_last_buy ilb ON ilb.item_id = m.Id_Article + WHERE m.Id_Ticket = v_ticket GROUP BY m.Id_Article; + + CALL bionic_calc_component(v_consigna,v_agencia); + + -- Bionizamos lineas con Preu = 0 + DROP TEMPORARY TABLE IF EXISTS tmp.movement; + CREATE TEMPORARY TABLE tmp.movement + (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY + SELECT Id_Movimiento, v_wh warehouse_id FROM Movimientos m + JOIN Tickets t on t.Id_Ticket = m.Id_Ticket WHERE m.Id_Ticket = v_ticket AND Preu = 0; + CALL bionic_movement_update(1); + + -- Bionizamos lineas con Preu > 0 + DROP TEMPORARY TABLE IF EXISTS tmp.movement; + CREATE TEMPORARY TABLE tmp.movement + (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY + SELECT Id_Movimiento, v_wh warehouse_id FROM Movimientos m + JOIN Tickets t on t.Id_Ticket = m.Id_Ticket WHERE m.Id_Ticket = v_ticket AND Preu > 0; + CALL bionic_movement_update(6); + + + -- Log + call Ditacio(v_ticket + ,'Bioniza Ticket' + ,'T' + , 20 + , 'proc bionic_calc_clon' + , NULL); + + -- Limpieza + DROP TEMPORARY TABLE t_item_last_buy; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_component` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_component`( + -- v_date DATE, -- fecha de recepcion de mercancia + v_consigna INT, + v_agencia INT) +proc: BEGIN + + DECLARE v_customer INT; + DECLARE COEFICIENTE_DE_INFLACION_GENERAL INT DEFAULT 1.3; + DECLARE DENSIDAD_MINIMA_PESO_VOLUMETRICO INT DEFAULT 167; + DECLARE VOLUMEN_CAJA_VERDNATURA BIGINT DEFAULT 138000; + -- DECLARE vValorEmbolsado DOUBLE DEFAULT 0.04; + + SELECT Id_Cliente INTO v_customer FROM Consignatarios WHERE Id_Consigna = v_consigna; + SET @rate2 := 0; + SET @rate3 := 0; + + DROP TEMPORARY TABLE IF EXISTS t_bionic_temp; + CREATE TEMPORARY TABLE t_bionic_temp + (PRIMARY KEY (item_id,warehouse_id)) + ENGINE = MEMORY + SELECT + b.item_id, b.warehouse_id,available, + IF((@rate2 := IFNULL(pf.rate_2,c.Tarifa2)) < a.PVP AND a.`Min`, a.PVP, @rate2) * 1.0 rate_2, + IF((@rate3 := IFNULL(pf.rate_3,c.Tarifa3)) < a.PVP AND a.`Min`, a.PVP, @rate3) * 1.0 rate_3, + ifnull(pf.rate_3,0) AS min_price, + IFNULL(pf.Packing,c.Packing) packing, + IFNULL(pf.grouping,c.grouping) grouping, + ABS(IFNULL(pf.caja,c.caja)) box, + b.buy_id, a.tipo_id + FROM tmp.bionic_lot b + JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra + JOIN vn2008.Articles a ON b.item_id = a.Id_Article + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = t.reino_id + LEFT JOIN vn2008.PreciosEspeciales p ON a.Id_Article = p.Id_Article AND p.Id_Cliente = v_customer + LEFT JOIN ( + SELECT * FROM ( + SELECT p.item_id, p.grouping, p.Packing,p.caja, p.rate_2, p.rate_3, t.warehouse_id + FROM vn2008.price_fixed p + JOIN vn2008.travel_tree t ON t.warehouse_id = p.warehouse_id OR p.warehouse_id = 0 + WHERE t.Fecha_envio BETWEEN p.date_start AND p.date_end ORDER BY p.item_id, p.warehouse_id DESC + ) t + GROUP BY item_id, warehouse_id + ) pf ON pf.item_id = b.item_id AND pf.warehouse_id = b.warehouse_id + -- descartamos articulos con coste menor de 0.01 + WHERE Costefijo + Portefijo + Embalajefijo + Comisionfija > 0.01 AND r.display <> 0; + + -- Creamos la tabla tmp.bionic_component + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component; + CREATE TEMPORARY TABLE tmp.bionic_component LIKE + template_bionic_component; + + -- Componentes del precio, valores absolutos + INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) + SELECT b.warehouse_id, b.item_id, 29, rate_3 - Costefijo - Portefijo - Embalajefijo - Comisionfija + FROM t_bionic_temp b + JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; + + INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) + SELECT b.warehouse_id, b.item_id, 28, Costefijo + Portefijo + Embalajefijo + Comisionfija + FROM t_bionic_temp b + JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; + + -- Ahora los valores en funcion de la base + + DROP TEMPORARY TABLE IF EXISTS t_components_base; + + CREATE TEMPORARY TABLE t_components_base + SELECT bc.item_id, ROUND(SUM(cost), 4) AS base, bc.warehouse_id + FROM tmp.bionic_component bc + GROUP BY bc.item_id,warehouse_id; + + -- La ratio se calcula teniendo en cuenta el valor de las reclamaciones y el saldo de greuge + + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, item_id, 17, ROUND(base * LEAST(recobro,0.25), 3) + FROM t_components_base cb + JOIN bi.claims_ratio ON Id_Cliente = v_customer + WHERE recobro > 0.009; + + -- PAK 2016-08-31 Componente de maná automático, en función del maná acumulado por el comercial. + + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, item_id, 39, ROUND(base * prices_modifier_rate, 3) as manaAuto + FROM t_components_base cb + JOIN Clientes c on c.Id_Cliente = v_customer + JOIN bs.mana_spellers ms ON c.Id_Trabajador = ms.Id_Trabajador + WHERE ms.prices_modifier_activated + HAVING manaAuto <> 0 ; + + +/* + -- Vendedor variable + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, item_id, Id_Componente, IFNULL(ROUND(base * tax,4), 0) + FROM t_components_base cb + JOIN bi.tarifa_componentes + WHERE tarifa_componentes_series_id = 2 and IFNULL(tax, 0) > 0; + */ + + +-- ******* Inicio Bloque para componentes con tarifa_class diferente de NULL + -- Descuento por ultimas unidades + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, b.item_id, Id_Componente, GREATEST(IFNULL(ROUND(base * tax,4), 0), b.min_price - b.rate_3) + FROM t_components_base cb + JOIN bi.tarifa_componentes + JOIN t_bionic_temp b ON b.item_id = cb.item_id + LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id + WHERE Id_Componente = 32 AND tax <> 0 AND b.min_price < b.rate_3 AND PrecioEspecial IS NULL; + + -- Incremento por paquete suelto + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id, b.item_id, 22, rate_2 - rate_3 + FROM t_bionic_temp b + JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra + LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id + WHERE PrecioEspecial IS NULL; + +-- ******* Fin Bloque para componentes con tarifa_class diferente de NULL + + -- Reparto + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id + , b.item_id + , 15 + , COEFICIENTE_DE_INFLACION_GENERAL + * ROUND( + r.cm3 + * IF(a.Vista = 1, (GREATEST(art.density,DENSIDAD_MINIMA_PESO_VOLUMETRICO) / DENSIDAD_MINIMA_PESO_VOLUMETRICO ) , 1) + * az.price + * az.inflacion + / VOLUMEN_CAJA_VERDNATURA, 4 + ) cost + FROM t_bionic_temp b + JOIN vn2008.Articles art ON art.Id_Article = b.item_id + JOIN vn2008.Agencias a ON a.Id_Agencia = v_agencia + JOIN vn2008.Consignatarios c ON c.Id_Consigna = v_consigna + JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = b.warehouse_id AND ap.province_id = c.province_id + JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = v_agencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = b.warehouse_id + LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id + HAVING cost <> 0; + +-- Reparto bonificado + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id + , b.item_id + , 41 + , COEFICIENTE_DE_INFLACION_GENERAL + * ROUND( + r.cm3 + * IF(a.Vista = 1, (GREATEST(art.density,DENSIDAD_MINIMA_PESO_VOLUMETRICO) / DENSIDAD_MINIMA_PESO_VOLUMETRICO ) , 1) + * awb.bonus + * az.inflacion + / VOLUMEN_CAJA_VERDNATURA, 4 + ) cost + FROM t_bionic_temp b + JOIN vn2008.Articles art ON art.Id_Article = b.item_id + JOIN vn2008.Agencias a ON a.Id_Agencia = v_agencia + JOIN vn2008.Consignatarios c ON c.Id_Consigna = v_consigna + JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = b.warehouse_id AND ap.province_id = c.province_id + JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = v_agencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = b.warehouse_id + JOIN vn2008.agency_weekday_bonus awb ON awb.warehouse_id = az.warehouse_id AND awb.zona = az.zona AND a.agency_id = awb.agency_id + LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id + JOIN vn2008.travel_tree t ON t.warehouse_id = awb.warehouse_id AND weekday(t.Fecha_recepcion) = awb.weekDay + HAVING cost <> 0; + +-- PAK 12-05-2015 + -- EMBOLSADO + IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = v_consigna) THEN + + -- IF v_consigna IN (13690, 3402, 5661, 4233) THEN + + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id, b.item_id, 38, ap.packagingValue cost + FROM t_bionic_temp b + JOIN vn.addressForPackaging ap + WHERE ap.addressFk = v_consigna; + + END IF; + + -- JGF 14-08-2015 + -- Modificacion de precio por dia de preparacion del pedido + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, cb.item_id, 14, cb.base * (IFNULL(pe.percentage,pp.percentage)/100) + FROM t_components_base cb + JOIN vn2008.travel_tree tt ON tt.warehouse_id = cb.warehouse_id + LEFT JOIN vn2008.preparation_percentage pp ON pp.week_day = weekday(tt.Fecha_envio) AND cb.warehouse_id = IFNULL(pp.warehouse_id,cb.warehouse_id) + LEFT JOIN vn2008.preparation_exception pe ON pe.exception_day = tt.Fecha_envio AND cb.warehouse_id = IFNULL(pe.warehouse_id,cb.warehouse_id) + WHERE IFNULL(pe.percentage,pp.percentage); + + -- Creamos la tabla tmp.bionic_component_copy por que mysql no puede reabrir una tabla temporal + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component_copy; + CREATE TEMPORARY TABLE tmp.bionic_component_copy + SELECT * FROM tmp.bionic_component; + + -- JGF 19-01-2016 + -- Precios especiales + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id, b.item_id, 10, pe.PrecioEspecial - SUM(cost) sum_cost + FROM tmp.bionic_component_copy b + JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente + JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id + WHERE t.tarifa_class IS NULL + GROUP BY b.item_id, b.warehouse_id + HAVING ABS(sum_cost) > 0.001; + + -- Lotes + DROP TEMPORARY TABLE IF EXISTS t_component_sum; + CREATE TEMPORARY TABLE t_component_sum + (INDEX (item_id, warehouse_id)) + ENGINE = MEMORY + SELECT SUM(cost) sum_cost, b.item_id, b.warehouse_id, t.tarifa_class + FROM tmp.bionic_component b + JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente + GROUP BY b.item_id, b.warehouse_id, t.tarifa_class; + + -- ***** Inicia Modifica t_bionic_rate las diferentes tarifas + -- Tarifa por unidad minima + DROP TEMPORARY TABLE IF EXISTS t_bionic_rate; + CREATE TEMPORARY TABLE t_bionic_rate + ENGINE = MEMORY + SELECT b.warehouse_id, item_id, 1 rate, + IF(box = 1, grouping, 1) grouping, SUM(sum_cost) price + FROM t_bionic_temp b + JOIN t_component_sum cs USING(item_id, warehouse_id) + WHERE IFNULL(cs.tarifa_class,1) = 1 AND box < 2 AND (packing > grouping or box = 0) + GROUP BY warehouse_id, item_id; + + -- Tarifa por caja + INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, grouping, price) + SELECT b.warehouse_id, item_id, 2 rate, packing grouping, + SUM(sum_cost) price + FROM t_bionic_temp b + JOIN t_component_sum cs USING(item_id, warehouse_id) + WHERE available IS NULL OR (IFNULL(cs.tarifa_class,2) = 2 AND packing > 0 AND available >= packing) + GROUP BY warehouse_id, item_id; + + -- Tarifa para toda la cantidad disponible + INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, grouping, price) + SELECT b.warehouse_id, item_id, 3 rate, available grouping, + SUM(sum_cost) price + FROM t_bionic_temp b + JOIN t_component_sum cs USING(item_id, warehouse_id) + WHERE IFNULL(cs.tarifa_class,3) = 3 + GROUP BY warehouse_id, item_id; + + -- ***** Fin Modifica t_bionic_rate las diferentes tarifas + + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_price; + CREATE TEMPORARY TABLE tmp.bionic_price + LIKE template_bionic_price; + + INSERT INTO tmp.bionic_price (warehouse_id, item_id, rate, grouping, price) + SELECT * FROM ( + SELECT * FROM t_bionic_rate ORDER BY price + ) t + GROUP BY item_id, warehouse_id, grouping; + + + DROP TEMPORARY TABLE IF EXISTS tmp.travel_tree; + CREATE TEMPORARY TABLE tmp.travel_tree + ENGINE = MEMORY + SELECT * FROM travel_tree; + + -- Limpieza + + DROP TEMPORARY TABLE travel_tree; + DROP TEMPORARY TABLE t_bionic_temp; + DROP TEMPORARY TABLE t_component_sum; + DROP TEMPORARY TABLE t_components_base; + DROP TEMPORARY TABLE t_bionic_rate; + DROP TEMPORARY TABLE tmp.bionic_component_copy; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_component_beta` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_component_beta`( + -- v_date DATE, -- fecha de recepcion de mercancia + v_consigna INT, + v_agencia INT) +proc: BEGIN + + DECLARE v_customer INT; + DECLARE COEFICIENTE_DE_INFLACION_GENERAL INT DEFAULT 1.3; + DECLARE DENSIDAD_MINIMA_PESO_VOLUMETRICO INT DEFAULT 167; + DECLARE VOLUMEN_CAJA_VERDNATURA BIGINT DEFAULT 138000; + -- DECLARE vValorEmbolsado DOUBLE DEFAULT 0.04; + + SELECT Id_Cliente INTO v_customer FROM Consignatarios WHERE Id_Consigna = v_consigna; + SET @rate2 := 0; + SET @rate3 := 0; + + DROP TEMPORARY TABLE IF EXISTS t_bionic_temp; + CREATE TEMPORARY TABLE t_bionic_temp + (PRIMARY KEY (item_id,warehouse_id)) + ENGINE = MEMORY + SELECT + b.item_id, b.warehouse_id,available, + IF((@rate2 := IFNULL(pf.rate_2,c.Tarifa2)) < a.PVP AND a.`Min`, a.PVP, @rate2) * 1.0 rate_2, + IF((@rate3 := IFNULL(pf.rate_3,c.Tarifa3)) < a.PVP AND a.`Min`, a.PVP, @rate3) * 1.0 rate_3, + ifnull(pf.rate_3,0) AS min_price, + IFNULL(pf.Packing,c.Packing) packing, + IFNULL(pf.grouping,c.grouping) grouping, + ABS(IFNULL(pf.caja,c.caja)) box, + b.buy_id, a.tipo_id + FROM tmp.bionic_lot b + JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra + JOIN vn2008.Articles a ON b.item_id = a.Id_Article + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = t.reino_id + LEFT JOIN vn2008.PreciosEspeciales p ON a.Id_Article = p.Id_Article AND p.Id_Cliente = v_customer + LEFT JOIN ( + SELECT * FROM ( + SELECT p.item_id, p.grouping, p.Packing,p.caja, p.rate_2, p.rate_3, t.warehouse_id + FROM vn2008.price_fixed p + JOIN vn2008.travel_tree t ON t.warehouse_id = p.warehouse_id OR p.warehouse_id = 0 + WHERE t.Fecha_envio BETWEEN p.date_start AND p.date_end ORDER BY p.item_id, p.warehouse_id DESC + ) t + GROUP BY item_id, warehouse_id + ) pf ON pf.item_id = b.item_id AND pf.warehouse_id = b.warehouse_id + -- descartamos articulos con coste menor de 0.01 + WHERE Costefijo + Portefijo + Embalajefijo + Comisionfija > 0.01 AND r.display <> 0; + + -- Creamos la tabla tmp.bionic_component + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component; + CREATE TEMPORARY TABLE tmp.bionic_component LIKE + template_bionic_component; + + -- Componentes del precio, valores absolutos + INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) + SELECT b.warehouse_id, b.item_id, 29, rate_3 - Costefijo - Portefijo - Embalajefijo - Comisionfija + FROM t_bionic_temp b + JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; + + INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) + SELECT b.warehouse_id, b.item_id, 28, Costefijo + Portefijo + Embalajefijo + Comisionfija + FROM t_bionic_temp b + JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; + + -- Ahora los valores en funcion de la base + + DROP TEMPORARY TABLE IF EXISTS t_components_base; + + CREATE TEMPORARY TABLE t_components_base + SELECT bc.item_id, ROUND(SUM(cost), 4) AS base, bc.warehouse_id + FROM tmp.bionic_component bc + GROUP BY bc.item_id,warehouse_id; + + -- La ratio se calcula teniendo en cuenta el valor de las reclamaciones y el saldo de greuge + + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, item_id, 17, ROUND(base * LEAST(recobro,0.25), 3) + FROM t_components_base cb + JOIN bi.claims_ratio ON Id_Cliente = v_customer + WHERE recobro > 0.009; + + -- PAK 2016-08-31 Componente de maná automático, en función del maná acumulado por el comercial. + + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, item_id, 39, ROUND(base * prices_modifier_rate, 3) as manaAuto + FROM t_components_base cb + JOIN Clientes c on c.Id_Cliente = v_customer + JOIN bs.mana_spellers ms ON c.Id_Trabajador = ms.Id_Trabajador + WHERE ms.prices_modifier_activated + HAVING manaAuto <> 0 ; + + +/* + -- Vendedor variable + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, item_id, Id_Componente, IFNULL(ROUND(base * tax,4), 0) + FROM t_components_base cb + JOIN bi.tarifa_componentes + WHERE tarifa_componentes_series_id = 2 and IFNULL(tax, 0) > 0; + */ + + +-- ******* Inicio Bloque para componentes con tarifa_class diferente de NULL + -- Descuento por ultimas unidades + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, b.item_id, Id_Componente, GREATEST(IFNULL(ROUND(base * tax,4), 0), b.min_price - b.rate_3) + FROM t_components_base cb + JOIN bi.tarifa_componentes + JOIN t_bionic_temp b ON b.item_id = cb.item_id + LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id + WHERE Id_Componente = 32 AND tax <> 0 AND b.min_price < b.rate_3 AND PrecioEspecial IS NULL; + + -- Incremento por paquete suelto + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id, b.item_id, 22, rate_2 - rate_3 + FROM t_bionic_temp b + JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra + LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id + WHERE PrecioEspecial IS NULL; + +-- ******* Fin Bloque para componentes con tarifa_class diferente de NULL + + -- Reparto + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id + , b.item_id + , 15 + , COEFICIENTE_DE_INFLACION_GENERAL + * ROUND( + r.cm3 + * IF(a.Vista = 1, (GREATEST(art.density,DENSIDAD_MINIMA_PESO_VOLUMETRICO) / DENSIDAD_MINIMA_PESO_VOLUMETRICO ) , 1) + * az.price + * az.inflacion + / VOLUMEN_CAJA_VERDNATURA, 4 + ) cost + FROM t_bionic_temp b + JOIN vn2008.Articles art ON art.Id_Article = b.item_id + JOIN vn2008.Agencias a ON a.Id_Agencia = v_agencia + JOIN vn2008.Consignatarios c ON c.Id_Consigna = v_consigna + JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = b.warehouse_id AND ap.province_id = c.province_id + JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = v_agencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = b.warehouse_id + LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id + HAVING cost <> 0; + +-- Reparto bonificado + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id + , b.item_id + , 41 + , COEFICIENTE_DE_INFLACION_GENERAL + * ROUND( + r.cm3 + * IF(a.Vista = 1, (GREATEST(art.density,DENSIDAD_MINIMA_PESO_VOLUMETRICO) / DENSIDAD_MINIMA_PESO_VOLUMETRICO ) , 1) + * awb.bonus + * az.inflacion + / VOLUMEN_CAJA_VERDNATURA, 4 + ) cost + FROM t_bionic_temp b + JOIN vn2008.Articles art ON art.Id_Article = b.item_id + JOIN vn2008.Agencias a ON a.Id_Agencia = v_agencia + JOIN vn2008.Consignatarios c ON c.Id_Consigna = v_consigna + JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = b.warehouse_id AND ap.province_id = c.province_id + JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = v_agencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = b.warehouse_id + JOIN vn2008.agency_weekday_bonus awb ON awb.warehouse_id = az.warehouse_id AND awb.zona = az.zona AND a.agency_id = awb.agency_id + LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id + JOIN vn2008.travel_tree t ON t.warehouse_id = awb.warehouse_id AND weekday(t.Fecha_recepcion) = awb.weekDay + HAVING cost <> 0; + +-- PAK 12-05-2015 + -- EMBOLSADO + IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = v_consigna) THEN + + -- IF v_consigna IN (13690, 3402, 5661, 4233) THEN + + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id, b.item_id, 38, ap.packagingValue cost + FROM t_bionic_temp b + JOIN vn.addressForPackaging ap + WHERE ap.addressFk = v_consigna; + + END IF; + + -- JGF 14-08-2015 + -- Modificacion de precio por dia de preparacion del pedido + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, cb.item_id, 14, cb.base * (IFNULL(pe.percentage,pp.percentage)/100) + FROM t_components_base cb + JOIN vn2008.travel_tree tt ON tt.warehouse_id = cb.warehouse_id + LEFT JOIN vn2008.preparation_percentage pp ON pp.week_day = weekday(tt.Fecha_envio) AND cb.warehouse_id = IFNULL(pp.warehouse_id,cb.warehouse_id) + LEFT JOIN vn2008.preparation_exception pe ON pe.exception_day = tt.Fecha_envio AND cb.warehouse_id = IFNULL(pe.warehouse_id,cb.warehouse_id) + WHERE IFNULL(pe.percentage,pp.percentage); + + -- Creamos la tabla tmp.bionic_component_copy por que mysql no puede reabrir una tabla temporal + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component_copy; + CREATE TEMPORARY TABLE tmp.bionic_component_copy + SELECT * FROM tmp.bionic_component; + + -- JGF 19-01-2016 + -- Precios especiales + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id, b.item_id, 10, pe.PrecioEspecial - SUM(cost) sum_cost + FROM tmp.bionic_component_copy b + JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente + JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id + WHERE t.tarifa_class IS NULL + GROUP BY b.item_id, b.warehouse_id + HAVING ABS(sum_cost) > 0.001; + + + + + -- Lotes + DROP TEMPORARY TABLE IF EXISTS t_component_sum; + CREATE TEMPORARY TABLE t_component_sum + (INDEX (item_id, warehouse_id)) + ENGINE = MEMORY + SELECT SUM(cost) sum_cost, b.item_id, b.warehouse_id, t.tarifa_class + FROM tmp.bionic_component b + JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente + GROUP BY b.item_id, b.warehouse_id, t.tarifa_class; + + -- ***** Inicia Modifica t_bionic_rate las diferentes tarifas + -- Tarifa por unidad minima + DROP TEMPORARY TABLE IF EXISTS t_bionic_rate; + CREATE TEMPORARY TABLE t_bionic_rate + ENGINE = MEMORY + SELECT b.warehouse_id, item_id, 1 rate, + IF(box = 1, grouping, 1) grouping, SUM(sum_cost) price + FROM t_bionic_temp b + JOIN t_component_sum cs USING(item_id, warehouse_id) + WHERE IFNULL(cs.tarifa_class,1) = 1 AND box < 2 AND (packing > grouping or box = 0) + GROUP BY warehouse_id, item_id; + + -- Tarifa por caja + INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, grouping, price) + SELECT b.warehouse_id, item_id, 2 rate, packing grouping, + SUM(sum_cost) price + FROM t_bionic_temp b + JOIN t_component_sum cs USING(item_id, warehouse_id) + WHERE available IS NULL OR (IFNULL(cs.tarifa_class,2) = 2 AND packing > 0 AND available >= packing) + GROUP BY warehouse_id, item_id; + + -- Tarifa para toda la cantidad disponible + INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, grouping, price) + SELECT b.warehouse_id, item_id, 3 rate, available grouping, + SUM(sum_cost) price + FROM t_bionic_temp b + JOIN t_component_sum cs USING(item_id, warehouse_id) + WHERE IFNULL(cs.tarifa_class,3) = 3 + GROUP BY warehouse_id, item_id; + + -- ***** Fin Modifica t_bionic_rate las diferentes tarifas + + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_price; + CREATE TEMPORARY TABLE tmp.bionic_price + LIKE template_bionic_price; + + INSERT INTO tmp.bionic_price (warehouse_id, item_id, rate, grouping, price) + SELECT * FROM ( + SELECT * FROM t_bionic_rate ORDER BY price + ) t + GROUP BY item_id, warehouse_id, grouping; + + + DROP TEMPORARY TABLE IF EXISTS tmp.travel_tree; + CREATE TEMPORARY TABLE tmp.travel_tree + ENGINE = MEMORY + SELECT * FROM travel_tree; + + -- Limpieza + + DROP TEMPORARY TABLE travel_tree; + DROP TEMPORARY TABLE t_bionic_temp; + DROP TEMPORARY TABLE t_component_sum; + DROP TEMPORARY TABLE t_components_base; + + DROP TEMPORARY TABLE t_bionic_rate; + DROP TEMPORARY TABLE tmp.bionic_component_copy; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_date` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_date`(v_ticket INT) +proc: BEGIN +/** + * Este procedimiento asigna la fecha de llegada correcta a un ticket. + * + * @param v_ticket Id del ticket + **/ + DECLARE v_shipment DATE; + DECLARE v_agency_id INT; + DECLARE v_wh SMALLINT; + DECLARE v_province INT; + DECLARE v_landing DATE; + + SELECT agency_id, DATE(Fecha), t.warehouse_id, province_id + INTO v_agency_id, v_shipment, v_wh, v_province + FROM Tickets t + JOIN Consignatarios c ON c.Id_Consigna = t.Id_Consigna + JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia + WHERE Id_Ticket = v_ticket; + + SELECT landing INTO v_landing FROM ( + SELECT + @d := TIMESTAMPADD(DAY, subtract_day, v_shipment), + @w := WEEKDAY(@d), + IF(week_day IS NOT NULL, TIMESTAMPADD(DAY, (week_day - @w) + IF(@w > week_day, 7, 0), @d), @d) landing +/* + TIMESTAMPADD(DAY, + IFNULL(IF(WEEKDAY(@vdate) > week_day, 7, 0) + week_day - WEEKDAY(@vdate), + subtract_day) - CAST(subtract_day AS DECIMAL), + @vdate) landing +*/ + FROM agency_hour + WHERE warehouse_id = v_wh + AND (province_id = v_province OR province_id IS NULL) + AND agency_id = v_agency_id + ORDER BY + (province_id IS NOT NULL) * 3 + (week_day IS NOT NULL) DESC, landing + LIMIT 1 + ) t; + + IF v_landing IS NULL THEN + SET v_landing = v_shipment; + END IF; + + UPDATE Tickets SET landing = v_landing WHERE Id_Ticket = v_ticket; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_movement` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_movement`(IN v_id_mov BIGINT ) +proc: BEGIN + +/* +Este procedimiento bioniza una linea de movimiento +*/ + DECLARE v_shipment DATE; + DECLARE v_customer INT; + DECLARE v_wh SMALLINT; + DECLARE v_agencia INT; + DECLARE v_consigna INT; + DECLARE v_ticket BIGINT; + DECLARE v_id_article BIGINT; + DECLARE v_landing DATE; + DECLARE v_ticket_free BOOLEAN DEFAULT TRUE; + + + SELECT FALSE + INTO v_ticket_free + FROM Tickets t + JOIN Movimientos m ON m.Id_Ticket = t.Id_Ticket + LEFT JOIN vn.ticketState ts on ts.ticket = t.Id_Ticket + WHERE Id_Movimiento = v_id_mov + AND (t.Factura != "" + or + ( + ts.alertLevel > 0 + AND + m.Preu != 0 + ) + ) + LIMIT 1; + + SELECT Id_Ticket, Id_Article INTO v_ticket, v_id_article FROM Movimientos WHERE Id_Movimiento = v_id_mov; + + REPLACE order_Tickets(order_id,Id_Ticket) VALUES(48, v_ticket); + + SELECT Id_Cliente , t.warehouse_id, date(t.Fecha), Id_Consigna , Id_Agencia + INTO v_customer ,v_wh, v_shipment , v_consigna , v_agencia + FROM vn2008.Agencias a + JOIN vn2008.Tickets t using(Id_Agencia) + WHERE Id_Ticket = v_ticket; + + DROP TEMPORARY TABLE IF EXISTS travel_tree; + CREATE TEMPORARY TABLE travel_tree ENGINE = MEMORY + SELECT v_wh warehouse_id, v_shipment Fecha_envio, v_landing Fecha_recepcion; + + CALL item_last_buy_ (v_wh, v_shipment); -- rellena la tabla t_item_last_buy con la ultima compra + DELETE FROM t_item_last_buy WHERE item_id != v_id_article; + + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; + CREATE TEMPORARY TABLE tmp.bionic_lot + SELECT v_wh warehouse_id,NULL available, + m.Id_Article item_id,ilb.buy_id + FROM Movimientos m + LEFT JOIN t_item_last_buy ilb ON ilb.item_id = m.Id_Article + WHERE m.Id_Movimiento = v_id_mov; + + CALL bionic_calc_component(v_consigna,v_agencia); + + DROP TEMPORARY TABLE IF EXISTS tmp.movement; + CREATE TEMPORARY TABLE tmp.movement + (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY + SELECT Id_Movimiento,v_wh warehouse_id FROM Movimientos m WHERE m.Id_Movimiento = v_id_mov; + + CALL bionic_movement_update(IF(v_ticket_free,1,6)); -- si el ticket esta facturado, respeta los precios + + -- Log + call Ditacio(v_ticket + ,'Bioniza Linea' + ,'T' + , 20 + , 'proc bionic_calc_movement ' + , v_id_mov); + + -- Limpieza + + DROP TEMPORARY TABLE t_item_last_buy; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_movement_ok` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_movement_ok`(IN v_ticket BIGINT) +BEGIN + +/* +Este procedimiento "rebioniza" una linea, eliminando los componentes existentes e insertandolos de nuevo +*/ + DECLARE v_shipment DATE; + DECLARE v_customer INT; + DECLARE v_wh SMALLINT; + DECLARE v_agencia INT; + DECLARE v_consigna INT; + DECLARE v_landing DATE; + + REPLACE order_Tickets(order_id,Id_Ticket) VALUES(48, v_ticket); + + SELECT Id_Cliente , t.warehouse_id, date(t.Fecha), Id_Consigna , Id_Agencia + INTO v_customer ,v_wh, v_shipment , v_consigna , v_agencia + FROM vn2008.Agencias a + JOIN vn2008.Tickets t using(Id_Agencia) + WHERE Id_Ticket = v_ticket; + + DROP TEMPORARY TABLE IF EXISTS travel_tree; + CREATE TEMPORARY TABLE travel_tree ENGINE = MEMORY + SELECT v_wh warehouse_id, v_shipment Fecha_envio, v_landing Fecha_recepcion; + + CALL item_last_buy_ (v_wh, v_shipment); -- rellena la tabla t_item_last_buy con la ultima compra + + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; + CREATE TEMPORARY TABLE tmp.bionic_lot + SELECT v_wh warehouse_id,NULL available, + m.Id_Article item_id,ilb.buy_id + FROM Movimientos m + LEFT JOIN t_item_last_buy ilb ON ilb.item_id = m.Id_Article + WHERE m.Id_Ticket = v_ticket GROUP BY m.Id_Article; + + CALL bionic_calc_component(v_consigna,v_agencia); + + DROP TEMPORARY TABLE IF EXISTS tmp.movement; + CREATE TEMPORARY TABLE tmp.movement + (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY + SELECT Id_Movimiento, v_wh warehouse_id FROM Movimientos m WHERE m.Id_Ticket = v_ticket; + CALL bionic_movement_update(1); + + -- Log + call Ditacio(v_ticket + ,'Bioniza Lineas OK' + ,'T' + , 20 + , 'proc bionic_calc_movement_ok ' + , NULL); + + -- Limpieza + DROP TEMPORARY TABLE t_item_last_buy; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_reverse` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_reverse`( + vWarehouse INT, + vMargin DECIMAL(10,3), + vRetailedPrice DECIMAL(10,3), + vM3 DECIMAL(10,3), + vConsigna INT, + vAgencia INT) +proc: BEGIN + + DECLARE COEFICIENTE_DE_INFLACION_GENERAL INT DEFAULT 1.3; + DECLARE DENSIDAD_MINIMA_PESO_VOLUMETRICO INT DEFAULT 167; + DECLARE VOLUMEN_CAJA_VERDNATURA BIGINT DEFAULT 138000; + DECLARE vCost DECIMAL(10,4) DEFAULT 0; + DECLARE vCustomer INT; + DECLARE vRecovery DECIMAL(10,4) DEFAULT 0; + DECLARE vMana DECIMAL(10,4) DEFAULT 0; + DECLARE vPort DECIMAL(10,4) DEFAULT 0; + + SELECT Id_Cliente INTO vCustomer FROM Consignatarios WHERE Id_Consigna = vConsigna; + + -- Recobro + SELECT ROUND(LEAST(recobro,0.25), 3) INTO vRecovery + FROM bi.claims_ratio + WHERE Id_Cliente = vCustomer AND recobro > 0.009; + + -- Componente de maná automático, en función del maná acumulado por el comercial. + SELECT ROUND(prices_modifier_rate, 3) INTO vMana + FROM Clientes c + JOIN bs.mana_spellers ms ON c.Id_Trabajador = ms.Id_Trabajador + WHERE ms.prices_modifier_activated AND c.Id_Cliente = vCustomer; + + -- Reparto + SELECT COEFICIENTE_DE_INFLACION_GENERAL + * ROUND( + vM3 + * az.price + * az.inflacion + / VOLUMEN_CAJA_VERDNATURA, 4 + ) INTO vPort + FROM vn2008.Agencias a + JOIN vn2008.Consignatarios c ON c.Id_Consigna = vConsigna AND a.Id_Agencia = vAgencia + JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = vWarehouse AND ap.province_id = c.province_id + JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = vAgencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = vWarehouse; + + -- Modificacion de precio por dia de preparacion del pedido + -- No aplicada + + SET vCost = ((vRetailedPrice - vPort) / ( 1 + (vRecovery + vMana))) - vMargin; + + SELECT vCost,vRetailedPrice,vPort,vRecovery,vMana,vMargin,vCustomer; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_ticket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_ticket`(IN v_ticket BIGINT ) +proc: BEGIN + +/* +Este procedimiento trata de "rebionizar" un ticket, eliminando los componentes existentes e insertandolos de nuevo +*/ + DECLARE v_shipment DATE; + DECLARE v_customer INT; + DECLARE v_wh SMALLINT; + DECLARE v_agencia INT; + DECLARE v_consigna INT; + DECLARE v_landing DATE; + DECLARE v_ticket_free BOOLEAN; + DECLARE v_agency INT; + + CALL bionic_free(); + + SELECT (IFNULL(ts.alertLevel,0) >0 or IFNULL(Factura,"") != "") = FALSE + INTO v_ticket_free + FROM Tickets t LEFT JOIN vn.ticketState ts ON t.Id_Ticket = ts.ticket + WHERE t.Id_Ticket = v_ticket; + + /*SELECT (EtiquetasEmitidas or PedidoImpreso or Firmado or nz(Factura)) = FALSE + INTO v_ticket_free + FROM Tickets + WHERE Id_Ticket = v_ticket;*/ + + REPLACE order_Tickets(order_id, Id_Ticket) VALUES(48, v_ticket); + + SELECT Id_Cliente, t.warehouse_id, date(t.Fecha), Id_Consigna, t.Id_Agencia, landing, a.agency_id + INTO v_customer, v_wh, v_shipment, v_consigna, v_agencia, v_landing, v_agency + FROM vn2008.Tickets t LEFT JOIN vn2008.Agencias a ON t.Id_Agencia = a.Id_Agencia WHERE Id_Ticket = v_ticket; + + DROP TEMPORARY TABLE IF EXISTS travel_tree; + CREATE TEMPORARY TABLE travel_tree ENGINE = MEMORY + SELECT v_wh warehouse_id, v_shipment Fecha_envio, v_landing Fecha_recepcion; + + CALL item_last_buy_ (v_wh, v_shipment); -- rellena la tabla t_item_last_buy con la ultima compra + + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; + CREATE TEMPORARY TABLE tmp.bionic_lot + SELECT v_wh warehouse_id,NULL available, + m.Id_Article item_id,ilb.buy_id + FROM Movimientos m + LEFT JOIN t_item_last_buy ilb ON ilb.item_id = m.Id_Article + WHERE m.Id_Ticket = v_ticket GROUP BY m.Id_Article; + + CALL bionic_calc_component(v_consigna,v_agencia); + + DROP TEMPORARY TABLE IF EXISTS tmp.movement; + CREATE TEMPORARY TABLE tmp.movement + (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY + SELECT Id_Movimiento, v_wh warehouse_id + FROM Movimientos m + where m.Id_Ticket = v_ticket; + + CALL bionic_movement_update(IF(v_ticket_free,1,6)); -- si el ticket esta facturado, respeta los precios + + IF v_landing IS NULL THEN + + CALL travel_tree_shipment(v_shipment, v_consigna, v_agency,v_wh); + UPDATE Tickets t + JOIN travel_tree_shipment tts ON t.warehouse_id = tts.warehouse_id + SET t.landing = tts.landing + WHERE Id_Ticket = v_ticket; + + END IF; + -- Limpieza + -- DROP TEMPORARY TABLE t_item_last_buy; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_free` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_free`() +BEGIN + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_item; + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_price; + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component; + DROP TEMPORARY TABLE IF EXISTS tmp.travel_tree; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_item` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_item`( + v_date DATE, + v_consigna INT, + v_agencia INT, + v_item INT) +BEGIN + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_calc; + CREATE TEMPORARY TABLE tmp.bionic_calc + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT v_item item_id; + + CALL bionic_calc (v_date, v_consigna, v_agencia); + + DROP TEMPORARY TABLE tmp.bionic_calc; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_order` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_order`( + v_date DATE, -- fecha de recepcion de mercancia + v_consigna INT, + v_agencia INT, + v_order INT) +BEGIN + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_calc; + CREATE TEMPORARY TABLE tmp.bionic_calc + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT item_id FROM order_row + WHERE order_id = v_order GROUP BY item_id; + + CALL bionic_calc (v_date, v_consigna, v_agencia); + DROP TEMPORARY TABLE tmp.bionic_calc; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_ticket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_ticket`( + v_date DATE, -- fecha de recepcion de mercancia + v_consigna INT, + v_agencia INT, + v_ticket INT) +BEGIN + DECLARE int_warehouse SMALLINT; + DECLARE v_agency_id INT; + DECLARE v_shipment DATE; + + SELECT warehouse_id INTO int_warehouse FROM Tickets WHERE Id_Ticket = v_ticket; + SELECT agency_id INTO v_agency_id FROM Agencias WHERE Id_Agencia = v_agencia; + + + CALL bionic_free(); + CALL travel_tree(v_date,v_consigna, v_agency_id); + + + SELECT Fecha_envio INTO v_shipment FROM travel_tree WHERE warehouse_id = int_warehouse; + + CALL item_last_buy_ (int_warehouse, v_shipment); + + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; + CREATE TEMPORARY TABLE tmp.bionic_lot + SELECT int_warehouse warehouse_id,NULL available, + m.Id_Article item_id,ilb.buy_id + FROM Movimientos m + LEFT JOIN t_item_last_buy ilb ON ilb.item_id = m.Id_Article + WHERE m.Id_Ticket = v_ticket + AND m.Id_Article != 100 + GROUP BY warehouse_id, item_id; + + DROP TEMPORARY TABLE t_item_last_buy; + + CALL bionic_calc_component ( v_consigna, v_agencia); + + -- para recuperar el shipment en caso de que se necesite + + SET @shipment = v_shipment; + DROP TEMPORARY TABLE tmp.bionic_lot; + + IF IFNULL(v_shipment,CURDATE() - 1) < CURDATE() THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'No se puede realizar el cambio'; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_type` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_type`( + v_date DATE, -- fecha de recepcion de mercancia + v_consigna INT, + v_agencia INT, + v_type INT) +BEGIN + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_calc; + CREATE TEMPORARY TABLE tmp.bionic_calc + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT Id_Article AS item_id FROM Articles WHERE tipo_id = v_type; + + CALL bionic_calc (v_date, v_consigna, v_agencia); + + DROP TEMPORARY TABLE tmp.bionic_calc; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_make_update` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_make_update`( + i_ticket INT + ,i_agencia INT + ,i_consigna INT + ,i_warehouse INT + ,d_shipment DATE + ,d_landing DATE + ,i_option INT) +BEGIN +/** + * Ejecuta los cambios en el ticket, en los movimientos y en los componentes. + */ + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + -- Cambios en el ticket + + START TRANSACTION; + + UPDATE Tickets t + SET + t.Id_Agencia = i_agencia, + t.Id_Consigna = i_consigna, + t.warehouse_id = i_warehouse, + t.landing = d_landing, + t.Fecha = d_shipment + WHERE + t.Id_Ticket = i_ticket; + + -- La opcion 8 es No realizar modificaciones en los precios + + IF i_option <> 8 + THEN + DROP TEMPORARY TABLE IF EXISTS tmp.movement; + CREATE TEMPORARY TABLE tmp.movement + (PRIMARY KEY (Id_Movimiento)) + ENGINE = MEMORY + SELECT Id_Movimiento, i_warehouse warehouse_id + FROM Movimientos m WHERE m.Id_Ticket = i_ticket; + + CALL bionic_movement_update (i_option); + DROP TEMPORARY TABLE tmp.movement; + END IF; + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_movement_update` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_movement_update`(i_option INT) +BEGIN +/** + * A partir de la tabla tmp.movement, crea los Movimientos_componentes + * y modifica el campo Preu de la tabla Movimientos + * + * @param i_option integer tipo de actualizacion + * @param table tmp.movement tabla memory con el campo Id_Movimiento, warehouse_id + **/ + DECLARE intComponent INT; + DECLARE bolRENUEVA_COMPONENTES BOOLEAN; + DECLARE bolRESPETA_PRECIOS BOOLEAN; + + CASE i_option + + WHEN 1 THEN -- caso normal + + SET bolRENUEVA_COMPONENTES = TRUE; + SET bolRESPETA_PRECIOS = FALSE; + + WHEN 2 THEN + + SET intComponent = 17; -- greuge al client + SET bolRENUEVA_COMPONENTES = TRUE; + SET bolRESPETA_PRECIOS = TRUE; + + WHEN 3 THEN + + SET intComponent = 37; -- convertir en maná + SET bolRENUEVA_COMPONENTES = TRUE; + SET bolRESPETA_PRECIOS = TRUE; + + WHEN 4 THEN + + SET intComponent = 34; -- greuge contra la cartera del producto + SET bolRENUEVA_COMPONENTES = TRUE; + SET bolRESPETA_PRECIOS = TRUE; + + WHEN 5 THEN + + SET intComponent = 35; -- greuge contra la cartera del comprador + SET bolRENUEVA_COMPONENTES = TRUE; + SET bolRESPETA_PRECIOS = TRUE; + + WHEN 6 THEN + + SET intComponent = 36; -- descuadre para la empresa + SET bolRENUEVA_COMPONENTES = TRUE; + SET bolRESPETA_PRECIOS = TRUE; + + WHEN 7 THEN + -- Insertamos el 80% para el coste + REPLACE INTO vn2008.Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) + SELECT m.Id_Movimiento,28, round(((m.Preu * (100 - m.Descuento) /100 ) - SUM(IFNULL(mc.Valor,0))) * 0.8 ,3) + FROM Movimientos m + JOIN tmp.movement mo ON m.Id_Movimiento = mo.Id_Movimiento + LEFT JOIN Movimientos_componentes mc ON mc.Id_Movimiento = m.Id_Movimiento AND mc.Id_Componente NOT IN (28,29) + GROUP BY m.Id_Movimiento; + + -- Insertamos el 20% para el margen + REPLACE INTO vn2008.Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) + SELECT m.Id_Movimiento,29, round(((m.Preu * (100 - m.Descuento) /100 ) - SUM(IFNULL(mc.Valor,0))) * 0.2 ,3) + FROM Movimientos m + JOIN tmp.movement mo ON m.Id_Movimiento = mo.Id_Movimiento + LEFT JOIN Movimientos_componentes mc ON mc.Id_Movimiento = m.Id_Movimiento AND mc.Id_Componente NOT IN (28,29) + GROUP BY m.Id_Movimiento; + + SET bolRENUEVA_COMPONENTES = FALSE; + SET bolRESPETA_PRECIOS = FALSE; + + WHEN 8 THEN + -- Eliminamos todos los componentes exceptos los propios de la tarifa para no perderla + DELETE mc.* + FROM tmp.movement mo + JOIN Movimientos_componentes mc ON mo.Id_Movimiento = mc.Id_Movimiento; + + -- Insertamos el 100% para el coste Tipo 78 (Genérico) + REPLACE INTO vn2008.Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) + SELECT m.Id_Movimiento,28, round(((m.Preu * (100 - m.Descuento) /100 )) ,3) + FROM Movimientos m + JOIN tmp.movement mo ON m.Id_Movimiento = mo.Id_Movimiento; + + SET bolRENUEVA_COMPONENTES = FALSE; + SET bolRESPETA_PRECIOS = FALSE; + + WHEN 9 THEN -- PAK 2017-02-06 caso especial de artículos cuyo precio se pone a mano, como los portes + + SET bolRENUEVA_COMPONENTES = TRUE; + SET bolRESPETA_PRECIOS = TRUE; + + END CASE; + + IF bolRENUEVA_COMPONENTES THEN + + -- Eliminamos todos los componentes exceptos los propios de la tarifa para no perderla + DELETE mc.* + FROM tmp.movement mo + JOIN Movimientos_componentes mc ON mo.Id_Movimiento = mc.Id_Movimiento + JOIN tarifa_componentes tc ON tc.Id_Componente = mc.Id_Componente + WHERE tc.is_renewable = TRUE; + + -- Insertamos los componentes actuales + REPLACE INTO Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) + SELECT m.Id_Movimiento, bc.component_id, bc.cost + FROM Movimientos m + JOIN tmp.movement mo ON m.Id_Movimiento = mo.Id_Movimiento + JOIN tmp.bionic_component bc ON bc.item_id = m.Id_Article AND bc.warehouse_id = mo.warehouse_id + LEFT JOIN Movimientos_componentes mc ON mc.Id_Movimiento = m.Id_Movimiento AND mc.Id_Componente = bc.component_id + LEFT JOIN tarifa_componentes tc ON tc.Id_Componente = bc.component_id + WHERE IF(mc.Id_Componente IS NULL AND tc.is_renewable = FALSE,FALSE,TRUE); + + END IF; + + IF bolRESPETA_PRECIOS THEN + + REPLACE INTO vn2008.Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) + SELECT m.Id_Movimiento,intComponent, round((m.Preu * (100 - m.Descuento) /100 ) - SUM(mc.Valor) ,3) dif + FROM Movimientos m + JOIN tmp.movement mo ON m.Id_Movimiento = mo.Id_Movimiento + LEFT JOIN Movimientos_componentes mc ON mc.Id_Movimiento = m.Id_Movimiento + WHERE mc.Id_Componente <> intComponent + GROUP BY m.Id_Movimiento + HAVING dif <> 0; + + ELSE + + -- Cambios en movimientos. + UPDATE Movimientos m + JOIN Articles a on a.Id_Article = m.Id_Article + JOIN Tipos tp on tp.tipo_id = a.tipo_id + JOIN (SELECT SUM(mc.Valor) sum_valor,mc.Id_Movimiento + FROM Movimientos_componentes mc + JOIN tmp.movement m ON m.Id_Movimiento = mc.Id_Movimiento + GROUP BY mc.Id_Movimiento) mc ON mc.Id_Movimiento = m.Id_Movimiento + SET m.Preu = sum_valor + WHERE Tipo != 'Portes'; -- PAK 2017-02-06 + + -- Insertamos descuento, si lo hay + + REPLACE INTO Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) + SELECT m.Id_Movimiento, 21, m.Preu * (100 -m.Descuento) / 100 - sum(Valor) v_valor + FROM Movimientos m + JOIN tmp.movement mo ON m.Id_Movimiento = mo.Id_Movimiento + JOIN Movimientos_componentes mc ON mc.Id_Movimiento = m.Id_Movimiento + WHERE mc.Id_Componente != 21 + GROUP BY m.Id_Movimiento having round(v_valor,4) <> 0; + + END IF; + + -- Fija el Costfixat + + UPDATE Movimientos m + JOIN (SELECT SUM(mc.Valor) sum_valor,mc.Id_Movimiento + FROM Movimientos_componentes mc + JOIN tmp.movement m ON m.Id_Movimiento = mc.Id_Movimiento + join bi.tarifa_componentes tc using(Id_Componente) + join bi.tarifa_componentes_series tcs on tcs.tarifa_componentes_series_id = tc.tarifa_componentes_series_id AND tcs.base + GROUP BY mc.Id_Movimiento) mc ON mc.Id_Movimiento = m.Id_Movimiento + SET m.CostFixat = sum_valor, PrecioFijado = 1; + + + -- PAK 2017-02-06 + -- Familia PORTES, un unico componente de porte + + DELETE mc.* + FROM Movimientos_componentes mc + JOIN tmp.movement mo ON mo.Id_Movimiento = mc.Id_Movimiento + JOIN Movimientos m on m.Id_Movimiento = mc.Id_Movimiento + JOIN Articles a ON a.Id_Article = m.Id_Article + JOIN Tipos tp ON tp.tipo_id = a.tipo_id + WHERE Tipo = 'Portes'; + + INSERT INTO Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) + SELECT m.Id_Movimiento, 15, preu -- Reparto + FROM Movimientos m + JOIN tmp.movement mo ON mo.Id_Movimiento = m.Id_Movimiento + JOIN Articles a ON a.Id_Article = m.Id_Article + JOIN Tipos tp ON tp.tipo_id = a.tipo_id + WHERE Tipo = 'Portes' AND preu > 0; + + -- PAK 2017-09-27 + -- Tipos con un unico componente de coste + /* + DELETE mc.* + FROM Movimientos_componentes mc + JOIN tmp.movement mo ON mo.Id_Movimiento = mc.Id_Movimiento + JOIN Movimientos m on m.Id_Movimiento = mc.Id_Movimiento + JOIN Articles a ON a.Id_Article = m.Id_Article + JOIN Tipos tp ON tp.tipo_id = a.tipo_id + WHERE tp.hasComponents = FALSE; + + INSERT INTO Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) + SELECT m.Id_Movimiento, 28, preu -- Coste + FROM Movimientos m + JOIN tmp.movement mo ON mo.Id_Movimiento = m.Id_Movimiento + JOIN Articles a ON a.Id_Article = m.Id_Article + JOIN Tipos tp ON tp.tipo_id = a.tipo_id + WHERE tp.hasComponents = FALSE; +*/ + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_movement_update_mode` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_movement_update_mode`(IN idMOV BIGINT, IN i_MODE INT) +BEGIN + + DROP TEMPORARY TABLE IF EXISTS tmp.movement; + CREATE TEMPORARY TABLE tmp.movement + (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY + SELECT Id_Movimiento, warehouse_id + FROM Movimientos m + JOIN Tickets t using(Id_Ticket) + WHERE m.Id_Movimiento = idMOV; + + CALL bionic_movement_update(i_MODE); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_movimiento_precio_update` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_movimiento_precio_update`(IN i_mov INT) +BEGIN + +DECLARE d_compo_precio DOUBLE; +DECLARE d_mov_precio DOUBLE; + +SELECT SUM(Valor) INTO d_compo_precio +FROM bi.movimientos_componentes +WHERE Id_Movimiento = i_mov; + +SELECT Preu INTO d_mov_precio +FROM Movimientos +WHERE Id_Movimiento = i_mov; + +IF d_mov_precio <> d_compo_precio +AND d_compo_precio IS NOT NULL +AND d_mov_precio IS NOT NULL +THEN + + INSERT INTO bi.movimientos_componentes(Id_Movimiento, Id_Componente, Valor) + VALUES (i_mov, 21, d_mov_precio - d_compo_precio) + ON DUPLICATE KEY UPDATE Valor = Valor + d_mov_precio - d_compo_precio ; + +END IF; + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_tickets_range_bionizar` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_tickets_range_bionizar`(IN datSTART DATE, IN datEND DATE) +BEGIN +DECLARE done BIT DEFAULT 0; +DECLARE datEND_Midnight DATETIME DEFAULT vn2008.dayend(datEND); +DECLARE v_ticket BIGINT; +DECLARE rs CURSOR FOR +SELECT DISTINCT t.Id_Ticket +FROM +( + -- Movimientos que no coincide la suma de los componentes con el precio +select t.Id_Ticket, IFNULL(sum(Valor),0) - (Preu * (100 - m.Descuento)/100) as Diferencia, NULL as Nothing + from vn2008.Tickets t + join vn2008.Movimientos m on t.Id_Ticket = m.Id_Ticket + join vn2008.Articles a using(Id_Article) + left join vn2008.Movimientos_componentes mc using(Id_Movimiento) + join vn2008.Tipos tp on a.tipo_id = tp.tipo_id + where t.Fecha between datSTART and datEND_Midnight + and not tp.confeccion + and m.Cantidad > 0 + and tp.reino_id != 6 + group by Id_Movimiento + having ABS(Diferencia) > 1 OR (Diferencia IS NULL) + +UNION ALL + -- Movimientos sin componente de coste + SELECT t.Id_Ticket, NULL, NULL + FROM Tickets t + LEFT JOIN + ( + SELECT DISTINCT t.Id_Ticket, 0 + FROM Tickets t + JOIN Movimientos m on m.Id_Ticket = t.Id_Ticket + JOIN Articles a on a.Id_Article = m.Id_Article + JOIN Tipos tp on a.tipo_id = tp.tipo_id + JOIN Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento + JOIN tarifa_componentes tc on tc.Id_Componente = mc.Id_Componente + WHERE (tarifa_componentes_series_id = 1 OR tp.reino_id = 6) + AND t.Fecha between datSTART and datEND_Midnight + ) sub on sub.Id_Ticket = t.Id_Ticket + WHERE sub.Id_Ticket IS NULL + AND t.Fecha between datSTART and datEND_Midnight + +UNION ALL + -- Movimientos sin porte en tickets con agencia que SI que deberia de llevar + SELECT m.Id_Ticket, count(Id_Movimiento) as Lineas_totales, Lineas_conPorte + FROM Movimientos m + JOIN Articles a on a.Id_Article = m.Id_Article + JOIN Tipos tp on tp.tipo_id = a.tipo_id + JOIN Tickets t on m.Id_Ticket = t.Id_Ticket + JOIN v_expeditions_shipping_charge v on v.Id_ticket = t.Id_Ticket + LEFT JOIN + ( + SELECT m.Id_Ticket, count(Id_Componente) Lineas_conPorte + FROM Movimientos_componentes mc + JOIN Movimientos m using(Id_Movimiento) + JOIN Tickets t using(Id_Ticket) + WHERE Id_Componente = 15 + AND Fecha between datSTART and datEND_Midnight + GROUP BY m.Id_Ticket + ) sub on sub.Id_Ticket = t.Id_Ticket + WHERE t.Fecha between datSTART and datEND_Midnight + AND Preu != 0 + AND tp.reino_id != 6 + AND shipping_charge > 1 + GROUP BY m.Id_Ticket + HAVING Lineas_totales > IFNULL(Lineas_conPorte,0) + + + +) sub +JOIN Tickets t ON t.Id_Ticket = sub.Id_Ticket +JOIN warehouse w ON w.id = t.warehouse_id +WHERE w.inventario; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + + + + +OPEN rs; + +FETCH rs INTO v_ticket ; + +WHILE NOT done DO + + CALL bionic_calc_ticket(v_ticket); + + call Ditacio(v_ticket + ,'Bioniza Ticket' + ,'T' + , 20 + , 'proc bionic_tickets_range_bionizar' + , NULL); + + FETCH rs INTO v_ticket ; + +END WHILE; + + +CLOSE rs; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bonus_comparados` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bonus_comparados`() +BEGIN + +SELECT CodigoTrabajador as Comercial + , T.Fecha + , bs.Id_Ticket + , T.Alias + , bs.Id_Article + , A.Article + , A.Medida + ,A.Categoria + , O.Abreviatura + , bs.amount + , bs.bonus + , amount * bonus * IF(bonus_buenos.bonus_sales_id IS NULL,0,1) as saldo +FROM bonus_sales bs +JOIN Articles A USING(Id_Article) +JOIN Trabajadores USING(Id_Trabajador) +JOIN Tickets T USING(Id_Ticket) +JOIN Clientes C USING(Id_Cliente) +JOIN Origen O ON O.id = A.id_origen +JOIN Permisos P ON bs.Id_Trabajador = P.Id_Trabajador +LEFT JOIN ( + select b.bonus_sales_id + from bonus_sales b + left join Movimientos M using(Id_Ticket, Id_Article) + join Tickets T on T.Id_Ticket = b.Id_Ticket + where Fecha >= '2012-12-01' + and Cantidad > amount / 2 + ) bonus_buenos USING(bonus_sales_id) + +WHERE T.Fecha > '2012-12-01' AND invoice AND Id_Grupo = 6; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_label` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `buy_label`(IN entry_id_ INT, IN groupby TINYINT(1)) +BEGIN + + DECLARE done INT DEFAULT 0; + DECLARE label INT; + DECLARE id INT; + DECLARE recordset CURSOR FOR SELECT Compres.Etiquetas, Compres.Id_Compra FROM Compres INNER JOIN + (SELECT e.Id_entrada FROM Entradas e INNER JOIN ( + SELECT Id_Entrada,Inventario,Id_proveedor,travel_id,Id_Agencia FROM Entradas e1 INNER JOIN travel t ON e1.travel_id = t.id WHERE Id_Entrada = entry_id_) y + ON y.Inventario = e.Inventario AND e.travel_id = y.travel_id AND e.Id_proveedor = y.Id_proveedor AND y.Id_Agencia = e.Id_Agencia + WHERE (0 OR e.Id_Entrada = entry_id_)) entry_label + ON Compres.Id_Entrada = entry_label.Id_entrada + INNER JOIN Articles ON Compres.Id_Article = Articles.Id_Article WHERE Articles.Imprimir <> FALSE; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + + DROP TEMPORARY TABLE IF EXISTS `buy_label_source`; + + CREATE TEMPORARY TABLE `buy_label_source` + ( + `buy_id` INT(11) NOT NULL + ) + + ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + OPEN recordset; + + REPEAT + + FETCH recordset INTO label, id; + WHILE label > 0 DO + + SET label = label - 1; + INSERT INTO buy_label_source (buy_id) VALUES (id); + + END WHILE; + + UNTIL done END REPEAT; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_label_bunch` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `buy_label_bunch`(IN entry_id_ INT, IN groupby TINYINT(1),IN single TINYINT(1), IN idCOM BIGINT) +BEGIN + DECLARE done INT DEFAULT 0; + DECLARE date_ DATE; + DECLARE provider_id INT; + DECLARE agency_id INT; + DECLARE i_wh INT; + DECLARE label INT; + DECLARE id INT; + DECLARE recordset CURSOR FOR + SELECT ROUND(C.Cantidad / IF(C.caja = FALSE, 1,C.Grouping) + 0.49), C.Id_Compra + FROM Compres C + INNER JOIN entry_label ON C.Id_Entrada = entry_label.entry_id + INNER JOIN Articles A ON C.Id_Article = A.Id_Article + WHERE (A.Imprimir <> FALSE AND idCOM = 0 AND C.Novincular = FALSE) + OR idCOM = C.Id_Compra; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + SET idCOM = IFNULL(idCOM, 0); + + DROP TEMPORARY TABLE IF EXISTS `entry_label`; + CREATE TEMPORARY TABLE `entry_label` + ( + `entry_id` INT(11) NOT NULL + ) + ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + + IF groupby <> FALSE THEN + + SELECT Id_Proveedor, DATE(landing), travel.agency_id, warehouse_id INTO provider_id, date_, agency_id, i_wh + FROM Entradas + INNER JOIN travel ON travel.id = Entradas.travel_id + + WHERE Id_Entrada = entry_id_; + + INSERT INTO entry_label (entry_id) SELECT Entradas.Id_Entrada FROM Entradas + + INNER JOIN travel ON travel.id = Entradas.travel_id + + WHERE Entradas.Inventario = FALSE AND Entradas.Id_Proveedor = provider_id + + AND warehouse_id = i_wh AND DATE(landing) = date_ AND travel.agency_id= agency_id; + + ELSE + + INSERT INTO entry_label (entry_id) VALUES (entry_id_); + SELECT landing INTO date_ FROM Entradas e + JOIN travel t ON t.id = e.travel_id + JOIN Compres c ON c.Id_Entrada = e.Id_Entrada + WHERE (entry_id_ = e.Id_Entrada OR c.Id_Compra = idCOM) LIMIT 1; + + END IF; + + + DROP TEMPORARY TABLE IF EXISTS `buy_label_source`; + + CREATE TEMPORARY TABLE `buy_label_source` + ( + `buy_id` INT(11) NOT NULL + ) + ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + + OPEN recordset; + FETCH recordset INTO label, id; + REPEAT + REPEAT + + SET label = label - 1; + INSERT INTO buy_label_source (buy_id) VALUES (id); + UNTIL label <= 0 OR single END REPEAT; + + INSERT INTO buy_label_source (buy_id) VALUES (0); + FETCH recordset INTO label, id; + UNTIL done END REPEAT; + + SELECT C.Id_Article,@a := IF(A.min AND IFNULL(rate_3,C.Tarifa3) < A.PVP, A.PVP, IFNULL(rate_3,C.Tarifa3)) Tarifa2, + ROUND(IF(C.caja = FALSE, @a,@a * C.Grouping),2) AS Bunch, + ROUND(@a / A.Tallos,2) AS PPT, + A.Article, A.Medida, A.Color, A.Categoria, Abreviatura as Origen, C.Productor, + A.Tallos, C.grouping, E.Notas_Eva,P.Proveedor,C.Packing + FROM buy_label_source bls + LEFT JOIN Compres C ON C.Id_Compra = bls.buy_id + LEFT JOIN Entradas E ON E.Id_Entrada = C.Id_Entrada + LEFT JOIN Articles A ON A.Id_Article = C.Id_Article + LEFT JOIN Proveedores P ON P.Id_Proveedor = E.Id_Proveedor + LEFT JOIN Origen o ON A.id_origen = o.id + LEFT JOIN ( + SELECT item_id, rate_3 FROM price_fixed + WHERE IFNULL(date_,CURDATE()) BETWEEN date_start AND date_end AND rate_3 + AND warehouse_id IN (0,i_wh) + GROUP BY item_id + ) pf ON pf.item_id = A.Id_Article; + -- JGF 02/02/15 canvie CURDATE() per IFNULL(date_,CURDATE()) + + DROP TEMPORARY TABLE `entry_label`; + DROP TEMPORARY TABLE `buy_label_source`; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_scan` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `buy_scan`(v_barcode VARCHAR(255), v_labels INT) +BEGIN +/** + * Marca una compra de subasta como escaneada. + * + * @param v_barcode Código de compra de una etiqueta de subasta + * @param v_labels Cantidad escaneada + **/ + DECLARE v_edi INT; + DECLARE v_buy INT; + DECLARE v_item INT; + DECLARE v_do_photo BOOL; + + -- Aun no se sabe como obtener el número de serie de transacción de + -- las compras realizadas a través de un reloj, por lo que se establece + -- siempre a '01' + + IF SUBSTR(v_barcode, 3, 2) != '99' THEN + SET v_barcode = CONCAT(LEFT(v_barcode, 12), '010'); + END IF; + + SELECT e.id, c.Id_Compra, c.Id_Article, a.do_photo + INTO v_edi, v_buy, v_item, v_do_photo + FROM buy_edi e + JOIN Compres c ON c.buy_edi_id = e.id + JOIN Articles a ON a.Id_Article = c.Id_Article + WHERE e.barcode = v_barcode + AND e.entry_year = YEAR(CURDATE()) + ORDER BY c.Id_Compra + LIMIT 1; + + UPDATE buy_edi SET scanned = TRUE WHERE id = v_edi; + + UPDATE Compres + SET Vida = Vida + IF(v_labels != -1, v_labels, Etiquetas) + WHERE Id_Compra = v_buy; + + IF v_do_photo THEN + UPDATE Articles SET do_photo = FALSE WHERE Id_Article = v_item; + END IF; + + SELECT v_buy buy, v_do_photo do_photo; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_split` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `buy_split`(v_buy INT, v_fv_entry INT, v_pca_entry INT) +BEGIN + DECLARE v_item INT; + DECLARE v_packing INT; + DECLARE v_remaining INT; + DECLARE v_labels INT; + DECLARE v_remainder INT; + DECLARE v_is_buy INT; + DECLARE v_id INT; + DECLARE v_amount INT; + DECLARE v_done BOOL DEFAULT FALSE; + + DECLARE cur CURSOR FOR + SELECT TRUE, c.Id_Compra, c.Cantidad - IFNULL((c.Vida * c.Packing), 0) + FROM Compres c + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel t ON t.id = e.travel_id + WHERE c.Id_Article = v_item + AND t.shipment = CURDATE() AND t.warehouse_id_out IN (7, 40) + AND t.warehouse_id NOT IN (44, 1) + AND NOT e.redada AND NOT e.Inventario + AND IFNULL(c.Vida, 0) < c.Etiquetas + LOCK IN SHARE MODE + UNION ALL + SELECT FALSE, m.Id_Movimiento, m.Cantidad - IFNULL(l.stem, 0) + FROM Movimientos m + JOIN Tickets t ON t.Id_Ticket = m.Id_Ticket + LEFT JOIN movement_label l ON l.Id_Movimiento = m.Id_Movimiento + WHERE m.Id_Article = v_item + AND t.Fecha = CURDATE() AND t.warehouse_id IN (7, 40) + AND NOT t.Etiquetasemitidas + AND IFNULL(l.stem, 0) < m.Cantidad + LOCK IN SHARE MODE; + + DECLARE CONTINUE HANDLER FOR NOT FOUND + SET v_done = TRUE; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + START TRANSACTION; + + -- Obtiene los datos de la compra + + SELECT Id_Article, Packing, Cantidad + INTO v_item, v_packing, v_remaining + FROM Compres WHERE Id_Compra = v_buy; + + -- Crea splits de los tickets + + DROP TEMPORARY TABLE IF EXISTS tmp.split; + CREATE TEMPORARY TABLE tmp.split + ( + is_buy BOOL, + id INT, + labels INT, + remainder INT + ) + ENGINE = MEMORY; + + OPEN cur; + + l: LOOP + SET v_done = FALSE; + FETCH cur INTO v_is_buy, v_id, v_amount; + + IF v_done OR v_remaining = 0 THEN + LEAVE l; + END IF; + + SET v_amount = LEAST(v_amount, v_remaining); + SET v_remaining = v_remaining - v_amount; + SET v_labels = v_amount DIV v_packing; + + INSERT INTO tmp.split + VALUES (v_is_buy, v_id, v_labels, v_amount % v_packing); + + IF v_is_buy + THEN + UPDATE Compres + SET Vida = Vida + v_labels + WHERE Id_Compra = v_id; + ELSE + INSERT INTO movement_label + SET + Id_Movimiento = v_id, + stem = v_amount, + label = v_labels + ON DUPLICATE KEY UPDATE + stem = stem + VALUES(stem), + label = label + VALUES(label); + END IF; + END LOOP; + + CLOSE cur; + + -- Crea los movimientos de almacén a silla + + CALL buy_transfer (v_buy, v_fv_entry, v_pca_entry); + + UPDATE Compres SET dispatched = Vida * Packing + WHERE Id_Compra = v_buy; + + -- Devuelve los splits creados + + DROP TEMPORARY TABLE IF EXISTS tmp.aux; + CREATE TEMPORARY TABLE tmp.aux + ENGINE = MEMORY + SELECT s.labels, s.remainder, w.`name` destination, + a.Id_Article, a.Article, a.Medida + FROM tmp.split s + JOIN Compres c ON c.Id_Compra = s.id + JOIN Articles a ON a.Id_Article = c.Id_Article + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel t ON t.id = e.travel_id + JOIN warehouse w ON t.warehouse_id = w.id + WHERE s.is_buy; + + INSERT INTO tmp.aux + SELECT s.labels, s.remainder, o.Consignatario, + a.Id_Article, a.Article, a.Medida + FROM tmp.split s + JOIN Movimientos m ON m.Id_Movimiento = s.id + JOIN Articles a ON a.Id_Article = m.Id_Article + JOIN Tickets t ON t.Id_Ticket = m.Id_Ticket + JOIN Consignatarios o ON o.Id_Consigna = t.Id_Consigna + WHERE NOT s.is_buy; + + SELECT * FROM tmp.aux; + + -- Limpia y confirma cambios + + DROP TEMPORARY TABLE + tmp.split, + tmp.aux; + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_tarifas` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_tarifas`(v_buy INT) +BEGIN + DECLARE v_entry INT; + DECLARE v_wh INT; + + SELECT Id_Entrada, warehouse_id + INTO v_entry, v_wh + FROM Compres + JOIN Entradas USING(Id_Entrada) + JOIN travel ON travel.id = travel_id + WHERE v_buy = Id_Compra; + + CALL buy_tarifas_table (v_entry); + + UPDATE Compres C + LEFT JOIN Cubos CB USING(Id_Cubo) + JOIN Articles A USING(Id_Article) + JOIN Tipos TP USING(tipo_id) + JOIN Entradas E USING(Id_Entrada) + JOIN travel TR ON TR.id = E.travel_id + JOIN Agencias AG ON TR.agency_id = AG.Id_Agencia + LEFT JOIN recibida_entrada re ON E.Id_Entrada = re.Id_Entrada + LEFT JOIN awb_recibida ar ON re.awb_recibida = ar.recibida_id + LEFT JOIN v_awb_volumen va ON va.awb_id = ar.awb_id + JOIN tblTARIFAS TC + SET C.Portefijo = @PF:= + IF (va.importe, + ROUND((va.importe * TP.density * CM3_2(C.Id_Cubo, C.Id_Article) / 1000) / (va.Vol_Total * 167 * C.Packing ),3), + ROUND(IFNULL(((AG.m3 * cm3_2(C.Id_Cubo, C.Id_Article)) / 1000000) / C.Packing,0),3) + ), + C.Comisionfija = @CF:= ROUND(IFNULL(E.comision * C.Costefijo / 100,0),3), + C.Embalajefijo = @EF:= IF(CB.Retornable != 0, 0, ROUND(IFNULL( CB.Valor / C.Packing ,0),3)), + C.Tarifa3 = @t3:= IF(TC.t3 = 0, C.Costefijo,ROUND((C.Costefijo + @CF + @EF + @PF) / ((100 - TC.t3 - TP.promo ) /100) ,2)), -- He añadido que el coste sea igual a tarifa3 si t3 = 0 + C.Tarifa2 = @t2:= ROUND(@t3 * (1 + ( (TC.t2 - TC.t3)/100) ),2), + C.Tarifa2 = IF(@t2 <= @t3, @t3 , @t2) + WHERE C.Id_Compra = v_buy; + + IF v_wh = 42 -- Canarias + THEN + UPDATE Compres + SET Tarifa2 = Tarifa3 + WHERE Id_Compra = v_buy; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_tarifas_awb` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_tarifas_awb`(IN strAWB varchar(18)) +BEGIN + +DECLARE datINV DATE; +DECLARE wh_id INT; +DECLARE idENTRADA INT; + +SELECT warehouse_id, E.Id_Entrada INTO wh_id, idENTRADA +FROM Entradas E +JOIN travel ON travel.id = travel_id +JOIN recibida_entrada re on E.Id_Entrada = re.Id_Entrada +JOIN awb_recibida ar ON re.awb_recibida = ar.recibida_id +JOIN awb ON awb.id = ar.awb_id +WHERE awb.codigo = strAWB +LIMIT 1; + + + CALL buy_tarifas_table(idENTRADA); + + UPDATE Compres C + LEFT JOIN Cubos CB USING(Id_Cubo) + JOIN Articles A USING(Id_Article) + JOIN Entradas E USING(Id_Entrada) + JOIN recibida_entrada re on E.Id_Entrada = re.Id_Entrada + JOIN awb_recibida ar ON re.awb_recibida = ar.recibida_id + JOIN v_awb_volumen va ON va.awb_id = ar.awb_id + JOIN Tipos TP USING(tipo_id) + JOIN travel TR ON TR.id = E.travel_id + JOIN Agencias AG ON TR.agency_id = AG.Id_Agencia + JOIN tblTARIFAS TC + + SET C.Portefijo = @PF:= round((va.importe * TP.density * CM3_2(C.Id_Cubo, C.Id_Article) / 1000) / (va.Vol_Total * 167 * C.Packing ),3), + + C.Comisionfija = @CF:= ROUND(IFNULL(E.comision * C.Costefijo / 100,0),3), + + C.Embalajefijo = @EF:= IF(CB.Retornable != 0, 0, ROUND(IFNULL( CB.Valor / C.Packing ,0),3)), + + C.Tarifa3 = @t3:= IF(TC.t3 = 0, C.Costefijo,ROUND((C.Costefijo + @CF + @EF + @PF) / ((100 - TC.t3 - TP.promo ) /100) ,2)), -- He añadido que el coste sea igual a tarifa3 si t3 = 0 + + C.Tarifa2 = @t2:= round(@t3 * (1 + ( (TC.t2 - TC.t3)/100) ),2), + + C.Tarifa2 = @t2:= IF(@t2 <= @t3, @t3 , @t2) + + + WHERE va.codigo = strAWB ; + + +CASE wh_id + + WHEN 41 THEN -- Canarias + + UPDATE Compres + SET Tarifa2 = Tarifa3 + WHERE Id_Entrada = idENTRADA; + + + ELSE + + BEGIN + END; + +END CASE; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_tarifas_awb_bucle` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_tarifas_awb_bucle`() +BEGIN + +DECLARE strAWB VARCHAR(25); +DECLARE done INT DEFAULT FALSE; +DECLARE rs CURSOR FOR +SELECT codigo +FROM awb +WHERE MYSQL_TIME > '2015-06-30' AND importe > 0 ; +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + +OPEN rs; + +FETCH rs INTO strAWB; +-- drop temporary table if exists killme; +-- create temporary table killme select strAWB, now() as fecha, 0; + +WHILE NOT done DO + + insert into killme select strAWB, MYSQL_TIME, importe from awb where codigo = strAWB; + call buy_tarifas_awb(strAWB); + FETCH rs INTO strAWB; + select * from killme order by fecha desc; +END WHILE; + + + +drop temporary table killme; + + +CLOSE rs; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_tarifas_entry` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_tarifas_entry`(IN idENTRADA INT(11)) +BEGIN + + DECLARE datINV DATE; + DECLARE wh_id INT; + DECLARE m3i INTEGER; + + + SELECT warehouse_id INTO wh_id + FROM Entradas + JOIN travel ON travel.id = travel_id + WHERE Id_Entrada = idENTRADA; + + CALL buy_tarifas_table(idENTRADA); + + SELECT AG.m3 * sum( etiquetas * IFNULL(((AG.m3 * cm3_2(C.Id_Cubo, C.Id_Article)) / 1000000) ,0) ) / + sum(etiquetas * IFNULL(((AG.m3 * ( TP.density / 167 ) * cm3_2(C.Id_Cubo, C.Id_Article)) / 1000000) ,0)) INTO m3i + FROM Compres C + JOIN Articles A USING(Id_Article) + JOIN Entradas E USING(Id_Entrada) + JOIN Tipos TP USING(tipo_id) + JOIN travel TR ON TR.id = E.travel_id + JOIN Agencias AG ON TR.agency_id = AG.Id_Agencia + WHERE E.Id_Entrada = idENTRADA; + + + + UPDATE Compres C + LEFT JOIN Cubos CB USING(Id_Cubo) + JOIN Articles A USING(Id_Article) + JOIN Entradas E USING(Id_Entrada) + LEFT JOIN recibida_entrada re on E.Id_Entrada = re.Id_Entrada + LEFT JOIN awb_recibida ar ON re.awb_recibida = ar.recibida_id + LEFT JOIN v_awb_volumen va ON va.awb_id = ar.awb_id + JOIN Tipos TP USING(tipo_id) + JOIN travel TR ON TR.id = E.travel_id + JOIN Agencias AG ON TR.agency_id = AG.Id_Agencia + JOIN tblTARIFAS TC + + SET C.Portefijo = @PF:= + IF (va.importe, + + round((va.importe * TP.density * CM3_2(C.Id_Cubo, C.Id_Article) / 1000) / (va.Vol_Total * 167 * C.Packing ),3), + + ROUND(IFNULL(((AG.m3 * @cm3:= cm3_2(C.Id_Cubo, C.Id_Article)) / 1000000) / C.Packing,0),3) + ), + + -- jgf 2015-08-14 canvie este procediment per a que coincidisca en el buy_tarifas + -- ROUND(IFNULL(((m3i * @cm3:= ( TP.density / 167 ) * cm3_2(C.Id_Cubo, C.Id_Article)) / 1000000) / C.Packing,0),3), + + C.Comisionfija = @CF:= ROUND(IFNULL(E.comision * C.Costefijo / 100,0),3), + + C.Embalajefijo = @EF:= IF(CB.Retornable != 0, 0, ROUND(IFNULL( CB.Valor / C.Packing ,0),3)), + + C.Tarifa3 = @t3:= IF(TC.t3 = 0, C.Costefijo,ROUND((C.Costefijo + @CF + @EF + @PF) / ((100 - TC.t3 - TP.promo ) /100) ,2)), -- He añadido que el coste sea igual a tarifa3 si t3 = 0 + + C.Tarifa2 = @t2:= round(@t3 * (1 + ( (TC.t2 - TC.t3)/100)),2), + + C.Tarifa2 = @t2:= IF(@t2 <= @t3, @t3 , @t2) + + WHERE C.Id_Entrada = idENTRADA ; + + + CASE wh_id + + WHEN 41 THEN -- Canarias + + UPDATE Compres + SET Tarifa2 = Tarifa3 + WHERE Id_Entrada = idENTRADA; + ELSE + + BEGIN + END; + + END CASE; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_tarifas_lot` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `buy_tarifas_lot`(IN idCOMPRA INT(11)) +BEGIN + +DECLARE intWHIN INTEGER(3); +DECLARE intDAYS INTEGER(3); +DECLARE dbM3 DOUBLE; +DECLARE done INT DEFAULT 0; +DECLARE datFEC DATE; +DECLARE wh INTEGER(3); +DECLARE idART INTEGER(11); +DECLARE dbCOST DOUBLE; +DECLARE m3value DOUBLE; +DECLARE intLIFE INTEGER; +DECLARE intPACK INTEGER; +DECLARE intPromo DOUBLE; +DECLARE whlc CURSOR FOR SELECT whin, days, m3 FROM warehouse_lc WHERE whout = @wh:= wh UNION ALL SELECT @wh, 0, 0 ; +DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; + +SELECT + Id_Article, + warehouse_id, + landing, + nz(Costefijo) + nz(Embalajefijo) + nz(Portefijo) + nz(Comisionfija), + life, + C.Packing, + (cm3_2(C.Id_Cubo, C.Id_Article) / 1000000) / C.Packing, + promo +INTO idART , wh , datFEC , dbCOST , intLIFE, intPACK, m3value, intPromo FROM + Compres C + JOIN + Articles A USING (Id_Article) + JOIN + Tipos TP USING (tipo_id) + JOIN + Entradas E USING (Id_Entrada) + JOIN + travel tr ON tr.id = E.travel_id +WHERE + Id_Compra = idCOMPRA; + + + +OPEN whlc; + +FETCH whlc INTO intWHIN, intDAYS, dbM3; + +WHILE NOT done DO + +SELECT idART , wh , datFEC , dbCOST , intLIFE, intPACK, m3value, intWHIN, intDAYS, dbM3, done, dbCOST + (m3value * dbM3); + + INSERT INTO price_fixed(item_id, + rate_3, + rate_2, + date_start, + date_end, + warehouse_id) + + SELECT idART, + round( (dbCOST + (m3value * dbM3)) / ((100 - t3 - intPromo )/100) , 2), + @tf2 := round((dbCOST + (m3value * dbM3)) / ((100 - t2 - intPromo)/100) ,2), + TIMESTAMPADD(DAY, intDAYS, datFEC), + TIMESTAMPADD(DAY, intLIFE, datFEC), + intWHIN + FROM tarifas + WHERE warehouse_id = intWHIN AND fecha <= TIMESTAMPADD(DAY, intDAYS, datFEC) + ORDER BY fecha DESC + LIMIT 1; + +FETCH whlc INTO intWHIN, intDAYS, dbM3; + + END WHILE; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_tarifas_recalcular_almacen` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `buy_tarifas_recalcular_almacen`(IN wh_id INT, IN datFEC DATE) +BEGIN + +DECLARE done INT DEFAULT 0; +DECLARE idE INT; + +DECLARE cur1 CURSOR FOR +SELECT Id_Entrada +FROM Entradas +JOIN travel ON travel.id = travel_id +WHERE landing >= datFEC AND wh_id IN (0,warehouse_id); + +DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; + +OPEN cur1; + +REPEAT + + FETCH cur1 INTO idE; + + IF NOT done THEN + + Call buy_tarifas_entry(idE); + + + + END IF; + + +UNTIL done END REPEAT; + + CLOSE cur1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_tarifas_T3` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_tarifas_T3`(IN idCOMPRA INT(11)) +BEGIN + + DECLARE idENTRADA BIGINT; + DECLARE wh_id INT; + + SELECT Id_Entrada, warehouse_id INTO idENTRADA, wh_id + FROM Compres + JOIN Entradas using(Id_Entrada) + JOIN travel ON travel.id = travel_id + WHERE idCOMPRA = Id_Compra; + + CALL buy_tarifas_table(idENTRADA); + + UPDATE Compres C + JOIN tblTARIFAS TC + + SET + C.Tarifa3 = @t3:= C.Tarifa3, + + C.Tarifa2 = @t2:= round(@t3 * (1 + ( (TC.t2 - TC.t3)/100) ),2), + + C.Tarifa2 = @t2:= IF(@t2 <= @t3, @t3 + 0.01, @t2) + + WHERE C.Id_Compra = idCOMPRA; + + IF wh_id = 41 THEN -- Canarias + + UPDATE Compres + SET Tarifa2 = Tarifa3 + WHERE Id_Compra = idCOMPRA; + + END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_tarifas_T3_pf` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_tarifas_T3_pf`(IN idPRICE INT, IN t3 DOUBLE) +BEGIN + +DECLARE idENTRADA BIGINT; +DECLARE idCOMPRA BIGINT; +DECLARE datFEC DATE; +DECLARE wh INT; +DECLARE idART BIGINT; + +SELECT date_start, warehouse_id, item_id INTO datFEC, wh, idART +FROM price_fixed WHERE price_fixed_id = idPRICE; + +SELECT C.Id_Entrada, Id_Compra INTO idENTRADA, idCOMPRA +FROM Compres C +JOIN Entradas E using(Id_Entrada) +JOIN travel TR on TR.id = E.travel_id +WHERE Id_Article = idART +AND wh IN (0, warehouse_id) +AND Novincular = FALSE +AND NOT Redada +AND landing <= datFEC +ORDER BY landing DESC +LIMIT 1; + +CALL buy_tarifas_table(idENTRADA); + +SELECT + + @t2:= round(t3 * (1 + ( (TC.t2 - TC.t3)/100) ),2) as rate_2b, + + @t2:= IF(@t2 <= t3, t3 + 0.01, @t2) as rate_2 + +FROM price_fixed PF + JOIN Compres C ON C.Id_Compra = idCOMPRA AND price_fixed_id = idPRICE + JOIN tblTARIFAS TC; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_tarifas_table` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `buy_tarifas_table`(v_entry INT) +BEGIN + DECLARE v_date DATE; + DECLARE v_wh INT; + + -- Obtiene fecha de llegada y almacén entrante + + SELECT landing, warehouse_id INTO v_date , v_wh + FROM travel TR + JOIN Entradas E ON TR.id = E.travel_id + WHERE Id_Entrada = v_entry; + + -- Prepara una tabla con las tarifas aplicables en funcion de la fecha y el almacén + + DROP TEMPORARY TABLE IF EXISTS tblTARIFAS; + CREATE TEMPORARY TABLE tblTARIFAS + ENGINE = MEMORY + SELECT * FROM + ( + SELECT * FROM + ( + SELECT t0, t1, t2, t3 + FROM tarifas + WHERE fecha <= v_date + AND warehouse_id = v_wh + ORDER BY fecha DESC + + ) sub + UNION ALL + SELECT t0, t1, t2, t3 + FROM tblContadores + ) sub2 + LIMIT 1; + + -- pak 22/09/2015 + + UPDATE bi.rotacion r + JOIN Compres c ON c.Id_Article = r.Id_Article + SET cm3 = vn2008.cm3_unidad(c.Id_Compra) + WHERE Id_Entrada = v_entry + AND r.warehouse_id = v_wh; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_transfer` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `buy_transfer`(v_buy INT, v_fv_entry INT, v_pca_entry INT) +proc: BEGIN +/** + * Traslada la cantidad restante de una compra de Holanda + * al almacén de Silla. + **/ + DECLARE v_wh INT; + DECLARE v_entry INT; + DECLARE v_fv INT; + DECLARE v_amount INT; + DECLARE v_item INT; + DECLARE v_holland_wh INT DEFAULT 7; + + -- Comprueba que es mercancía que llega al almacén de Holanda + + SELECT t.warehouse_id, tp.FV INTO v_wh, v_fv + FROM Compres c + JOIN Entradas e ON c.Id_Entrada = e.Id_Entrada + JOIN travel t ON t.id = e.travel_id + JOIN Articles a ON a.Id_Article = c.Id_Article + JOIN Tipos tp ON tp.tipo_id = a.tipo_id + WHERE c.Id_Compra = v_buy; + + IF v_wh != v_holland_wh THEN + LEAVE proc; + END IF; + + -- Calcula a que almacén de Silla debe transladar la mercancía + + SET v_entry = IF(v_fv, v_fv_entry, v_pca_entry); + SET v_entry = IFNULL(v_entry, IFNULL(v_pca_entry, v_fv_entry)); + + IF v_entry IS NULL THEN + LEAVE proc; + END IF; + + -- Calcula la cantidad a trasladar + + SELECT Id_Article INTO v_item + FROM Compres WHERE Id_Compra = v_buy; + + SELECT IFNULL(SUM(amount), 0) INTO v_amount + FROM ( + SELECT SUM(c.Cantidad) amount + FROM Compres c + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel t ON t.id = e.travel_id + WHERE c.Id_Article = v_item + AND t.landing = CURDATE() + AND t.warehouse_id = v_holland_wh + UNION ALL + SELECT -SUM(c.Cantidad) + FROM Compres c + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel t ON t.id = e.travel_id + WHERE c.Id_Article = v_item + AND t.shipment = CURDATE() + AND t.warehouse_id_out = v_holland_wh + UNION ALL + SELECT -SUM(Cantidad) + FROM Movimientos m + JOIN Tickets t ON t.Id_Ticket = m.Id_Ticket + WHERE m.Id_Article = v_item + AND t.Fecha = CURDATE() + AND t.warehouse_id = v_holland_wh + ) t; + + IF v_amount <= 0 THEN + LEAVE proc; + END IF; + + -- Crea la nueva línea de compra con el translado + + INSERT INTO Compres ( + Id_Article, Etiquetas, Cantidad, Id_Entrada, + Id_Cubo, Packing, grouping, caja, Costefijo, Portefijo, + Embalajefijo, Comisionfija, novincular, buy_edi_id) + SELECT + c.Id_Article, + v_amount DIV c.Packing, + v_amount, + v_entry, + c.Id_Cubo, + c.Packing, + c.grouping, + c.caja, + @cost := IFNULL(c.Costefijo, 0) + IFNULL(c.Comisionfija, 0) + IFNULL(c.Portefijo, 0), + @porte := ROUND((@cm3:= cm3_2(c.Id_Cubo, c.Id_Article)) * a.m3 / 1000000 / c.Packing, 3), + c.EmbalajeFijo, + @comision := ROUND(c.Costefijo * e.comision / 100, 3), + c.novincular, + c.buy_edi_id + FROM Compres c + JOIN Cubos cu ON cu.Id_Cubo = c.Id_Cubo + JOIN Entradas e ON e.Id_Entrada = v_entry + JOIN travel t ON t.id = e.travel_id + JOIN Agencias a ON t.agency_id = a.Id_Agencia + WHERE c.Id_Compra = v_buy; + + CALL buy_tarifas (LAST_INSERT_ID()); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Cajas_Saldo_Detalle` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Cajas_Saldo_Detalle`() +BEGIN + + Select Proveedores.Id_Proveedor, Proveedor, Fecha, round(Importe) as Importe + from Proveedores + join + ( + select Fecha, sub.Id_Proveedor, sum(Importe) as Importe + from + + ( + + select round(sum(Importe),2) as Importe, TIMESTAMPADD(DAY,-1,CURDATE()) as Fecha, Id_Proveedor + from pago + join Proveedores using(Id_Proveedor) + where Fecha >= '2011-01-01' + and Id_Proveedor NOT IN (select id from empresa) + group by Id_Proveedor + + union all + + select IFNULL(-1 * round(sum(rv.Cantidad / if(Id_Moneda = 2,rate,1)),2),0) AS Vto, TIMESTAMPADD(DAY,-1,CURDATE()), proveedor_id + from recibida_vencimiento rv + join recibida r on r.id = rv.recibida_id + join reference_rate rr on rr.`date` = rv.fecha + join Proveedores P on P.Id_Proveedor = r.proveedor_id + join Paises PS on PS.Id = P.pais_id + where rv.fecha between '2011-01-01' and CURDATE()-1 + and Id_Proveedor NOT IN (select id from empresa) + group by proveedor_id + + union all + + select -1 * round(rv.Cantidad / if(Id_Moneda = 2,currate(),1),2) AS Vto, rv.fecha, proveedor_id + from recibida_vencimiento rv + join recibida r on r.id = rv.recibida_id + join Proveedores P on P.Id_Proveedor = r.proveedor_id + join Paises PS on PS.Id = P.pais_id + where rv.fecha >= CURDATE() + and Id_Proveedor NOT IN (select id from empresa) + + union all + + select @remesas:= @pago:= @saldo:= 0.0000, curdate(), @prov:= 0) sub + group by Fecha,Id_Proveedor + ) sub2 using(Id_Proveedor) + having Importe < -100 + ; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `CalculoRemesas` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `CalculoRemesas`(IN vFechaRemesa DATE) +BEGIN + + +DROP TEMPORARY TABLE IF EXISTS TMP_REMESAS; +CREATE TEMPORARY TABLE TMP_REMESAS SELECT + CONCAT(p.NIF,REPEAT('0', 12-LENGTH(p.NIF))) as CIF1, + cli.Id_Cliente, + cli.Cliente, + cli.`IF` as NIF , + cli.CC, + c.PaymentDate as Vencimiento, + 0 ImporteFac, + cast(c.Recibo as decimal(10,2)) as ImporteRec, + 0 as ImporteActual, + c.empresa_id, + cli.RazonSocial, + cast(c.Recibo as decimal(10,2)) as ImporteTotal, + cast(c.Recibo as decimal(10,2)) as Saldo, + p.Proveedor as Empresa, + e.abbreviation as EMP, + cli.cuenta, + CONCAT(cc_to_iban(CC),CC) AS Iban, + CONVERT(left(CC,4),UNSIGNED INT) AS nrbe , + IF(c.empresa_id=442,sepavnl,sepafth) as SEPA, + IF(c.empresa_id=442,corevnl,corefth) as RecibidoCORE + + FROM Clientes cli + JOIN + (SELECT empresa_id, + c.Id_Cliente, + sum(Importe) as Recibo, + IF((c.Vencimiento + graceDays) mod 30.001 <= day(vFechaRemesa) + ,TIMESTAMPADD(DAY, (c.Vencimiento + graceDays) MOD 30.001, LAST_DAY(TIMESTAMPADD(MONTH,-1,vFechaRemesa))) + ,TIMESTAMPADD(DAY, (c.Vencimiento + graceDays) MOD 30.001, LAST_DAY(TIMESTAMPADD(MONTH,-2,vFechaRemesa))) + ) as PaymentDate + FROM Clientes c + JOIN pay_met pm on pm.id = pay_met_id + JOIN + ( + SELECT empresa_id, Id_Cliente, Importe + FROM Facturas f + JOIN Clientes c using(Id_Cliente) + JOIN pay_met pm on pm.id = pay_met_id + WHERE IF(Importe > 0,paymentday(Fecha,c.Vencimiento + graceDays), Fecha) <= vFechaRemesa + AND pay_met_id = 4 AND deudaviva + + UNION ALL + + SELECT empresa_id, Id_Cliente, - Entregado + FROM Recibos r + JOIN Clientes c using(Id_Cliente) + JOIN pay_met pm on pm.id = pay_met_id + WHERE pay_met_id = 4 AND deudaviva + + ) sub using(Id_Cliente) + GROUP BY empresa_id, Id_Cliente + HAVING Recibo > 10 + ) c on c.Id_Cliente = cli.Id_Cliente + JOIN Proveedores p on p.Id_Proveedor = c.empresa_id + JOIN empresa e on e.id = c.empresa_id; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `calling` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `calling`() +BEGIN + +DROP TEMPORARY TABLE IF EXISTS Agenda, Agenda2; + + + CREATE TEMPORARY TABLE IF NOT EXISTS Agenda (Telefono varchar(15) PRIMARY KEY, Cliente VARCHAR(45)); + +CREATE TEMPORARY TABLE IF NOT EXISTS Agenda2 LIKE Agenda; + +REPLACE Agenda(Telefono, Cliente) + SELECT Telefono, Nombre from v_Agenda2; + + +REPLACE Agenda(Telefono, Cliente) + SELECT DISTINCT src, clid FROM cdr WHERE src < 6000 AND clid NOT LIKE '%device%' + AND calldate > TIMESTAMPADD(DAY, -7,CURDATE()) ; + + + +INSERT INTO Agenda2(Telefono, Cliente) + SELECT Telefono, Cliente FROM Agenda; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `camiones` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `camiones`(vWarehouse INT, vDate DATE) +BEGIN + SELECT Temperatura + ,ROUND(SUM(Etiquetas * cm3_2(Id_Cubo, Id_Article))) AS cm3 + ,ROUND(SUM(IF(scanned,Etiquetas,0) * cm3_2(Id_Cubo, Id_Article))) AS cm3s + ,ROUND(SUM(Vida * cm3_2(Id_Cubo, Id_Article))) AS cm3e + FROM ( + SELECT t.Temperatura, c.Etiquetas, c.Id_Cubo, c.Id_Article, b.scanned, c.Vida + FROM Compres c + LEFT JOIN buy_edi b ON b.id = c.buy_edi_id + JOIN Articles a ON a.Id_Article = c.Id_Article + JOIN Tipos t ON t.tipo_id = a.tipo_id + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel tr ON tr.id = e.travel_id + WHERE tr.warehouse_id = vWarehouse + AND tr.landing = vDate + ) sub + GROUP BY Temperatura; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Campaigns_Generator` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Campaigns_Generator`(IN datFEC DATE, IN intDAYS INT, IN intIMP INT) +BEGIN +DELETE FROM Campaigns; + +INSERT INTO Campaigns(Id_Cliente, Notas) +SELECT T.Id_Cliente, CONCAT('Consumo año anterior: ',FORMAT(SUM(M.Cantidad * M.Preu * (100 - M.Descuento) / 100), 0), ' € ') as Total +FROM Movimientos M +INNER JOIN Tickets T ON T.Id_Ticket = M.Id_Ticket +WHERE Date(T.Fecha) BETWEEN ADDDATE(datFEC,-1 * intDAYS) AND datFEC +GROUP BY T.Id_Cliente; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Campaigns_GeneratorKK` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Campaigns_GeneratorKK`(IN datFEC DATE, IN intDAYS INT, IN intIMP INT) +BEGIN +DELETE FROM Campaigns; + +INSERT INTO Campaigns(Id_Cliente, Notas) +SELECT T.Id_Cliente, CONCAT('Consumo año anterior: ',FORMAT(SUM(M.Cantidad * M.Preu * (100 - M.Descuento) / 100), 0), ' € ') as Total +FROM Movimientos M +INNER JOIN Tickets T ON T.Id_Ticket = M.Id_Ticket +WHERE Date(T.Fecha) BETWEEN ADDDATE(datFEC,-1 * intDAYS) AND datFEC +GROUP BY T.Id_Cliente; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Canariaskk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Canariaskk`(IN datFEC DATE, IN idWH INT , IN idEMP INT) +BEGIN + +DECLARE idTICKET DOUBLE; + + +CALL ticket_new_complet(4712, datFEC, idWH , 20, idEMP, NULL, NULL,NULL, idTICKET); + + +INSERT INTO Movimientos (Id_Ticket, Id_Article, Concepte, Cantidad, Preu, PrecioFijado) +SELECT idTICKET, 95, CONCAT(Codintrastat, ' : ', IF(Abreviatura = 'XYZ', 'NAC', Abreviatura), ' : ' , Nombotanic), sum(Cantidad), Preu, TRUE +FROM Articles INNER JOIN Movimientos ON Articles.Id_Article = Movimientos.Id_Article + INNER JOIN Tickets ON Movimientos.Id_Ticket = Tickets.Id_Ticket + INNER JOIN Consignatarios ON Tickets.Id_Consigna = Consignatarios.Id_Consigna + INNER JOIN province ON Consignatarios.province_id = province.province_id + INNER JOIN Origen ON Articles.id_origen = Origen.id +WHERE date(Tickets.Fecha) = datFEC AND province.name IN ('SANTA CRUZ DE TENERIFE','LAS PALMAS DE GRAN CANARIA') +GROUP BY Nombotanic, Preu; + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `check_table_existence` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `check_table_existence`(IN table_name CHAR(64)) +BEGIN + DECLARE CONTINUE HANDLER FOR SQLSTATE '42S02' SET @err = 1; + SET @err = 0; + SET @table_name = table_name; + SET @sql_query = CONCAT('SELECT NULL FROM ',@table_name); + PREPARE stmt1 FROM @sql_query; + IF (@err = 1) THEN + SET @table_exists = 0; + ELSE + SET @table_exists = 1; + DEALLOCATE PREPARE stmt1; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `clean` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `clean`(IN v_full TINYINT(1)) +BEGIN + DECLARE v_date DATETIME; + DECLARE v_date_fut DATE; + DECLARE v_date18 DATETIME; + DECLARE v_date8 DATE; + DECLARE v_date6 DATE; + DECLARE strtable varchar(15) DEFAULT NULL; + DECLARE done BIT DEFAULT 0; + /* + DECLARE cursor_table CURSOR FOR SELECT TABLE_NAME + FROM information_schema.TABLES + WHERE TABLE_NAME LIKE 'b20%' + AND TABLE_SCHEMA = 'vn2008'; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + DECLARE CONTINUE HANDLER FOR 1051 SET done = 0; +*/ + SET v_date = TIMESTAMPADD(MONTH, -2, CURDATE()); + SET v_date18 = TIMESTAMPADD(MONTH, -18,CURDATE()); + SET v_date8 = TIMESTAMPADD(DAY, -8,CURDATE()); + SET v_date6 = TIMESTAMPADD(DAY, -6,CURDATE()); + + INSERT INTO vn2008.daily_task_log(consulta) VALUES('clean START'); + + -- + DELETE FROM cdr WHERE calldate < v_date; + DELETE FROM Monitoring WHERE ODBC_TIME < v_date; + DELETE FROM Conteo WHERE Fecha < v_date; + DELETE FROM XDiario WHERE FECHA < v_date OR FECHA IS NULL; + DELETE FROM mail WHERE DATE_ODBC < v_date; + + -- + -- DELETE FROM Cajas WHERE CajaFecha < v_date18; + DELETE rr FROM Recibos_recorded rr JOIN Recibos r ON rr.Id_Recibos = r.Id WHERE r.Fechacobro < v_date; + + SELECT MAX(idTickets_dits) + INTO @id + FROM Tickets_dits + WHERE ODBC_DATE < v_date; + DELETE FROM Tickets_dits WHERE idTickets_dits <= @id; + + -- DELETE FROM Tickets_dits WHERE ODBC_DATE < v_date; + DELETE FROM expeditions WHERE odbc_date < v_date18; + DELETE FROM expeditions_deleted WHERE odbc_date < v_date18; + DELETE FROM Entradas_dits WHERE ODBC_DATE < v_date18; + DELETE FROM log_articles WHERE ODBC_DATE < v_date; + DELETE FROM sms WHERE DATE_ODBC < v_date18; + DELETE FROM Movimientos_mark WHERE odbc_date < v_date; + DELETE FROM Splits WHERE Fecha < v_date18; + DELETE ts FROM Tickets_stack ts JOIN Tickets t ON ts.Id_Ticket = t.Id_Ticket WHERE t.Fecha < v_date; + DELETE tobs FROM ticket_observation tobs JOIN Tickets t ON tobs.Id_Ticket = t.Id_Ticket WHERE t.Fecha < v_date; + DELETE tobs FROM movement_label tobs JOIN Movimientos m ON tobs.Id_Movimiento = m.Id_Movimiento + JOIN Tickets t ON m.Id_Ticket = t.Id_Ticket WHERE t.Fecha < v_date; + DELETE FROM chat WHERE odbc_date < v_date; + DELETE FROM Extractos WHERE Fecha < v_date; + DELETE FROM Remesas WHERE `Fecha Remesa` < v_date18; + DELETE FROM sharingcart where datEND < v_date; + DELETE FROM sharingclient where datEND < v_date; + DELETE FROM Stockcontrol WHERE Datestart < v_date18; + DELETE FROM bi.comparativa_clientes WHERE Fecha < v_date18; + DELETE FROM reference_rate WHERE date < v_date18; + + SELECT MAX(inter_id) + INTO @id + FROM vncontrol.inter + WHERE odbc_date < v_date18; + DELETE FROM vncontrol.inter WHERE inter_id <= @id; + + -- DELETE FROM vncontrol.inter WHERE odbc_date < v_date18; + DELETE FROM Entradas_dits WHERE ODBC_DATE < v_date; + DELETE FROM Ordenes WHERE datTICKET < v_date18 AND datTICKET <> '2000-01-01'; + DELETE FROM cyc_declaration WHERE Fecha < v_date18; + DELETE FROM vn.message WHERE sendDate < v_date; + DELETE FROM travel_reserve WHERE odbc_date < v_date; + -- DELETE FROM syslog.systemevents WHERE odbc_date < v_date8; + DELETE FROM daily_task_log WHERE odbc_date < v_date; + DELETE FROM bi.Greuge_Evolution WHERE Fecha < v_date AND weekday(Fecha) != 1; + DELETE mc FROM Movimientos_checked mc JOIN Movimientos m ON mc.Id_Movimiento = m.Id_Movimiento WHERE m.odbc_date < v_date; + DELETE FROM cache.departure_limit WHERE Fecha < TIMESTAMPADD(MONTH,-1,CURDATE()); + DELETE cm FROM Compres_mark cm + JOIN Compres c ON c.Id_Compra = cm.Id_Compra + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel t ON t.id = e.travel_id + WHERE t.landing <= v_date; + DELETE co FROM Compres_ok co JOIN Compres c ON c.Id_Compra = co.Id_Compra + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel t ON t.id = e.travel_id + WHERE t.landing <= v_date; + -- + DELETE FROM vn2008.scan WHERE odbc_date < v_date6 AND id <> 1; + + SET v_date = TIMESTAMPADD(YEAR, 2000 - YEAR(v_date), v_date); + SET v_date_fut = TIMESTAMPADD(MONTH, 3, v_date); + IF v_date_fut > '2000-12-31' THEN + SET v_date_fut = '2000-12-30'; + END IF; + + IF v_full THEN + + DELETE FROM Tickets + WHERE (Fecha <= v_date AND Fecha NOT IN ('2000-01-01','2000-01-02')) + OR (Fecha BETWEEN v_date_fut AND '2000-12-31'); + + DELETE e.* FROM Entradas e + LEFT JOIN recibida_entrada re ON e.Id_Entrada = re.Id_Entrada + WHERE travel_id IS NULL + AND re.Id_Entrada IS NULL; + + END IF; + /* + OPEN cursor_table; + FETCH cursor_table INTO strtable; + REPEAT + IF NOT done THEN + CALL vn2008.sql_query (sql_printf ( + 'DROP TABLE IF EXISTS %t' + ,strtable + )); + END IF; + FETCH cursor_table INTO strtable; + UNTIL done + END REPEAT; + + CLOSE cursor_table; + */ + + -- Tickets vacios PAK 17/05/2016 + +UPDATE Tickets t +JOIN +( +SELECT DISTINCT t.Id_Ticket +FROM Tickets t +LEFT JOIN Movimientos m using(Id_Ticket) +WHERE Id_Movimiento IS NULL +AND t.Fecha between '2016-01-01' and util.yesterday()) sub using(Id_Ticket) +SET t.Fecha = TIMESTAMPADD(YEAR, 2000 - year(CURDATE()), t.Fecha); + + + -- Tickets Nulos PAK 11/10/2016 + + + UPDATE vn2008.Tickets + SET empresa_id = 965 + WHERE Id_Cliente = 31 + AND empresa_id != 965; + + -- Equipos duplicados + DELETE w.* + FROM vn2008.workerTeam w + JOIN (SELECT id, team, user, COUNT(*) - 1 as duplicated + FROM vn.workerTeam + GROUP BY team,user + HAVING duplicated + ) d ON d.team = w.team AND d.user = w.user AND d.id != w.id; + +INSERT INTO vn2008.daily_task_log(consulta) VALUES('clean END'); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `clean_launcher` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `clean_launcher`() +BEGIN + + call vn2008.clean(TRUE); + call vn.clean(); + call vncontrol.clean(); + call bi.clean(); + call cache.clean(); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Clientes_Calidad` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Clientes_Calidad`() +BEGIN + + DECLARE intMONTH INTEGER; + DECLARE intYEAR INTEGER; + + SET intYEAR = YEAR(Curdate()); + SET intMONTH = MONTH(curdate())-1; + + IF intMONTH = 0 THEN + + SET intYEAR = intYEAR -1; + SET intMONTH = 12; + + END IF; + + UPDATE Clientes + SET + Calidad = 0; + + TRUNCATE bi.calidad_detalle; + + INSERT INTO bi.calidad_detalle(Id_Cliente,calidad_parametros_id,valor) + SELECT Id_Cliente, calidad_parametros_id, 0 + FROM bi.calidad_parametros + JOIN Clientes; + + -- Valoramos del 0 al 5 su consumo + + REPLACE INTO bi.calidad_detalle(Id_Cliente,calidad_parametros_id,valor) + SELECT Id_Cliente, 1, IF(Consumo > 5, 5, Consumo) + FROM ( + SELECT Id_Cliente, round(sum(importe)/1000) as Consumo + from bs.ventas v + join vn2008.time t on t.date = v.fecha + where year =intYEAR and month = intMONTH + group by Id_Cliente) sub; + + + -- Incrementamos dos puntos a los de giro bancario, y restamos uno a los de pago contado/contrareembolso + + REPLACE INTO bi.calidad_detalle(Id_Cliente,calidad_parametros_id,valor) + SELECT Id_Cliente, 3, CASE pay_met_id WHEN 4 -- giro + THEN 2 + + WHEN 1 -- contado + THEN -1 + + WHEN 5 -- tarjeta + + THEN 1 + + WHEN 7 -- tarjeta + + THEN 1 + + WHEN 6 -- contrareembolso + THEN -1 + + ELSE 0 END + FROM Clientes; + + /* Incrementamos a los que tengan reclamaciones 0%, 2 puntos + 1%, 1 punto + 2% 0 puntos + 3% -3 puntos + 4% - 6 puntos + 5% - 9 puntos + */ + + REPLACE INTO bi.calidad_detalle(Id_Cliente,calidad_parametros_id,valor) + SELECT Id_Cliente, 2, CASE nz(Ratio) + WHEN 0 THEN 2 + WHEN 0.01 THEN 1 + WHEN 0.02 THEN 0 + WHEN 0.03 THEN -3 + WHEN 0.04 THEN -6 + ELSE -9 + END + FROM bi.claims_ratio ; + + -- Ahora les ponemos un punto a los que compran por la web mas del 50% de sus pedidos + + REPLACE INTO bi.calidad_detalle(Id_Cliente,calidad_parametros_id,valor) + SELECT Id_Cliente, 4, Webs + FROM + ( SELECT Id_Cliente, sum(sub.Id_Trabajador = 4) / count(sub.Id_Trabajador) as Webs + FROM Tickets + JOIN + (SELECT Id_Ticket, Id_Trabajador + FROM Tickets_dits + WHERE idaccion_dits = 84 + AND ODBC_DATE >= TIMESTAMPADD(DAY,-30,CURDATE())) sub USING(Id_Ticket) + WHERE Fecha > '2001-01-01' AND Id_Agencia <> 23 -- ni tickets borrados, ni abonos cuentan + GROUP BY Id_Cliente + HAVING Webs > 0.5) sub2; + + + -- Marcamos con un 11 a los clientes recien nacidos, para protegerlos + + REPLACE INTO bi.calidad_detalle(Id_Cliente,calidad_parametros_id,valor) + SELECT Id_Cliente, 5, 11 + FROM + (SELECT Id_Cliente, MIN(Fecha) as Inicio + FROM Tickets + WHERE Fecha > '2001-01-01' + GROUP BY Id_Cliente + HAVING Inicio >= TIMESTAMPADD(DAY,-30,CURDATE())) sub ; + + -- Ahora actualizamos la tabla Clientes + + UPDATE Clientes + JOIN + (SELECT + Id_Cliente, SUM(valor) AS valoracion + FROM + bi.calidad_detalle + GROUP BY Id_Cliente) sub USING (Id_Cliente) + SET + calidad = IF(valoracion > 11, 11, valoracion); + + IF DAY(CURDATE()) = 1 THEN + -- Y de paso, desactivamos a los que hace tiempo que no compran.alter + -- JGF Sólo desctivamos a los clientes que no han comprado en los dos ultimos meses + UPDATE account.user u + SET + active = 0 + WHERE + u.role = 2 + AND id NOT IN (SELECT DISTINCT + c.Id_Cliente + FROM + Clientes c LEFT JOIN Tickets t ON t.Id_Cliente = c.Id_Cliente + WHERE + Created > TIMESTAMPADD(MONTH, - 2, CURDATE()) OR + Fecha > TIMESTAMPADD(MONTH, - 2, CURDATE())); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Clientes_Calidad_detalle` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Clientes_Calidad_detalle`(IN IdC INT) +BEGIN + + +SELECT descripcion Concepto, valor Puntos +FROM bi.calidad_parametros +JOIN bi.calidad_detalle using(calidad_parametros_id) +WHERE Id_Cliente = idC; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `clientes_saldos` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `clientes_saldos`() +BEGIN + + + +DROP TEMPORARY TABLE IF EXISTS clientes_pendientes; + +CREATE TEMPORARY TABLE clientes_pendientes +( Id_Cliente INT NOT NULL +, empresa_id INT NOT NULL +, saldo double NOT NULL +, PRIMARY KEY(Id_Cliente, empresa_id)); + +INSERT INTO clientes_pendientes +SELECT Id_Cliente, empresa_id, sum(importe) as saldo + FROM + ( + SELECT + Id_Cliente, + empresa_id, + - Entregado as importe + + FROM + Recibos + JOIN + Clientes USING(Id_Cliente) + JOIN + pay_met p on p.id = pay_met_id + WHERE + deudaviva + + + UNION ALL + + + SELECT + Id_Cliente, + empresa_id, + Importe + + FROM + Facturas + JOIN + Clientes USING(Id_Cliente) + JOIN + pay_met p on p.id = pay_met_id + WHERE + deudaviva + + + ) sub + GROUP BY empresa_id, Id_Cliente + having saldo > 0; + + + + DROP TEMPORARY TABLE IF EXISTS cobros_pendientes; + + CREATE TEMPORARY TABLE cobros_pendientes + (Id_Cliente INT + ,fecha DATE + ,empresa_id INT NOT NULL + ,saldo DOUBLE + ,PRIMARY KEY(Id_Cliente, empresa_id)); + + + + INSERT INTO cobros_pendientes(Id_Cliente + , fecha + , empresa_id + , saldo) + + + + SELECT cp.Id_Cliente, + CASE (vencimiento > 30) + + WHEN TRUE THEN + + timestampadd(DAY,vencimiento,maxFecha) + + ELSE + + timestampadd( + DAY + ,vencimiento - day(maxFecha) + ,timestampadd(MONTH,1,maxFecha) + ) + + END as fecha, + cp.empresa_id, + cp.saldo + FROM clientes_pendientes cp + JOIN Clientes USING(Id_Cliente) + JOIN ( SELECT + max(Fecha) as maxFecha, + Id_Cliente, + empresa_id + FROM + Facturas + GROUP BY + Id_Cliente, + empresa_id + ) mf on mf.Id_Cliente = cp.Id_Cliente + AND mf.empresa_id = cp.empresa_id; + + + SELECT * FROM cobros_pendientes; + + DROP TEMPORARY TABLE cobros_pendientes; + DROP TEMPORARY TABLE clientes_pendientes; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `clientManaGrouped` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `clientManaGrouped`(vClient INT) +BEGIN + + SELECT 'Tickets' as Grupo, CAST(sum(s.quantity * Valor) AS DECIMAL(10,2)) as Mana + FROM vn.ticket t + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.sale s on s.ticketFk = t.id + JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = s.id + WHERE Id_Componente IN (37, 39) + AND t.shipped >= '2016-01-01' + AND t.clientFk = vClient + + UNION ALL + + SELECT 'Recibos' as Grupo, - sum(Entregado) as Mana + FROM vn2008.Recibos r + JOIN vn2008.Clientes c using(Id_Cliente) + WHERE r.Id_Banco = 66 + AND r.Fechacobro >= '2016-01-01' + AND c.Id_Cliente = vClient + + UNION ALL + + SELECT 'Greuges' as Grupo, sum(g.Importe) as Mana + FROM vn2008.Greuges g + JOIN vn2008.Clientes c using(Id_Cliente) + WHERE g.Greuges_type_id = 3 -- Maná + AND g.Fecha > '2016-01-01' + AND c.Id_Cliente = vClient; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `clonWeeklyTickets` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `clonWeeklyTickets`(IN vWeek INT) +BEGIN + DECLARE done BIT DEFAULT 0; + DECLARE vLanding DATE; + DECLARE vShipment DATE; + DECLARE vWarehouse INT; + DECLARE vTicket INT; + DECLARE vWeekDay INT; + DECLARE vClient INT; + DECLARE vEmpresa INT; + DECLARE vConsignatario INT; + DECLARE vAgencia INT; + DECLARE vNewTicket INT; + DECLARE vYear INT; + + DECLARE rsTicket CURSOR FOR + SELECT tt.Id_Ticket, weekDay, Id_Cliente, warehouse_id, empresa_id, Id_Consigna, Id_Agencia + FROM Tickets_turno tt + JOIN Tickets t ON tt.Id_Ticket = t.Id_Ticket; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + + SET done = 0; + SET vYear = YEAR(CURDATE()) + IF(vWeek < WEEK(CURDATE()),1, 0); + + OPEN rsTicket; + + FETCH rsTicket INTO vTicket, vWeekDay, vClient, vWarehouse, vEmpresa, vConsignatario, vAgencia; + + WHILE NOT done DO + + SELECT date INTO vShipment + FROM time + WHERE year = vYear AND week = vWeek + AND WEEKDAY(date) = vWeekDay; + + -- busca si el ticket ya ha sido clonado + IF (select count(*) FROM Tickets t JOIN ticket_observation tob ON t.Id_Ticket = tob.Id_Ticket + WHERE Id_Consigna = vConsignatario AND Fecha = vShipment AND tob.text LIKE CONCAT('%',vTicket,'%')) = 0 + THEN + + IF (SELECT COUNT(*) FROM Agencias WHERE Id_Agencia = vAgencia AND Agencia LIKE '%turno%') THEN + SET vAgencia = NULL; + END IF; + + CALL vn.ticketCreate(vClient, vShipment, vWarehouse, vEmpresa, vConsignatario, vAgencia, NULL, vLanding, vNewTicket); + + INSERT INTO Movimientos (Id_Ticket, Id_Article, Concepte, Cantidad, Preu, Descuento, CostFixat, PrecioFijado) + SELECT vNewTicket, Id_Article, Concepte, Cantidad, Preu, Descuento, CostFixat, PrecioFijado + FROM Movimientos WHERE Id_Ticket = vTicket; + + INSERT INTO Ordenes (orden,datorden,datticket,codvendedor,codcomprador,cantidad,preciomax,preu,id_article,id_cliente,comentario, + ok, total,datcompra,ko,id_movimiento) + SELECT o.orden,o.datorden,vShipment,o.codvendedor,o.codcomprador,o.cantidad,o.preciomax,o.preu,o.id_article,o.id_cliente,o.comentario, + o.ok, o.total,o.datcompra,o.ko,m2.Id_Movimiento + FROM Movimientos m JOIN Ordenes o ON o.Id_Movimiento = m.Id_Movimiento + JOIN Movimientos m2 ON m.Concepte = m2.Concepte AND m.Cantidad = m2.Cantidad AND m.Id_Article = m2.Id_Article + WHERE m.Id_Ticket = vTicket AND m2.Id_Ticket = vNewTicket; + + INSERT INTO ticket_observation(Id_Ticket,observation_type_id,text) VALUES(vNewTicket,4,CONCAT('turno desde ticket: ',vTicket)) + ON DUPLICATE KEY UPDATE text = CONCAT(ticket_observation.text,VALUES(text),' '); + + CALL bionic_calc_clon(vNewTicket); + END IF; + FETCH rsTicket INTO vTicket, vWeekDay, vClient, vWarehouse, vEmpresa, vConsignatario, vAgencia; + + END WHILE; + + CLOSE rsTicket; + + DROP TEMPORARY TABLE IF EXISTS travel_tree_shipment; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `cobro` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `cobro`(IN datFEC DATE + , IN idCLI INT + , IN dblIMPORTE DOUBLE + , IN idCAJA INT + , IN idPAYMET INT + , IN strCONCEPTO VARCHAR(40) + , IN idEMP INT + , IN idWH INT + , IN idTRABAJADOR INT) +BEGIN + + DECLARE bolCASH BOOLEAN; + DECLARE cuenta_banco BIGINT; + DECLARE cuenta_cliente BIGINT; + DECLARE max_asien INT; + + -- XDIARIO + -- No se asientan los cobros directamente, salvo en el caso de las cajas de CASH + SELECT (cash = 1) INTO bolCASH FROM Bancos WHERE Bancos.Id_Banco = idCAJA; + + IF bolCASH THEN + + SELECT Cuenta INTO cuenta_banco FROM Bancos WHERE Id_Banco = idCAJA; + SELECT Cuenta INTO cuenta_cliente FROM Clientes WHERE Id_Cliente = idCLI; + SELECT MAX(asien)+1 INTO max_asien FROM XDiario; + + INSERT INTO XDiario (ASIEN,FECHA,SUBCTA,CONTRA,CONCEPTO,EURODEBE,EUROHABER,empresa_id) + SELECT max_asien,datFEC,SUBCTA,CONTRA,strCONCEPTO,EURODEBE,EUROHABER,idEMP FROM + ( + SELECT cuenta_banco SUBCTA, cuenta_cliente CONTRA, 0 EURODEBE, dblIMPORTE EUROHABER + UNION ALL + SELECT cuenta_cliente SUBCTA, cuenta_banco CONTRA, dblIMPORTE EURODEBE, 0 EUROHABER + ) gf; + + + END IF; + + + -- CAJERA + + INSERT INTO Cajas(Id_Trabajador + , Id_Banco + , Entrada + , Concepto + , Cajafecha + , Serie + , Partida + , Numero + ,empresa_id + ,warehouse_id) + + VALUES ( idTRABAJADOR + , idCAJA + , dblIMPORTE + , strCONCEPTO + , datFEC + , 'A' + , TRUE + , idCLI + , idEMP + , idWH ); + + + + -- RECIBO + INSERT INTO Recibos(Entregado + ,Fechacobro + ,Id_Trabajador + ,Id_Banco + ,Id_Cliente + ,Id_Factura + ,empresa_id) + + VALUES ( dblIMPORTE + , datFEC + , idTRABAJADOR + , idCAJA + , idCLI + , strCONCEPTO + , idEMP); + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `colas_launcher` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `colas_launcher`() +BEGIN + + INSERT INTO vn2008.Colas(Id_Informe,Id_Trabajador) VALUES (11,57); + INSERT INTO vn2008.Colas(Id_Informe) VALUES (16); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `comercial_caducado` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `comercial_caducado`() +BEGIN + +-- Este procedimiento le pasa los clientes al jefe de ventas cuando llevan dos meses inactivos + +IF day(CURDATE()) = 5 then -- solo se ejecuta los dias 5 de cada mes + + Update Clientes + join + ( + Select c.Id_Cliente + from Clientes c + join jerarquia j on j.worker_id = c.Id_Trabajador -- este filtro es para que solo toque los de los comerciales + + join + ( + select Id_Cliente, sum(Importe) as Saldo + from + ( + select Id_Cliente, Importe from Facturas + union all + select Id_Cliente, - Entregado from Recibos + ) sub + group by Id_Cliente + ) sindeuda on sindeuda.Id_Cliente = c.Id_Cliente + + left join + ( + select distinct Id_Cliente + from Facturas + where Fecha BETWEEN CURDATE() - INTERVAL 12 MONTH AND CURDATE() + ) f on f.Id_Cliente = c.Id_Cliente + + left join + ( + select distinct Id_Cliente + from Tickets + where Fecha between CURDATE() - INTERVAL 2 DAY AND CURDATE() + INTERVAL 200 DAY + + ) tic_vivos on tic_vivos.Id_Cliente = c.Id_Cliente + + where c.Created < CURDATE() - INTERVAL 2 MONTH -- este filtro respeta a los recien nacidos.... + and j.boss_id = 87 -- sólo afecta a los comerciales de Alfredo + and f.Id_Cliente is null -- comprueba que no tenga facturas en los dos ultimos meses + and sindeuda.Saldo < 10 -- sólo cambia a los clientes con deuda escasa o nula + and tic_vivos.Id_Cliente is null -- si tiene tickets vivos, lo respeta + + + ) sub using(Id_Cliente) + + set Id_Trabajador = 87 ;-- Alfredo Giner; + +end if; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `comparativa_clientes` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `comparativa_clientes`(IN v_date DATE,IN i_vendedor INT, IN i_comprador INT, IN i_tipo INT, IN i_wh INT, IN days INT) +BEGIN + +DECLARE date_cyear_ini DATETIME; +DECLARE date_cyear_end DATETIME; +DECLARE date_lyear_ini DATETIME; +DECLARE date_lyear_end DATETIME; +DECLARE week_count TINYINT DEFAULT 7; + + +SET date_cyear_ini = TIMESTAMP(DATE(TIMESTAMPADD(DAY, -22 - WEEKDAY(v_date), v_date)), '00:00:00'); +SET date_cyear_end = TIMESTAMP(DATE(TIMESTAMPADD(DAY, (7 * week_count) -1, date_cyear_ini)), '23:59:59'); +SET date_lyear_ini = TIMESTAMPADD(DAY,-364,date_cyear_ini); +SET date_lyear_end = TIMESTAMPADD(DAY,-364,date_cyear_end); + + CALL article (); + + INSERT INTO article_inventory (article_id) + SELECT Id_Article + FROM Articles a + JOIN Tipos t ON t.tipo_id = a.tipo_id + LEFT JOIN reinos r ON r.id = t.reino_id + WHERE (i_tipo = 0 OR a.tipo_id = i_tipo) + AND r.display <> 0; + + IF v_date < CURDATE() + THEN + ALTER TABLE `article_inventory` + ADD `buy_id` INT NOT NULL DEFAULT 0, + ADD `buy_date` DATE DEFAULT '2000-01-01', + ADD `life` INT DEFAULT 0, + ADD `sd` INT DEFAULT 0, + ADD `avalaible` INT DEFAULT 0, + ADD `visible` INT DEFAULT 0; + + ELSE + CALL inventario_multiple_2 (v_date, i_wh, days); + CALL article_multiple_buy (v_date, i_wh); + CALL article_multiple_buy_date (v_date, i_wh); + END IF; + + + +DROP TEMPORARY TABLE IF EXISTS clientcom; +CREATE TEMPORARY TABLE clientcom +SELECT vnperiod(Fecha) as period + ,Id_Article + , Cantidad + , Preu + , CS.Id_Cliente + FROM vn2008.Movimientos M + JOIN vn2008.Tickets T USING (Id_Ticket) + JOIN vn2008.Consignatarios CS USING(Id_Consigna) + JOIN vn2008.Clientes C ON C.Id_Cliente = CS.Id_Cliente + JOIN vn2008.Articles a USING (Id_Article) + LEFT JOIN vn2008.Tipos tp ON tp.tipo_id = a.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id + WHERE (T.Fecha BETWEEN date_cyear_ini AND date_cyear_end or T.Fecha BETWEEN date_lyear_ini AND date_lyear_end) + AND T.Id_Cliente NOT IN(400,200) + AND i_vendedor IN (0, C.Id_Trabajador ) + AND i_comprador IN (0, tp.Id_Trabajador) + AND i_tipo IN (0,tp.tipo_id) + AND r.display <> 0 AND T.warehouse_id NOT IN (0,13) + ORDER BY period; + +DROP TEMPORARY TABLE IF EXISTS clientcom_periods; +CREATE TEMPORARY TABLE clientcom_periods +SELECT period, @order:= @order + 1 as period_order +FROM ( +SELECT DISTINCT period, @order:=0 +FROM clientcom +ORDER BY period) sub; + +SELECT cc.Id_Article + , cc.Id_Cliente + ,CAST(SUM(IF(period_order = 1, cc.Cantidad, 0)) AS SIGNED) AS lweek1 + ,CAST(SUM(IF(period_order = 2, cc.Cantidad, 0)) AS SIGNED) AS lweek2 + ,CAST(SUM(IF(period_order = 3, cc.Cantidad, 0)) AS SIGNED) AS lweek3 + ,CAST(SUM(IF(period_order = 4, cc.Cantidad, 0)) AS SIGNED) AS lweek4 + ,CAST(SUM(IF(period_order = 5, cc.Cantidad, 0)) AS SIGNED) AS lweek5 + ,CAST(SUM(IF(period_order = 6, cc.Cantidad, 0)) AS SIGNED) AS lweek6 + ,CAST(SUM(IF(period_order = 7, cc.Cantidad, 0)) AS SIGNED) AS lweek7 + ,CAST(SUM(IF(period_order = 7+1, cc.Cantidad, 0)) AS SIGNED) AS cweek1 + ,CAST(SUM(IF(period_order = 7+2, cc.Cantidad, 0)) AS SIGNED) AS cweek2 + ,CAST(SUM(IF(period_order = 7+3, cc.Cantidad, 0)) AS SIGNED) AS cweek3 + ,CAST(SUM(IF(period_order = 7+4, cc.Cantidad, 0)) AS SIGNED) AS cweek4 + ,CAST(SUM(IF(period_order = 7+5, cc.Cantidad, 0)) AS SIGNED) AS cweek5 + ,CAST(SUM(IF(period_order = 7+6, cc.Cantidad, 0)) AS SIGNED) AS cweek6 + ,CAST(SUM(IF(period_order = 7+7, cc.Cantidad, 0)) AS SIGNED) AS cweek7 + + ,CAST(SUM(IF(period_order = 1, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice1 + ,CAST(SUM(IF(period_order = 2, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice2 + ,CAST(SUM(IF(period_order = 3, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice3 + ,CAST(SUM(IF(period_order = 4, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice4 + ,CAST(SUM(IF(period_order = 5, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice5 + ,CAST(SUM(IF(period_order = 6, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice6 + ,CAST(SUM(IF(period_order = 7, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice7 + ,CAST(SUM(IF(period_order = 7+1, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice1 + ,CAST(SUM(IF(period_order = 7+2, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice2 + ,CAST(SUM(IF(period_order = 7+3, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice3 + ,CAST(SUM(IF(period_order = 7+4, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice4 + ,CAST(SUM(IF(period_order = 7+5, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice5 + ,CAST(SUM(IF(period_order = 7+6, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice6 + ,CAST(SUM(IF(period_order = 7+7, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice7 + + ,A.Article + ,A.Medida + ,A.Color + ,A.tipo_id + ,C.Cliente + ,T1.CodigoTrabajador as Comercial + ,O.Abreviatura as Origen + ,TT.ball as Tinta + ,r.reino as Reino + ,TP.Id_Tipo + ,JF.CodigoTrabajador as Equipo + ,T2.CodigoTrabajador as Comprador + ,TT.orden as Orden_Color + +,i.buy_id +, i.life +, CAST(IFNULL(i.sd,0) AS SIGNED) as sd +,CAST(i.avalaible AS SIGNED) avalaible +, CAST(i.visible AS SIGNED) visible +, i.buy_date +,P.Proveedor + +FROM clientcom cc +JOIN clientcom_periods ccp using(period) +-- La parte del inventario +LEFT JOIN article_inventory i ON i.article_id = cc.Id_Article +LEFT JOIN Compres CM ON i.buy_id = CM.Id_Compra +LEFT JOIN Entradas E USING(Id_Entrada) +LEFT JOIN Proveedores P ON P.Id_Proveedor = E.Id_Proveedor +-- Ahora la parte de los vendedores +JOIN Clientes C ON C.Id_Cliente = cc.Id_Cliente +JOIN Trabajadores T1 ON C.Id_Trabajador = T1.Id_Trabajador +LEFT JOIN jerarquia J ON J.worker_id = T1.Id_Trabajador +JOIN Trabajadores JF ON JF.Id_Trabajador = J.boss_id +-- JOIN Trabajadores JF ON T1.Id_Trabajador = JF.boss JGF propuesta para sustituir por las dos lineas superiores + +-- Ahora la parte de los compradores +JOIN Articles A ON A.Id_Article = cc.Id_Article +JOIN Origen O ON O.id = A.id_origen +JOIN Tintas TT ON TT.Id_Tinta = A.Color +JOIN Tipos TP ON TP.tipo_id = A.tipo_id +JOIN reinos r ON r.id = TP.reino_id +JOIN Trabajadores T2 ON T2.Id_Trabajador = TP.Id_Trabajador + +GROUP BY Id_Article,Id_Cliente; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `comparativa_clienteskk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `comparativa_clienteskk`(IN v_date DATE,IN i_vendedor INT, IN i_comprador INT, IN i_tipo INT, IN i_wh INT, IN days INT) +BEGIN + +DECLARE date_cyear_ini DATETIME; +DECLARE date_cyear_end DATETIME; +DECLARE date_lyear_ini DATETIME; +DECLARE date_lyear_end DATETIME; +DECLARE week_count TINYINT DEFAULT 7; + + +SET date_cyear_ini = TIMESTAMP(DATE(TIMESTAMPADD(DAY, -22 - WEEKDAY(v_date), v_date)), '00:00:00'); +SET date_cyear_end = TIMESTAMP(DATE(TIMESTAMPADD(DAY, (7 * week_count) -1, date_cyear_ini)), '23:59:59'); +SET date_lyear_ini = TIMESTAMPADD(DAY,-364,date_cyear_ini); +SET date_lyear_end = TIMESTAMPADD(DAY,-364,date_cyear_end); + + CALL article (); + + INSERT INTO article_inventory (article_id) + SELECT Id_Article FROM Articles a + JOIN Tipos t using(tipo_id) + WHERE i_tipo = 0 OR a.tipo_id = i_tipo + AND reino_id <> 6; + + IF v_date < CURDATE() + THEN + ALTER TABLE `article_inventory` + ADD `buy_id` INT NOT NULL DEFAULT 0, + ADD `buy_date` DATE DEFAULT '2000-01-01', + ADD `life` INT DEFAULT 0, + ADD `sd` INT DEFAULT 0, + ADD `avalaible` INT DEFAULT 0, + ADD `visible` INT DEFAULT 0; + + ELSE + CALL inventario_multiple_2 (v_date, i_wh, days); + CALL article_multiple_buy (v_date, i_wh); + CALL article_multiple_buy_date (v_date, i_wh); + END IF; + + + +DROP TEMPORARY TABLE IF EXISTS clientcom; +CREATE TEMPORARY TABLE clientcom +SELECT vnperiod(Fecha) as period + ,Id_Article + , Cantidad + , Preu + , CS.Id_Cliente + FROM vn2008.Movimientos M + JOIN vn2008.Tickets T USING (Id_Ticket) + JOIN vn2008.Consignatarios CS USING(Id_Consigna) + JOIN vn2008.Clientes C ON C.Id_Cliente = CS.Id_Cliente + JOIN vn2008.Articles A USING (Id_Article) + LEFT JOIN vn2008.Tipos USING(tipo_id) + WHERE (T.Fecha BETWEEN date_cyear_ini AND date_cyear_end or T.Fecha BETWEEN date_lyear_ini AND date_lyear_end) + AND T.Id_Cliente NOT IN(400,200) + AND i_vendedor IN (0, C.Id_Trabajador ) + AND i_comprador IN (0, Tipos.Id_Trabajador) + AND i_tipo IN (0,Tipos.tipo_id) + AND reino_id <> 6 AND T.warehouse_id NOT IN (0,13) + ORDER BY period; + +DROP TEMPORARY TABLE IF EXISTS clientcom_periods; +CREATE TEMPORARY TABLE clientcom_periods +SELECT period, @order:= @order + 1 as period_order +FROM ( +SELECT DISTINCT period, @order:=0 +FROM clientcom +ORDER BY period) sub; + +SELECT cc.Id_Article + , cc.Id_Cliente + ,CAST(SUM(IF(period_order = 1, cc.Cantidad, 0)) AS SIGNED) AS lweek1 + ,CAST(SUM(IF(period_order = 2, cc.Cantidad, 0)) AS SIGNED) AS lweek2 + ,CAST(SUM(IF(period_order = 3, cc.Cantidad, 0)) AS SIGNED) AS lweek3 + ,CAST(SUM(IF(period_order = 4, cc.Cantidad, 0)) AS SIGNED) AS lweek4 + ,CAST(SUM(IF(period_order = 5, cc.Cantidad, 0)) AS SIGNED) AS lweek5 + ,CAST(SUM(IF(period_order = 6, cc.Cantidad, 0)) AS SIGNED) AS lweek6 + ,CAST(SUM(IF(period_order = 7, cc.Cantidad, 0)) AS SIGNED) AS lweek7 + ,CAST(SUM(IF(period_order = 7+1, cc.Cantidad, 0)) AS SIGNED) AS cweek1 + ,CAST(SUM(IF(period_order = 7+2, cc.Cantidad, 0)) AS SIGNED) AS cweek2 + ,CAST(SUM(IF(period_order = 7+3, cc.Cantidad, 0)) AS SIGNED) AS cweek3 + ,CAST(SUM(IF(period_order = 7+4, cc.Cantidad, 0)) AS SIGNED) AS cweek4 + ,CAST(SUM(IF(period_order = 7+5, cc.Cantidad, 0)) AS SIGNED) AS cweek5 + ,CAST(SUM(IF(period_order = 7+6, cc.Cantidad, 0)) AS SIGNED) AS cweek6 + ,CAST(SUM(IF(period_order = 7+7, cc.Cantidad, 0)) AS SIGNED) AS cweek7 + + ,CAST(SUM(IF(period_order = 1, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice1 + ,CAST(SUM(IF(period_order = 2, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice2 + ,CAST(SUM(IF(period_order = 3, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice3 + ,CAST(SUM(IF(period_order = 4, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice4 + ,CAST(SUM(IF(period_order = 5, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice5 + ,CAST(SUM(IF(period_order = 6, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice6 + ,CAST(SUM(IF(period_order = 7, cc.Cantidad* Preu, 0)) AS SIGNED) AS lprice7 + ,CAST(SUM(IF(period_order = 7+1, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice1 + ,CAST(SUM(IF(period_order = 7+2, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice2 + ,CAST(SUM(IF(period_order = 7+3, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice3 + ,CAST(SUM(IF(period_order = 7+4, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice4 + ,CAST(SUM(IF(period_order = 7+5, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice5 + ,CAST(SUM(IF(period_order = 7+6, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice6 + ,CAST(SUM(IF(period_order = 7+7, cc.Cantidad* Preu, 0)) AS SIGNED) AS cprice7 + + ,A.Article + ,A.Medida + ,A.Color + ,A.tipo_id + ,C.Cliente + ,T1.CodigoTrabajador as Comercial + ,O.Abreviatura as Origen + ,TT.ball as Tinta + ,r.reino as Reino + ,TP.Id_Tipo + ,JF.CodigoTrabajador as Equipo + ,T2.CodigoTrabajador as Comprador + ,TT.orden as Orden_Color + +,i.buy_id +, i.life +, CAST(IFNULL(i.sd,0) AS SIGNED) as sd +,CAST(i.avalaible AS SIGNED) avalaible +, CAST(i.visible AS SIGNED) visible +, i.buy_date +,P.Proveedor + +FROM clientcom cc +JOIN clientcom_periods ccp using(period) +-- La parte del inventario +LEFT JOIN article_inventory i ON i.article_id = cc.Id_Article +LEFT JOIN Compres CM ON i.buy_id = CM.Id_Compra +LEFT JOIN Entradas E USING(Id_Entrada) +LEFT JOIN Proveedores P ON P.Id_Proveedor = E.Id_Proveedor +-- Ahora la parte de los vendedores +JOIN Clientes C ON C.Id_Cliente = cc.Id_Cliente +JOIN Trabajadores T1 ON C.Id_Trabajador = T1.Id_Trabajador +LEFT JOIN jerarquia J ON J.worker_id = T1.Id_Trabajador +JOIN Trabajadores JF ON JF.Id_Trabajador = J.boss_id +-- JOIN Trabajadores JF ON T1.Id_Trabajador = JF.boss JGF propuesta para sustituir por las dos lineas superiores + +-- Ahora la parte de los compradores +JOIN Articles A ON A.Id_Article = cc.Id_Article +JOIN Origen O ON O.id = A.id_origen +JOIN Tintas TT ON TT.Id_Tinta = A.Color +JOIN Tipos TP ON TP.tipo_id = A.tipo_id +JOIN reinos r ON r.id = TP.reino_id +JOIN Trabajadores T2 ON T2.Id_Trabajador = TP.Id_Trabajador + +GROUP BY Id_Article,Id_Cliente; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `comparativa_clientes_tickets` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `comparativa_clientes_tickets`(IN i_week INT + , IN i_year INT + , IN i_vendedor INT + , IN i_comprador INT + , IN i_article INT + , IN i_cliente INT + , IN i_tipo INT + , IN i_reino INT + , IN i_equipo INT + , IN v_color varchar(3)) +BEGIN + +DECLARE datSTART DATETIME; +DECLARE datEND DATETIME; + +SELECT min(date), TIMESTAMP(max(date),'23:59:59') INTO datSTART, datEND FROM time WHERE i_week = week AND i_year = year; + + + +SELECT T.Id_Ticket, Fecha, Alias, Id_Article, Concepte, Cantidad, Preu, M.Descuento, Cantidad * Preu * (100-M.Descuento)/100 as Importe, w.name as almacen +FROM Movimientos M +JOIN Tickets T using(Id_Ticket) +JOIN warehouse w on w.id = T.warehouse_id +JOIN Consignatarios CS using(Id_Consigna) +JOIN Clientes C ON C.Id_Cliente = CS.Id_Cliente +JOIN Trabajadores TR ON TR.Id_Trabajador = C.Id_Trabajador +JOIN jerarquia J ON J.worker_id = TR.Id_Trabajador +JOIN Articles A using(Id_Article) +JOIN Tipos TP using(tipo_id) +WHERE T.Fecha BETWEEN datSTART AND datEND +AND i_vendedor IN (0, C.Id_Trabajador) +AND i_comprador IN (0, TP.Id_Trabajador) +AND i_cliente IN (0, CS.Id_Cliente) +AND i_tipo IN (0, A.tipo_id) +AND i_article IN (0,A.Id_Article) +AND i_reino IN (0,TP.reino_id) +AND i_equipo IN(0,J.boss_id) +AND v_color IN ("",A.color); + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `comparative` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `comparative`( + v_date DATETIME + ,days TINYINT + ,i_wh TINYINT + ,i_tipo INT + ,i_filtro INT +) +BEGIN + DECLARE wstart INT; + DECLARE wend INT; + DECLARE cyear INT; + DECLARE date_cyear_ini DATETIME; + DECLARE date_cyear_end DATETIME; + DECLARE week_count TINYINT DEFAULT 7; + DECLARE date_lyear_ini DATETIME; + DECLARE date_lyear_end DATETIME; + DECLARE corrector INT; + DECLARE w1, w2, w3, w4, w5, w6, w7 INT; + DECLARE y1, y2, y3, y4, y5, y6, y7 INT; + DECLARE wperiod INT;-- DECLARE ws, ys INT; -- PAK 11/01/2016 + DECLARE i INT DEFAULT 0; + DECLARE lastCOMP BIGINT; -- Almacena el ultimo valor del Periodo + DECLARE strFILTRO VARCHAR(255) DEFAULT 'TRUE'; + + IF i_filtro THEN + SELECT `sql` INTO strFILTRO FROM filtros WHERE id = i_filtro; + END IF; + + SET corrector = 1; + + IF days < 0 OR days > 30 THEN + SET days = 15; + END IF; + + IF i_wh = NULL THEN + SET i_wh = 0; + END IF; + -- JGF 2015-04-16 cambio -21 por -22 para que la semana cuente de domingo a sabado + SET date_cyear_ini = TIMESTAMP(DATE(TIMESTAMPADD(DAY, -22 - WEEKDAY(v_date), v_date)), '00:00:00'); + SET date_cyear_end = TIMESTAMP(DATE(TIMESTAMPADD(DAY, (7 * week_count) -1, date_cyear_ini)), '23:59:59'); + -- Eliminamos el calculo del inventario para fechas en el pasado + + CALL article (); + + INSERT INTO article_inventory (article_id) + SELECT Id_Article FROM Articles a + JOIN Tipos t ON a.tipo_id = t.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = t.reino_id + WHERE (i_tipo = 0 OR a.tipo_id = i_tipo) + AND r.display <> 0; + + IF v_date < CURDATE() + THEN + ALTER TABLE `article_inventory` + ADD `buy_id` INT NOT NULL DEFAULT 0, + ADD `buy_date` DATE DEFAULT '2000-01-01', + ADD `life` INT DEFAULT 0, + ADD `sd` INT DEFAULT 0, + ADD `avalaible` INT DEFAULT 0, + ADD `visible` INT DEFAULT 0; + + ELSE + + CALL inventario_multiple_2 (v_date, i_wh, days); + + CALL article_multiple_buy (v_date, i_wh); + + CALL article_multiple_buy_date (v_date, i_wh); + + + END IF; + + + DROP TEMPORARY TABLE IF EXISTS wtable; + + CREATE TEMPORARY TABLE wtable ( + cy INT(6), + ly INT(6) + ); + + REPEAT + SET i = i + 1; + SET wperiod = vnperiod(TIMESTAMPADD(DAY, 7*(i - 1), date_cyear_ini)); -- PAK 11/01/2016 + INSERT INTO wtable(cy, ly) VALUES(wperiod, wperiod - 100); -- VALUES( ys * 100 + ws, (ys -1) * 100 + ws); -- PAK 11/01/2016 + + UNTIL i = 7 END REPEAT; + + + SELECT cy, ly INTO w1, y1 FROM wtable limit 1; + SELECT cy, ly INTO w2, y2 FROM wtable WHERE cy > w1 limit 1; + SELECT cy, ly INTO w3, y3 FROM wtable WHERE cy > w2 limit 1; + SELECT cy, ly INTO w4, y4 FROM wtable WHERE cy > w3 limit 1; + + SELECT cy, ly INTO w5, y5 FROM wtable WHERE cy > w4 limit 1; + SELECT cy, ly INTO w6, y6 FROM wtable WHERE cy > w5 limit 1; + SELECT cy, ly INTO w7, y7 FROM wtable WHERE cy > w6 limit 1; + DROP TEMPORARY TABLE wtable; + + SET cyear = YEAR(date_cyear_ini); + + -- Genera una tabla con los datos del año pasado. + + DROP TEMPORARY TABLE IF EXISTS last_year; + CREATE TEMPORARY TABLE last_year + (KEY (Id_Article)) + ENGINE = MEMORY + SELECT Id_Article + + ,CAST(SUM(IF(Periodo = y1, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek1 + ,CAST(SUM(IF(Periodo = y2, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek2 + ,CAST(SUM(IF(Periodo = y3, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek3 + ,CAST(SUM(IF(Periodo = y4, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek4 + ,CAST(SUM(IF(Periodo = y5, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek5 + ,CAST(SUM(IF(Periodo = y6, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek6 + ,CAST(SUM(IF(Periodo = y7, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek7 + + ,CAST(SUM(IF(Periodo = y1, price, 0)) AS DECIMAL(10,0)) AS lprice1 + ,CAST(SUM(IF(Periodo = y2, price, 0)) AS DECIMAL(10,0)) AS lprice2 + ,CAST(SUM(IF(Periodo = y3, price, 0)) AS DECIMAL(10,0)) AS lprice3 + ,CAST(SUM(IF(Periodo = y4, price, 0)) AS DECIMAL(10,0)) AS lprice4 + ,CAST(SUM(IF(Periodo = y5, price, 0)) AS DECIMAL(10,0)) AS lprice5 + ,CAST(SUM(IF(Periodo = y6, price, 0)) AS DECIMAL(10,0)) AS lprice6 + ,CAST(SUM(IF(Periodo = y7, price, 0)) AS DECIMAL(10,0)) AS lprice7 + + FROM Comparativa + JOIN warehouse W on W.id = warehouse_id + WHERE (Periodo BETWEEN y1 and y7) + AND IF(i_wh = 0, W.is_comparative, i_wh = warehouse_id) + GROUP BY Id_Article; + + -- Genera una tabla con los datos de este año. + + DROP TEMPORARY TABLE IF EXISTS cur_year; + CREATE TEMPORARY TABLE cur_year + (KEY (Id_Article)) + ENGINE = MEMORY + SELECT Id_Article + + ,CAST(SUM(IF(week = w1, Total, 0)) AS DECIMAL(10,0)) AS cweek1 + ,CAST(SUM(IF(week = w2, Total, 0)) AS DECIMAL(10,0)) AS cweek2 + ,CAST(SUM(IF(week = w3, Total, 0)) AS DECIMAL(10,0)) AS cweek3 + ,CAST(SUM(IF(week = w4, Total, 0)) AS DECIMAL(10,0)) AS cweek4 + ,CAST(SUM(IF(week = w5, Total, 0)) AS DECIMAL(10,0)) AS cweek5 + ,CAST(SUM(IF(week = w6, Total, 0)) AS DECIMAL(10,0)) AS cweek6 + ,CAST(SUM(IF(week = w7, Total, 0)) AS DECIMAL(10,0)) AS cweek7 + + ,CAST(SUM(IF(week = w1, price, 0)) AS DECIMAL(10,0)) AS cprice1 + ,CAST(SUM(IF(week = w2, price, 0)) AS DECIMAL(10,0)) AS cprice2 + ,CAST(SUM(IF(week = w3, price, 0)) AS DECIMAL(10,0)) AS cprice3 + ,CAST(SUM(IF(week = w4, price, 0)) AS DECIMAL(10,0)) AS cprice4 + ,CAST(SUM(IF(week = w5, price, 0)) AS DECIMAL(10,0)) AS cprice5 + ,CAST(SUM(IF(week = w6, price, 0)) AS DECIMAL(10,0)) AS cprice6 + ,CAST(SUM(IF(week = w7, price, 0)) AS DECIMAL(10,0)) AS cprice7 + + FROM ( + SELECT A.Id_Article + ,CTS.period week + ,SUM(Cantidad) AS Total + ,TRUNCATE(SUM(Cantidad * IF(T.Fecha >= '2015-10-01',M.CostFixat,Preu * (100 - Descuento) / 100)),0) AS price + FROM Movimientos M + LEFT JOIN Tickets T ON T.Id_Ticket = M.Id_Ticket + INNER JOIN `time` CTS ON CTS.`date` = DATE(T.Fecha) + INNER JOIN Articles A USING (Id_Article) + INNER JOIN Tipos tp ON tp.tipo_id = A.tipo_id + LEFT JOIN reinos r ON r.id = tp.reino_id + JOIN warehouse W ON W.id = T.warehouse_id + WHERE Fecha BETWEEN date_cyear_ini AND date_cyear_end + AND T.Id_Cliente NOT IN(400,200) + AND IF(i_wh = 0, W.is_comparative, i_wh = T.warehouse_id) + AND r.display <> 0 + + GROUP BY A.Id_Article, week + ) t + GROUP BY Id_Article; + -- Genera la tabla con la comparativa. + + DROP TEMPORARY TABLE IF EXISTS remcom; + + SET strFILTRO = REPLACE(strFILTRO, 'Id_Article','A.Id_Article'); + SET strFILTRO = REPLACE(strFILTRO, 'tipo_id','tp.tipo_id'); + -- select * from article_inventory; + CALL sql_query (sql_printf + ( + 'CREATE TEMPORARY TABLE remcom + SELECT + + an.nicho, p.name Productor, C.Packing, C.Costefijo + ,A.Color, Id_Tipo as Tipo,A.tipo_id, o.Abreviatura as Origen, A.Categoria + ,A.Tallos, A.Medida, A.Article, TR.CodigoTrabajador + + ,cweek1, cweek2, cweek3, cweek4, cweek5, cweek6, cweek7 + ,lweek1, lweek2, lweek3, lweek4, lweek5, lweek6, lweek7 + + ,cprice1, cprice2, cprice3, cprice4, cprice5, cprice6, cprice7 + ,lprice1, lprice2, lprice3, lprice4, lprice5, lprice6, lprice7 + + ,A.Id_Article, i.buy_id , tp.life , CAST(IFNULL(i.sd,0) AS SIGNED) as sd + ,CAST(i.avalaible AS SIGNED) avalaible, CAST(i.visible AS SIGNED) visible, i.buy_date + ,E.Id_Proveedor AS provider_id, t.Orden, t.Tinta + ,A.offer, A.bargain, A.comments, A.relevancy + ,IF(cy.Id_Article IS NULL AND i.visible = 0 AND i.avalaible = 0 AND IFNULL(i.sd, 0) = 0, FALSE, TRUE) AS filtret + + FROM article_inventory i + JOIN Articles A ON A.Id_Article = i.article_id + LEFT JOIN Articles_nicho an ON A.Id_Article = an.Id_Article AND an.warehouse_id = %s + LEFT JOIN producer p ON p.producer_id = A.producer_id + LEFT JOIN Tipos tp ON A.tipo_id = tp.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id + LEFT JOIN Trabajadores TR ON TR.Id_Trabajador = tp.Id_Trabajador + LEFT JOIN Tintas t ON t.Id_Tinta = A.color + LEFT JOIN Compres C ON i.buy_id = C.Id_Compra + LEFT JOIN Entradas E USING(Id_Entrada) + LEFT JOIN Origen o ON o.id = A.id_origen + LEFT JOIN last_year ly ON ly.Id_Article = A.Id_Article + LEFT JOIN cur_year cy ON cy.Id_Article = A.Id_Article AND (i.avalaible <> 0 OR i.visible <> 0 OR cweek1 OR cweek2 OR cweek3 OR cweek4 + OR cweek5 OR cweek6 OR cweek7 OR lweek1 OR lweek2 OR lweek3 OR lweek4 OR lweek5 + OR lweek6 OR lweek7) + WHERE r.display <> 0 AND %s ' + + ,i_wh,strFILTRO + )); + ALTER TABLE remcom + CHANGE COLUMN `cweek1` `cweek1` INT NOT NULL, + CHANGE COLUMN `cweek2` `cweek2` INT NOT NULL, + CHANGE COLUMN `cweek3` `cweek3` INT NOT NULL, + CHANGE COLUMN `cweek4` `cweek4` INT NOT NULL, + CHANGE COLUMN `cweek5` `cweek5` INT NOT NULL, + CHANGE COLUMN `cweek6` `cweek6` INT NOT NULL, + CHANGE COLUMN `cweek7` `cweek7` INT NOT NULL, + CHANGE COLUMN `lweek1` `lweek1` INT NOT NULL, + CHANGE COLUMN `lweek2` `lweek2` INT NOT NULL, + CHANGE COLUMN `lweek3` `lweek3` INT NOT NULL, + CHANGE COLUMN `lweek4` `lweek4` INT NOT NULL, + CHANGE COLUMN `lweek5` `lweek5` INT NOT NULL, + CHANGE COLUMN `lweek6` `lweek6` INT NOT NULL, + CHANGE COLUMN `lweek7` `lweek7` INT NOT NULL; + SELECT * FROM remcom; + + -- Destruye las tablas temporales creadas. + + DROP TEMPORARY TABLE last_year; + DROP TEMPORARY TABLE cur_year; + -- DROP TEMPORARY TABLE article_inventory; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `comparative2` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `comparative2`( + v_date DATETIME + ,days TINYINT + ,i_wh TINYINT + ,i_tipo INT + ,i_filtro INT +) +BEGIN + DECLARE wstart INT; + DECLARE wend INT; + DECLARE cyear INT; + DECLARE date_cyear_ini DATETIME; + DECLARE date_cyear_end DATETIME; + DECLARE week_count TINYINT DEFAULT 7; + DECLARE date_lyear_ini DATETIME; + DECLARE date_lyear_end DATETIME; + DECLARE corrector INT; + DECLARE w1, w2, w3, w4, w5, w6, w7 INT; + DECLARE y1, y2, y3, y4, y5, y6, y7 INT; + DECLARE wperiod INT;-- DECLARE ws, ys INT; -- PAK 11/01/2016 + DECLARE i INT DEFAULT 0; + DECLARE lastCOMP BIGINT; -- Almacena el ultimo valor del Periodo + DECLARE strFILTRO VARCHAR(255) DEFAULT 'TRUE'; + + IF i_filtro THEN + SELECT `sql` INTO strFILTRO FROM filtros WHERE id = i_filtro; + END IF; + + SET corrector = 1; + + IF days < 0 OR days > 30 THEN + SET days = 15; + END IF; + + IF i_wh = NULL THEN + SET i_wh = 0; + END IF; + -- JGF 2015-04-16 cambio -21 por -22 para que la semana cuente de domingo a sabado + SET date_cyear_ini = TIMESTAMP(DATE(TIMESTAMPADD(DAY, -22 - WEEKDAY(v_date), v_date)), '00:00:00'); + SET date_cyear_end = TIMESTAMP(DATE(TIMESTAMPADD(DAY, (7 * week_count) -1, date_cyear_ini)), '23:59:59'); + -- Eliminamos el calculo del inventario para fechas en el pasado + + CALL article (); + + INSERT INTO article_inventory (article_id) + SELECT Id_Article FROM Articles a + JOIN Tipos t ON a.tipo_id = t.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = t.reino_id + WHERE (i_tipo = 0 OR a.tipo_id = i_tipo) + AND r.display <> 0; + + IF v_date < CURDATE() + THEN + ALTER TABLE `article_inventory` + ADD `buy_id` INT NOT NULL DEFAULT 0, + ADD `buy_date` DATE DEFAULT '2000-01-01', + ADD `life` INT DEFAULT 0, + ADD `sd` INT DEFAULT 0, + ADD `avalaible` INT DEFAULT 0, + ADD `visible` INT DEFAULT 0; + + ELSE + + CALL inventario_multiple_2 (v_date, i_wh, days); + + CALL article_multiple_buy (v_date, i_wh); + + CALL article_multiple_buy_date (v_date, i_wh); + + + END IF; + + + DROP TEMPORARY TABLE IF EXISTS wtable; + + CREATE TEMPORARY TABLE wtable ( + cy INT(6), + ly INT(6) + ); + + REPEAT + SET i = i + 1; + SET wperiod = vnperiod(TIMESTAMPADD(DAY, 7*(i - 1), date_cyear_ini)); -- PAK 11/01/2016 + INSERT INTO wtable(cy, ly) VALUES(wperiod, wperiod - 100); -- VALUES( ys * 100 + ws, (ys -1) * 100 + ws); -- PAK 11/01/2016 + + UNTIL i = 7 END REPEAT; + + + SELECT cy, ly INTO w1, y1 FROM wtable limit 1; + SELECT cy, ly INTO w2, y2 FROM wtable WHERE cy > w1 limit 1; + SELECT cy, ly INTO w3, y3 FROM wtable WHERE cy > w2 limit 1; + SELECT cy, ly INTO w4, y4 FROM wtable WHERE cy > w3 limit 1; + + SELECT cy, ly INTO w5, y5 FROM wtable WHERE cy > w4 limit 1; + SELECT cy, ly INTO w6, y6 FROM wtable WHERE cy > w5 limit 1; + SELECT cy, ly INTO w7, y7 FROM wtable WHERE cy > w6 limit 1; + DROP TEMPORARY TABLE wtable; + + SET cyear = YEAR(date_cyear_ini); + + -- Genera una tabla con los datos del año pasado. + + DROP TEMPORARY TABLE IF EXISTS last_year; + CREATE TEMPORARY TABLE last_year + (KEY (Id_Article)) + ENGINE = MEMORY + SELECT Id_Article + + ,CAST(SUM(IF(Periodo = y1, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek1 + ,CAST(SUM(IF(Periodo = y2, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek2 + ,CAST(SUM(IF(Periodo = y3, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek3 + ,CAST(SUM(IF(Periodo = y4, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek4 + ,CAST(SUM(IF(Periodo = y5, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek5 + ,CAST(SUM(IF(Periodo = y6, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek6 + ,CAST(SUM(IF(Periodo = y7, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek7 + + ,CAST(SUM(IF(Periodo = y1, price, 0)) AS DECIMAL(10,0)) AS lprice1 + ,CAST(SUM(IF(Periodo = y2, price, 0)) AS DECIMAL(10,0)) AS lprice2 + ,CAST(SUM(IF(Periodo = y3, price, 0)) AS DECIMAL(10,0)) AS lprice3 + ,CAST(SUM(IF(Periodo = y4, price, 0)) AS DECIMAL(10,0)) AS lprice4 + ,CAST(SUM(IF(Periodo = y5, price, 0)) AS DECIMAL(10,0)) AS lprice5 + ,CAST(SUM(IF(Periodo = y6, price, 0)) AS DECIMAL(10,0)) AS lprice6 + ,CAST(SUM(IF(Periodo = y7, price, 0)) AS DECIMAL(10,0)) AS lprice7 + + FROM Comparativa + JOIN warehouse W on W.id = warehouse_id + WHERE (Periodo BETWEEN y1 and y7) + AND IF(i_wh = 0, W.is_comparative, i_wh = warehouse_id) + GROUP BY Id_Article; + + -- Genera una tabla con los datos de este año. + + DROP TEMPORARY TABLE IF EXISTS cur_year; + CREATE TEMPORARY TABLE cur_year + (KEY (Id_Article)) + ENGINE = MEMORY + SELECT Id_Article + + ,CAST(SUM(IF(week = w1, Total, 0)) AS DECIMAL(10,0)) AS cweek1 + ,CAST(SUM(IF(week = w2, Total, 0)) AS DECIMAL(10,0)) AS cweek2 + ,CAST(SUM(IF(week = w3, Total, 0)) AS DECIMAL(10,0)) AS cweek3 + ,CAST(SUM(IF(week = w4, Total, 0)) AS DECIMAL(10,0)) AS cweek4 + ,CAST(SUM(IF(week = w5, Total, 0)) AS DECIMAL(10,0)) AS cweek5 + ,CAST(SUM(IF(week = w6, Total, 0)) AS DECIMAL(10,0)) AS cweek6 + ,CAST(SUM(IF(week = w7, Total, 0)) AS DECIMAL(10,0)) AS cweek7 + + ,CAST(SUM(IF(week = w1, price, 0)) AS DECIMAL(10,0)) AS cprice1 + ,CAST(SUM(IF(week = w2, price, 0)) AS DECIMAL(10,0)) AS cprice2 + ,CAST(SUM(IF(week = w3, price, 0)) AS DECIMAL(10,0)) AS cprice3 + ,CAST(SUM(IF(week = w4, price, 0)) AS DECIMAL(10,0)) AS cprice4 + ,CAST(SUM(IF(week = w5, price, 0)) AS DECIMAL(10,0)) AS cprice5 + ,CAST(SUM(IF(week = w6, price, 0)) AS DECIMAL(10,0)) AS cprice6 + ,CAST(SUM(IF(week = w7, price, 0)) AS DECIMAL(10,0)) AS cprice7 + + FROM ( + SELECT A.Id_Article + ,CTS.period week + ,SUM(Cantidad) AS Total + ,TRUNCATE(SUM(Cantidad * IF(T.Fecha >= '2015-10-01',M.CostFixat,Preu * (100 - Descuento) / 100)),0) AS price + FROM Movimientos M + LEFT JOIN Tickets T ON T.Id_Ticket = M.Id_Ticket + INNER JOIN `time` CTS ON CTS.`date` = DATE(T.Fecha) + INNER JOIN Articles A USING (Id_Article) + INNER JOIN Tipos tp ON tp.tipo_id = A.tipo_id + LEFT JOIN reinos r ON r.id = tp.reino_id + JOIN warehouse W ON W.id = T.warehouse_id + WHERE Fecha BETWEEN date_cyear_ini AND date_cyear_end + AND T.Id_Cliente NOT IN(400,200) + AND IF(i_wh = 0, W.is_comparative, i_wh = T.warehouse_id) + AND r.display <> 0 + + GROUP BY A.Id_Article, week + ) t + GROUP BY Id_Article; + -- Genera la tabla con la comparativa. + + DROP TEMPORARY TABLE IF EXISTS remcom; + + SET strFILTRO = REPLACE(strFILTRO, 'Id_Article','A.Id_Article'); + SET strFILTRO = REPLACE(strFILTRO, 'tipo_id','tp.tipo_id'); + -- select * from article_inventory; + CALL sql_query (sql_printf + ( + 'CREATE TEMPORARY TABLE remcom + SELECT + + an.nicho, p.name Productor, C.Packing, C.Costefijo + ,A.Color, Id_Tipo as Tipo,A.tipo_id, o.Abreviatura as Origen, A.Categoria + ,A.Tallos, A.Medida, A.Article, TR.CodigoTrabajador + + ,cweek1, cweek2, cweek3, cweek4, cweek5, cweek6, cweek7 + ,lweek1, lweek2, lweek3, lweek4, lweek5, lweek6, lweek7 + + ,cprice1, cprice2, cprice3, cprice4, cprice5, cprice6, cprice7 + ,lprice1, lprice2, lprice3, lprice4, lprice5, lprice6, lprice7 + + ,A.Id_Article, i.buy_id , i.life , CAST(IFNULL(i.sd,0) AS SIGNED) as sd + ,CAST(i.avalaible AS SIGNED) avalaible, CAST(i.visible AS SIGNED) visible, i.buy_date + ,E.Id_Proveedor AS provider_id, t.Orden, t.Tinta + ,A.offer, A.bargain, A.comments + ,IF(cy.Id_Article IS NULL AND i.visible = 0 AND i.avalaible = 0 AND IFNULL(i.sd, 0) = 0, FALSE, TRUE) AS filtret + + FROM article_inventory i + JOIN Articles A ON A.Id_Article = i.article_id + LEFT JOIN Articles_nicho an ON A.Id_Article = an.Id_Article AND an.warehouse_id = %s + LEFT JOIN producer p ON p.producer_id = A.producer_id + LEFT JOIN Tipos tp ON A.tipo_id = tp.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id + LEFT JOIN Trabajadores TR ON TR.Id_Trabajador = tp.Id_Trabajador + LEFT JOIN Tintas t ON t.Id_Tinta = A.color + LEFT JOIN Compres C ON i.buy_id = C.Id_Compra + LEFT JOIN Entradas E USING(Id_Entrada) + LEFT JOIN Origen o ON o.id = A.id_origen + LEFT JOIN last_year ly ON ly.Id_Article = A.Id_Article + LEFT JOIN cur_year cy ON cy.Id_Article = A.Id_Article + WHERE r.display <> 0 AND (i.avalaible <> 0 OR i.visible <> 0 OR cweek1 OR cweek2 OR cweek3 OR cweek4 + OR cweek5 OR cweek6 OR cweek7 OR lweek1 OR lweek2 OR lweek3 OR lweek4 OR lweek5 + OR lweek6 OR lweek7) + AND %s LIMIT 20000' + + ,i_wh,strFILTRO + )); + ALTER TABLE remcom + CHANGE COLUMN `cweek1` `cweek1` INT NOT NULL, + CHANGE COLUMN `cweek2` `cweek2` INT NOT NULL, + CHANGE COLUMN `cweek3` `cweek3` INT NOT NULL, + CHANGE COLUMN `cweek4` `cweek4` INT NOT NULL, + CHANGE COLUMN `cweek5` `cweek5` INT NOT NULL, + CHANGE COLUMN `cweek6` `cweek6` INT NOT NULL, + CHANGE COLUMN `cweek7` `cweek7` INT NOT NULL, + CHANGE COLUMN `lweek1` `lweek1` INT NOT NULL, + CHANGE COLUMN `lweek2` `lweek2` INT NOT NULL, + CHANGE COLUMN `lweek3` `lweek3` INT NOT NULL, + CHANGE COLUMN `lweek4` `lweek4` INT NOT NULL, + CHANGE COLUMN `lweek5` `lweek5` INT NOT NULL, + CHANGE COLUMN `lweek6` `lweek6` INT NOT NULL, + CHANGE COLUMN `lweek7` `lweek7` INT NOT NULL; + SELECT * FROM remcom; + + -- Destruye las tablas temporales creadas. + + DROP TEMPORARY TABLE last_year; + DROP TEMPORARY TABLE cur_year; + DROP TEMPORARY TABLE article_inventory; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `comparative_test` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `comparative_test`( + v_date DATETIME + ,days TINYINT + ,i_wh TINYINT + ,i_tipo INT + ,i_filtro INT +) +BEGIN + DECLARE wstart INT; + DECLARE wend INT; + DECLARE cyear INT; + DECLARE date_cyear_ini DATETIME; + DECLARE date_cyear_end DATETIME; + DECLARE week_count TINYINT DEFAULT 7; + DECLARE date_lyear_ini DATETIME; + DECLARE date_lyear_end DATETIME; + DECLARE corrector INT; + DECLARE w1, w2, w3, w4, w5, w6, w7 INT; + DECLARE y1, y2, y3, y4, y5, y6, y7 INT; + DECLARE wperiod INT;-- DECLARE ws, ys INT; -- PAK 11/01/2016 + DECLARE i INT DEFAULT 0; + DECLARE lastCOMP BIGINT; -- Almacena el ultimo valor del Periodo + DECLARE strFILTRO VARCHAR(255) DEFAULT 'TRUE'; + + IF i_filtro THEN + SELECT `sql` INTO strFILTRO FROM filtros WHERE id = i_filtro; + END IF; + + SET corrector = 1; + + IF days < 0 OR days > 30 THEN + SET days = 15; + END IF; + + IF i_wh = NULL THEN + SET i_wh = 0; + END IF; + -- JGF 2015-04-16 cambio -21 por -22 para que la semana cuente de domingo a sabado + SET date_cyear_ini = TIMESTAMP(DATE(TIMESTAMPADD(DAY, -22 - WEEKDAY(v_date), v_date)), '00:00:00'); + SET date_cyear_end = TIMESTAMP(DATE(TIMESTAMPADD(DAY, (7 * week_count) -1, date_cyear_ini)), '23:59:59'); + -- Eliminamos el calculo del inventario para fechas en el pasado + + CALL article (); + + INSERT INTO article_inventory (article_id) + SELECT Id_Article FROM Articles a + JOIN Tipos t ON a.tipo_id = t.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = t.reino_id + WHERE (i_tipo = 0 OR a.tipo_id = i_tipo) + AND r.display <> 0; + + IF v_date < CURDATE() + THEN + ALTER TABLE `article_inventory` + ADD `buy_id` INT NOT NULL DEFAULT 0, + ADD `buy_date` DATE DEFAULT '2000-01-01', + ADD `life` INT DEFAULT 0, + ADD `sd` INT DEFAULT 0, + ADD `avalaible` INT DEFAULT 0, + ADD `visible` INT DEFAULT 0; + + ELSE + + CALL inventario_multiple_2 (v_date, i_wh, days); + + CALL article_multiple_buy (v_date, i_wh); + + CALL article_multiple_buy_date (v_date, i_wh); + + + END IF; + + + DROP TEMPORARY TABLE IF EXISTS wtable; + + CREATE TEMPORARY TABLE wtable ( + cy INT(6), + ly INT(6) + ); + + REPEAT + SET i = i + 1; + SET wperiod = vnperiod(TIMESTAMPADD(DAY, 7*(i - 1), date_cyear_ini)); -- PAK 11/01/2016 + INSERT INTO wtable(cy, ly) VALUES(wperiod, wperiod - 100); -- VALUES( ys * 100 + ws, (ys -1) * 100 + ws); -- PAK 11/01/2016 + + UNTIL i = 7 END REPEAT; + + + SELECT cy, ly INTO w1, y1 FROM wtable limit 1; + SELECT cy, ly INTO w2, y2 FROM wtable WHERE cy > w1 limit 1; + SELECT cy, ly INTO w3, y3 FROM wtable WHERE cy > w2 limit 1; + SELECT cy, ly INTO w4, y4 FROM wtable WHERE cy > w3 limit 1; + + SELECT cy, ly INTO w5, y5 FROM wtable WHERE cy > w4 limit 1; + SELECT cy, ly INTO w6, y6 FROM wtable WHERE cy > w5 limit 1; + SELECT cy, ly INTO w7, y7 FROM wtable WHERE cy > w6 limit 1; + DROP TEMPORARY TABLE wtable; + + SET cyear = YEAR(date_cyear_ini); + + -- Genera una tabla con los datos del año pasado. + + DROP TEMPORARY TABLE IF EXISTS last_year; + CREATE TEMPORARY TABLE last_year + (KEY (Id_Article)) + ENGINE = MEMORY + SELECT Id_Article + + ,CAST(SUM(IF(Periodo = y1, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek1 + ,CAST(SUM(IF(Periodo = y2, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek2 + ,CAST(SUM(IF(Periodo = y3, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek3 + ,CAST(SUM(IF(Periodo = y4, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek4 + ,CAST(SUM(IF(Periodo = y5, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek5 + ,CAST(SUM(IF(Periodo = y6, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek6 + ,CAST(SUM(IF(Periodo = y7, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek7 + + ,CAST(SUM(IF(Periodo = y1, price, 0)) AS DECIMAL(10,0)) AS lprice1 + ,CAST(SUM(IF(Periodo = y2, price, 0)) AS DECIMAL(10,0)) AS lprice2 + ,CAST(SUM(IF(Periodo = y3, price, 0)) AS DECIMAL(10,0)) AS lprice3 + ,CAST(SUM(IF(Periodo = y4, price, 0)) AS DECIMAL(10,0)) AS lprice4 + ,CAST(SUM(IF(Periodo = y5, price, 0)) AS DECIMAL(10,0)) AS lprice5 + ,CAST(SUM(IF(Periodo = y6, price, 0)) AS DECIMAL(10,0)) AS lprice6 + ,CAST(SUM(IF(Periodo = y7, price, 0)) AS DECIMAL(10,0)) AS lprice7 + + FROM Comparativa + JOIN warehouse W on W.id = warehouse_id + WHERE (Periodo BETWEEN y1 and y7) + AND IF(i_wh = 0, W.is_comparative, i_wh = warehouse_id) + GROUP BY Id_Article; + + -- Genera una tabla con los datos de este año. + + DROP TEMPORARY TABLE IF EXISTS cur_year; + CREATE TEMPORARY TABLE cur_year + (KEY (Id_Article)) + ENGINE = MEMORY + SELECT Id_Article + + ,CAST(SUM(IF(week = w1, Total, 0)) AS DECIMAL(10,0)) AS cweek1 + ,CAST(SUM(IF(week = w2, Total, 0)) AS DECIMAL(10,0)) AS cweek2 + ,CAST(SUM(IF(week = w3, Total, 0)) AS DECIMAL(10,0)) AS cweek3 + ,CAST(SUM(IF(week = w4, Total, 0)) AS DECIMAL(10,0)) AS cweek4 + ,CAST(SUM(IF(week = w5, Total, 0)) AS DECIMAL(10,0)) AS cweek5 + ,CAST(SUM(IF(week = w6, Total, 0)) AS DECIMAL(10,0)) AS cweek6 + ,CAST(SUM(IF(week = w7, Total, 0)) AS DECIMAL(10,0)) AS cweek7 + + ,CAST(SUM(IF(week = w1, price, 0)) AS DECIMAL(10,0)) AS cprice1 + ,CAST(SUM(IF(week = w2, price, 0)) AS DECIMAL(10,0)) AS cprice2 + ,CAST(SUM(IF(week = w3, price, 0)) AS DECIMAL(10,0)) AS cprice3 + ,CAST(SUM(IF(week = w4, price, 0)) AS DECIMAL(10,0)) AS cprice4 + ,CAST(SUM(IF(week = w5, price, 0)) AS DECIMAL(10,0)) AS cprice5 + ,CAST(SUM(IF(week = w6, price, 0)) AS DECIMAL(10,0)) AS cprice6 + ,CAST(SUM(IF(week = w7, price, 0)) AS DECIMAL(10,0)) AS cprice7 + + FROM ( + SELECT A.Id_Article + ,CTS.period week + ,SUM(Cantidad) AS Total + ,TRUNCATE(SUM(Cantidad * IF(T.Fecha >= '2015-10-01',M.CostFixat,Preu * (100 - Descuento) / 100)),0) AS price + FROM Movimientos M + LEFT JOIN Tickets T ON T.Id_Ticket = M.Id_Ticket + INNER JOIN `time` CTS ON CTS.`date` = DATE(T.Fecha) + INNER JOIN Articles A USING (Id_Article) + INNER JOIN Tipos tp ON tp.tipo_id = A.tipo_id + LEFT JOIN reinos r ON r.id = tp.reino_id + JOIN warehouse W ON W.id = T.warehouse_id + WHERE Fecha BETWEEN date_cyear_ini AND date_cyear_end + AND T.Id_Cliente NOT IN(400,200) + AND IF(i_wh = 0, W.is_comparative, i_wh = T.warehouse_id) + AND r.display <> 0 + + GROUP BY A.Id_Article, week + ) t + GROUP BY Id_Article; + -- Genera la tabla con la comparativa. + + DROP TEMPORARY TABLE IF EXISTS remcom; + + SET strFILTRO = REPLACE(strFILTRO, 'Id_Article','A.Id_Article'); + SET strFILTRO = REPLACE(strFILTRO, 'tipo_id','tp.tipo_id'); + -- select * from article_inventory; + CALL sql_query (sql_printf + ( + 'CREATE TEMPORARY TABLE remcom + SELECT + + an.nicho, p.name Productor, C.Packing, C.Costefijo + ,A.Color, Id_Tipo as Tipo,A.tipo_id, o.Abreviatura as Origen, A.Categoria + ,A.Tallos, A.Medida, A.Article, TR.CodigoTrabajador + + ,cweek1, cweek2, cweek3, cweek4, cweek5, cweek6, cweek7 + ,lweek1, lweek2, lweek3, lweek4, lweek5, lweek6, lweek7 + + ,cprice1, cprice2, cprice3, cprice4, cprice5, cprice6, cprice7 + ,lprice1, lprice2, lprice3, lprice4, lprice5, lprice6, lprice7 + + ,A.Id_Article, i.buy_id , tp.life , CAST(IFNULL(i.sd,0) AS SIGNED) as sd + ,CAST(i.avalaible AS SIGNED) avalaible, CAST(i.visible AS SIGNED) visible, i.buy_date + ,E.Id_Proveedor AS provider_id, t.Orden, t.Tinta + ,A.offer, A.bargain, A.comments, A.relevancy + ,IF(cy.Id_Article IS NULL AND i.visible = 0 AND i.avalaible = 0 AND IFNULL(i.sd, 0) = 0, FALSE, TRUE) AS filtret + + FROM article_inventory i + JOIN Articles A ON A.Id_Article = i.article_id + LEFT JOIN Articles_nicho an ON A.Id_Article = an.Id_Article AND an.warehouse_id = %s + LEFT JOIN producer p ON p.producer_id = A.producer_id + LEFT JOIN Tipos tp ON A.tipo_id = tp.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id + LEFT JOIN Trabajadores TR ON TR.Id_Trabajador = tp.Id_Trabajador + LEFT JOIN Tintas t ON t.Id_Tinta = A.color + LEFT JOIN Compres C ON i.buy_id = C.Id_Compra + LEFT JOIN Entradas E USING(Id_Entrada) + LEFT JOIN Origen o ON o.id = A.id_origen + LEFT JOIN last_year ly ON ly.Id_Article = A.Id_Article + LEFT JOIN cur_year cy ON cy.Id_Article = A.Id_Article AND (i.avalaible <> 0 OR i.visible <> 0 OR cweek1 OR cweek2 OR cweek3 OR cweek4 + OR cweek5 OR cweek6 OR cweek7 OR lweek1 OR lweek2 OR lweek3 OR lweek4 OR lweek5 + OR lweek6 OR lweek7) + WHERE r.display <> 0 AND %s ' + + ,i_wh,strFILTRO + )); + ALTER TABLE remcom + CHANGE COLUMN `cweek1` `cweek1` INT NOT NULL, + CHANGE COLUMN `cweek2` `cweek2` INT NOT NULL, + CHANGE COLUMN `cweek3` `cweek3` INT NOT NULL, + CHANGE COLUMN `cweek4` `cweek4` INT NOT NULL, + CHANGE COLUMN `cweek5` `cweek5` INT NOT NULL, + CHANGE COLUMN `cweek6` `cweek6` INT NOT NULL, + CHANGE COLUMN `cweek7` `cweek7` INT NOT NULL, + CHANGE COLUMN `lweek1` `lweek1` INT NOT NULL, + CHANGE COLUMN `lweek2` `lweek2` INT NOT NULL, + CHANGE COLUMN `lweek3` `lweek3` INT NOT NULL, + CHANGE COLUMN `lweek4` `lweek4` INT NOT NULL, + CHANGE COLUMN `lweek5` `lweek5` INT NOT NULL, + CHANGE COLUMN `lweek6` `lweek6` INT NOT NULL, + CHANGE COLUMN `lweek7` `lweek7` INT NOT NULL; + SELECT * FROM remcom; + + -- Destruye las tablas temporales creadas. + + DROP TEMPORARY TABLE last_year; + DROP TEMPORARY TABLE cur_year; + DROP TEMPORARY TABLE article_inventory; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `compresFromTicket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `compresFromTicket`(IN vTicketId BIGINT, IN vEntryId BIGINT) +BEGIN + + DECLARE vShipmentWarehouse INT; + DECLARE vShipmentDate INT; + + SELECT warehouse_id_out, shipment + INTO vShipmentWarehouse, vShipmentDate + FROM travel tr + JOIN Entradas e ON e.travel_id = tr.id + WHERE Id_Entrada = vEntryId; + + CALL item_last_buy_(vShipmentWarehouse,vShipmentDate); + + INSERT INTO Compres(Id_Article,Cantidad, Id_Entrada, Id_Cubo, Packing, grouping, caja, Costefijo, Etiquetas) + SELECT m.Id_Article, + m.Cantidad, + vEntryId, + c.Id_Cubo, + c.Packing, + IF(c.grouping,c.grouping,1), + c.caja, + buyingAbsoluteCost(c.Id_Compra) Costefijo, + ifnull(floor(m.Cantidad / c.Packing),1) Etiquetas + FROM + Movimientos m + JOIN Articles a ON m.Id_Article = a.Id_Article + LEFT JOIN t_item_last_buy b ON m.Id_Article = b.item_id AND b.warehouse_id = vShipmentWarehouse + LEFT JOIN Compres c ON c.Id_Compra = b.buy_id + WHERE m.Id_Ticket = vTicketId; + + CALL buy_tarifas_entry(vEntryId); + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `CompresTriggerBeforeDelete` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `CompresTriggerBeforeDelete`(oldId INT, oldEntrada INT) +BEGIN + + DECLARE hasToRecalculate BOOLEAN; + DECLARE newWarehouse INT; + + SELECT Id_Compra INTO hasToRecalculate FROM vn.lastBuy lb + WHERE lb.id = oldId LIMIT 1; + + IF hasToRecalculate THEN + SELECT warehouse_id INTO newWarehouse FROM travel t + JOIN Entradas e ON t.id = e.travel_id + WHERE e.Id_Entrada = oldEntrada; + + CALL vn.lastBuyRefresh(newWarehouse); + END IF; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `compresTriggerBeforeInsert` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `compresTriggerBeforeInsert`(newNoVincular INT, newEntrada INT, newCompra INT, newItem INT) +BEGIN + DECLARE newWarehouse INTEGER; + + IF newNoVincular = FALSE THEN + + UPDATE travel t + JOIN vn.lastBuy lb ON newItem = lb.item AND t.warehouse_id = lb.warehouse + JOIN Entradas e ON e.travel_id = t.id + SET lb.id = newCompra + WHERE e.Id_Entrada = newEntrada AND t.landing > lb.landing AND t.landing <= CURDATE(); + + END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `compresTriggerBeforeUpdate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `compresTriggerBeforeUpdate`(vOldEntrada INT, vNewEntrada INT, oldItem INT, + newItem INT, newNoVincular BOOLEAN, newCompra INT) +BEGIN + DECLARE newWarehouse INTEGER; + DECLARE hasToRecalculate BOOLEAN; + + IF newNoVincular = FALSE THEN + IF oldItem <> newItem OR vOldEntrada <> vNewEntrada THEN + SELECT Id_Compra INTO hasToRecalculate FROM travel t + JOIN Entradas e ON e.travel_id = t.id + JOIN vn.lastBuy lb ON lb.id = newCompra + WHERE e.Id_Entrada = vOldEntrada LIMIT 1; + + IF hasToRecalculate THEN + SELECT warehouse_id INTO newWarehouse FROM travel t + JOIN Entradas e ON t.id = e.travel_id + WHERE e.Id_Entrada = vOldEntrada; + CALL vn.lastBuyRefresh(newWarehouse); + END IF; + END IF; + IF vOldEntrada <> vNewEntrada THEN + + UPDATE Entradas oldEntrada + JOIN travel oldTravel ON oldEntrada.travel_id = oldtravel.id + JOIN Entradas newEntrada ON newEntrada.Id_Entrada = vNewEntrada + JOIN travel newTravel ON newTravel.id = newEntrada.travel_id + JOIN vn.lastBuy lb ON newItem = lb.item AND newTravel.warehouse_id = lb.warehouse + SET lb.id = newCompra + WHERE oldEntrada.Id_Entrada = vOldEntrada AND oldTravel.warehouse_id <> newTravel.warehouse_id + AND newTravel.landing > lb.landing AND newTravel.landing <= CURDATE(); + END IF; + END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `confection_control_source` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `confection_control_source`(vScopeDays TINYINT) +BEGIN + + DECLARE vMidnight DATETIME DEFAULT TIMESTAMP(CURDATE(),'23:59:59'); + DECLARE vEndingDate DATETIME DEFAULT TIMESTAMPADD(DAY,vScopeDays,vMidnight); + DECLARE SAFE_ALERT_LEVEL INT DEFAULT 3; + + DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; + + CREATE TEMPORARY TABLE tmp.production_buffer + ENGINE = MEMORY + SELECT + date(t.Fecha) as Fecha, + hour(t.Fecha) as Hora, + hour(t.Fecha) as Departure, + t.Id_Ticket, + m.Id_Movimiento, + m.Cantidad, + m.Concepte, + ABS(m.Reservado) Reservado, + i.Categoria, + t.Alias as Cliente, + wh.name as Almacen, + t.warehouse_id, + cs.province_id, + a.agency_id, + ct.description as Taller, + stock.visible, + stock.available + FROM vn2008.Tickets t + JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia + JOIN vn2008.warehouse wh ON wh.id = t.warehouse_id + JOIN vn2008.Movimientos m ON m.Id_Ticket = t.Id_Ticket + JOIN vn2008.Articles i ON i.Id_Article = m.Id_Article + JOIN vn2008.Tipos tp ON tp.tipo_id = i.tipo_id + JOIN vn.confectionType ct ON ct.id = tp.confeccion + JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna + LEFT JOIN vn.ticketState tls on tls.ticket = t.Id_Ticket + LEFT JOIN + ( + SELECT item_id, sum(visible) visible, sum(available) available + FROM + ( + SELECT a.item_id, 0 as visible, a.available + FROM cache.cache_calc cc + LEFT JOIN cache.available a ON a.calc_id = cc.id + WHERE cc.cache_id IN (2,8) + AND cc.params IN (concat("1/", CURDATE()),concat("44/", CURDATE())) + + UNION ALL + + SELECT v.item_id, v.visible, 0 as available + FROM cache.cache_calc cc + LEFT JOIN cache.visible v ON v.calc_id = cc.id + where cc.cache_id IN (2,8) and cc.params IN ("1","44") + ) sub + GROUP BY item_id + ) stock ON stock.item_id = m.Id_Article + WHERE tp.confeccion + AND wh.hasConfectionTeam + AND t.Fecha BETWEEN CURDATE() AND vEndingDate + AND m.Cantidad > 0; + + -- Hora limite de preparación + + CALL production_buffer_set_priority; + + -- Entradas + + INSERT INTO tmp.production_buffer( + Fecha, + Id_Ticket, + Cantidad, + Concepte, + Categoria, + Cliente, + Almacen, + Taller + ) + SELECT + tr.shipment AS Fecha, + e.Id_Entrada AS Id_Ticket, + c.Cantidad, + a.Article, + a.Categoria, + whi.name as Cliente, + who.name as Almacen, + ct.description as Taller + FROM vn2008.Compres c + JOIN vn2008.Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN vn2008.travel tr ON tr.id = e.travel_id + JOIN vn2008.warehouse whi ON whi.id = tr.warehouse_id + JOIN vn2008.warehouse who ON who.id = tr.warehouse_id_out + JOIN vn2008.Articles a ON a.Id_Article = c.Id_Article + JOIN vn2008.Tipos tp ON tp.tipo_id = a.tipo_id + JOIN vn.confectionType ct ON ct.id = tp.confeccion + WHERE who.hasConfectionTeam + AND tp.confeccion + AND tr.shipment BETWEEN CURDATE() AND vEndingDate; + + + SELECT * FROM tmp.production_buffer; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `createBouquet` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `createBouquet`( + vName VARCHAR(50), + vType int, + vSize int, + vColour VARCHAR(5), + OUT vItem INT(11) + +) +BEGIN + DECLARE vDate DATE; + DECLARE vCodintrastat INT(11); + + -- COMPROBAMOS SI EXISTE UN ARTÍCULO IGUAL. + SELECT + Id_Article + INTO vItem FROM + Articles + WHERE + (Id_Article BETWEEN 161000 AND 169000) + AND Article LIKE CONCAT('%', vName) + AND tipo_id = vType + AND Medida = vSize + AND Color = vColour + LIMIT 1; + + -- SI NO EXISTE CREAMOS UNO NUEVO + IF vItem IS NULL THEN + + + -- OBTENER EL ID ENTRE 161000 Y 169000 DEL SIGUIENTE ARTÍCULO + SELECT (IF(MAX(Id_Article) IS NULL, 161000, (MAX(Id_Article) + 1))) INTO vItem FROM Articles WHERE Id_Article BETWEEN 161000 AND 169000; + + -- INSERTAR EL ARTÍCULO + INSERT INTO Articles(Id_Article, Article, tipo_id, Medida, color, id_origen) + VALUES ( + vItem, + vName, + vType, + vSize, + vColour, + 1 + ); + END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `createWorker` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `createWorker`( + vName VARCHAR(50), + vCognames VARCHAR(50), + vDNI VARCHAR(9), + vAddress TEXT, + vPostalCode VARCHAR(5), + vTown VARCHAR(25), + vProvince SMALLINT(5), + vCompany SMALLINT(5), + vPhone VARCHAR(11), + vMail VARCHAR(80) CHARSET utf8, + vDniExpiration DATETIME, + vEmployeeBoss INT +) +BEGIN + DECLARE vClient INT; + DECLARE vUser INT; + DECLARE vWorker INT; + DECLARE vWorkerCode VARCHAR(8); + DECLARE vPassword VARCHAR(50); + DECLARE vUsername VARCHAR(50) CHARSET utf8; + +############################################################################## +#### GENERAR CLIENTE +############################################################################## + + -- Comprobar si existe un cliente con el mismo DNI. + SELECT Id_cliente INTO vClient FROM vn2008.Clientes WHERE `if` = vDNI; + + -- Si no existe el cliente creamos uno nuevo. + IF vClient IS NULL THEN + + SELECT (MAX(Id_Cliente) + 1) INTO vClient FROM Clientes WHERE Id_Cliente < 999999; + + INSERT INTO Clientes (Id_Cliente, Cliente, Domicilio, `IF`, Telefono, province_id, Poblacion, CodPostal, RazonSocial, Contacto, Oficial, Descuento, Codpos, pay_met_id, Vencimiento, Credito) + SELECT vClient, Concat('TR ', vName, ' ', vCognames), vAddress, vDNI, vPhone, vProvince, vTown, vPostalCode, CONCAT(vCognames, ' ', vName), vName, 1, 3, vPostalCode, 4, 5, 300; + END IF; + +############################################################################## +#### GENERAR USUARIO +############################################################################## + + SET vUsername = LCASE(CONCAT(REPLACE(vName, ' ', ''), LEFT(vCognames, 1), MID(vCognames, (LOCATE(' ', vCognames) + 1), 1))); + + -- Generar nombre de usuario hasta que haya uno disponible. + WHILE (SELECT COUNT(*) FROM account.user WHERE `name`= vUsername) DO + SET vUsername = CONCAT(vUsername, (FLOOR(RAND() * 100))); + END WHILE; + + SET vPassword = CONCAT(IF(INSTR(vCognames,' ') = 0, vCognames, LEFT(vCognames, INSTR(vCognames,' ') - 1)), '.' , vClient); + + -- Comprobamos si existe un usuario con el mismo ID de cliente. + IF NOT (SELECT COUNT(*) FROM account.user where id = vClient) THEN + + -- Alta del usuario. + INSERT INTO account.user (id, role, `name`, `password`, active) VALUES (vClient, 1, LCASE(vUsername), MD5(LCASE(vPassword)), 1); + SET vUser = vClient; + INSERT INTO account.account (id, lastchange, `expire`) values (vClient, CURRENT_DATE(), CURRENT_DATE()); + ELSE + + -- Alta del usuario. + INSERT INTO account.user (role, `name`, `password`, active) VALUES (1, LCASE(vUsername), MD5(LCASE(vPassword)), 1); + SET vUser = LAST_INSERT_ID(); + INSERT INTO account.account (id, lastchange ,`expire`) values (vUser, CURRENT_DATE(), CURRENT_DATE()); + END IF; + +############################################################################## +#### GENERAR TRABAJADOR +############################################################################## + + SET vWorkerCode = CONCAT(LEFT(vName, 1), LEFT(vCognames, 1), MID(vCognames, (LOCATE(' ', vCognames) + 1), 1)); + + -- Generar código de trabajador hasta que haya uno disponible. + IF (SELECT COUNT(*) FROM Trabajadores WHERE CodigoTrabajador = vWorkerCode) THEN + SET vWorkerCode = "001"; + END IF; + + -- Comprobamos si ya existe un trabajador con el mismo DNI. + IF NOT (SELECT COUNT(*) FROM Trabajadores WHERE dni = vDNI) THEN + + -- Alta en la tabla trabajadores. + INSERT INTO Trabajadores (CodigoTrabajador, Nombre, Apellidos, `Password`, dni, empresa_id, user_id, boss, DniExpiration) + VALUES (vWorkerCode, vName, vCognames, LCASE(vPassword), vDNI, vCompany, vUser, vEmployeeBoss, VDniExpiration); + + SET vWorker = LAST_INSERT_ID(); + ELSE + UPDATE Trabajadores SET user_id = vUser WHERE dni = vDNI; + END IF; + +############################################################################## +#### REENVIO EMAIL +############################################################################## + + IF vMail IS NOT NULL AND NOT (SELECT COUNT(*) FROM account.mailForward WHERE forwardTo = vMail) THEN + INSERT INTO account.mailForward (account, forwardTo) VALUES (vUser, vMail); + UPDATE Trabajadores SET email = CONCAT(vUsername, '@verdnatura.es') WHERE user_id = vUser; + END IF; + + -- Devolver información generada + SELECT vUser, vWorker, vPassword, vUsername; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `credit_update` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `credit_update`() +BEGIN + +DECLARE dblDiferencia DOUBLE DEFAULT 10.0; +DECLARE dblImporteRec,auxdblImporteRec DOUBLE DEFAULT 0.0; +DECLARE dblImporteFac,auxdblImporteFac DOUBLE DEFAULT 0.0; +DECLARE intIdRecibo,auxintIdRecibo INT (11) DEFAULT 0; +DECLARE intId_Cliente,auxintId_Cliente,intId_ClienteRec,auxintId_ClienteRec INT DEFAULT 0; +DECLARE bitFin,bitFinRecord,bitFinRecord1 BIT DEFAULT 0; +DECLARE datFechaVencimiento DATE DEFAULT CURDATE(); +DECLARE intEmpresa_id INT DEFAULT 0; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `customerDebtEvolution` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `customerDebtEvolution`(IN vCustomer INT) +BEGIN + +SELECT * FROM +( + SELECT day, date, @s:= round(IFNULL(Euros,0) + @s,2) as Saldo, Euros, Credito, 0 as Cero + FROM + ( + SELECT day, date, IFNULL(Euros,0) as Euros, Credito + FROM time + JOIN (SELECT @s:= 0, - Credito as Credito FROM Clientes WHERE Id_Cliente = vCustomer) c + LEFT JOIN + (SELECT Euros, date(Fecha) as Fecha FROM + ( + SELECT Fechacobro as Fecha, Entregado as Euros + FROM Recibos + WHERE Id_Cliente = vCustomer + AND Fechacobro >= '2017-01-01' + UNION ALL + SELECT paymentday(f.Fecha,c.Vencimiento), - Importe + FROM Facturas f + JOIN Clientes c ON f.Id_Cliente = c.Id_Cliente + WHERE f.Id_Cliente = vCustomer + AND Fecha >= '2017-01-01' + UNION ALL + SELECT '2016-12-31', Debt + FROM bi.customerDebtInventory + WHERE Id_Cliente = vCustomer + UNION ALL + SELECT Fecha, - SUM(Cantidad * Preu * (100 - Descuento ) * 1.10 / 100) + FROM Tickets t + JOIN Movimientos m on m.Id_Ticket = t.Id_Ticket + WHERE Id_Cliente = vCustomer + AND Factura IS NULL + AND Fecha >= '2017-01-01' + GROUP BY Fecha + ) sub2 + ORDER BY Fecha + )sub ON time.date = sub.Fecha + WHERE time.date BETWEEN '2016-12-31' AND CURDATE() + ORDER BY date + ) sub3 +)sub4 +; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `cycDueDateClassification` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `cycDueDateClassification`(vCompany INT,vDate DATE) +BEGIN + + SELECT Fecha, Clasificacion, CAST(SUM(Importe) AS DECIMAL(10,2)) as Importe, empresa_id + FROM + ( + SELECT CASE + WHEN C.Vencimiento <= 30 THEN '0-30 dias' + WHEN C.Vencimiento BETWEEN 31 AND 60 THEN '31-60 dias' + WHEN C.Vencimiento BETWEEN 61 AND 90 THEN '61-90 dias' + ELSE '> 90 dias' + END AS Clasificacion, + F.Importe, + C.Fecha, + F.empresa_id + + FROM cyc_declaration C + JOIN Facturas F USING(factura_id) + WHERE C.Riesgo > 0 AND C.Fecha = vDate AND F.empresa_id = vCompany + + ) cyc + GROUP BY Fecha, Clasificacion, empresa_id; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `cycGeneralClassification` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `cycGeneralClassification`(vCompany INT,vDate DATE) +BEGIN + SELECT Fecha, Clasificacion, CAST(SUM(Importe) AS DECIMAL(10,2)) as Importe, empresa_id + FROM + ( + SELECT CASE IFNULL(C.Riesgo,-1) + WHEN 0 THEN 'No aseguradas' + WHEN -1 THEN 'Clasificacion nada' + ELSE 'Asegurados' + END AS Clasificacion, + F.Importe, + C.Fecha, + F.empresa_id + + FROM cyc_declaration C + JOIN Facturas F ON F.factura_id = C.factura_id + WHERE C.Fecha = vDate AND F.empresa_id = vCompany + + ) cyc + GROUP BY Fecha, Clasificacion, empresa_id; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `cycNoInsurancedClassification` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `cycNoInsurancedClassification`(vCompany INT,vDate DATE) +BEGIN + +SELECT 'ORG. PUBLICOS' AS Tipo, C.Fecha, CAST(SUM(F.Importe) AS DECIMAL(10,2)) as Importe, F.empresa_id + + FROM cyc_declaration C + INNER JOIN Facturas F USING(factura_id) + JOIN Clientes CL USING(Id_Cliente) + WHERE C.Riesgo IS NULL + AND LEFT(CL.`IF`,1) = 'G' + AND C.Fecha = vDate AND F.empresa_id = vCompany + +GROUP BY Fecha, F.empresa_id + +UNION ALL + +SELECT 'VINCULADAS' , C.Fecha, CAST(SUM(F.Importe) AS DECIMAL(10,2)) as Importe, F.empresa_id + + FROM cyc_declaration C + INNER JOIN Facturas F USING(factura_id) + WHERE C.Riesgo IS NULL + AND F.Id_Cliente IN(2066, 2067) + AND C.Fecha = vDate AND F.empresa_id = vCompany + +GROUP BY Fecha, F.empresa_id + +UNION ALL + +SELECT 'CONTADO', C.Fecha, CAST(SUM(F.Importe) AS DECIMAL(10,2)) as Importe, F.empresa_id + + FROM cyc_declaration C + INNER JOIN Facturas F USING(factura_id) + JOIN Clientes CL USING(Id_Cliente) + WHERE C.Riesgo IS NULL + AND pay_met_id = 1 + AND LEFT(CL.`IF`,1) <> 'G' + AND F.Id_Cliente NOT IN(2066, 2067) + AND C.Fecha = vDate AND F.empresa_id = vCompany + +GROUP BY Fecha, F.empresa_id + +UNION ALL + +SELECT 'OTROS', C.Fecha, CAST(SUM(F.Importe) AS DECIMAL(10,2)) as Importe, F.empresa_id + + FROM cyc_declaration C + INNER JOIN Facturas F USING(factura_id) + JOIN Clientes CL USING(Id_Cliente) + WHERE C.Riesgo IS NULL + AND pay_met_id <> 1 + AND LEFT(CL.`IF`,1) <> 'G' + AND F.Id_Cliente NOT IN(2066, 2067) + AND C.Fecha = vDate AND F.empresa_id = vCompany + +GROUP BY Fecha, F.empresa_id + + +; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `cyc_mensual` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `cyc_mensual`(IN datFEC DATE) +BEGIN + +REPLACE cyc_declaration(factura_id, Riesgo, Fecha, Vencimiento) +SELECT F.factura_id, R.Riesgo, @fecha, IFNULL(C.Vencimiento,0) +FROM Facturas F +INNER JOIN Clientes C ON F.Id_Cliente = C.Id_Cliente +INNER JOIN empresa E ON E.id = F.empresa_id +LEFT JOIN + ( SELECT * + FROM ( + SELECT Id_Cliente, Riesgo + FROM cyc + WHERE Fecha <= @fecha:= TIMESTAMPADD(DAY, -1 * DAY(datFEC), datFEC) + ORDER BY Fecha DESC + ) sub + GROUP BY Id_Cliente + ) R ON F.Id_Cliente = R.Id_Cliente +WHERE E.cyc +AND periodo(Fecha) = periodo(@fecha) +; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `cyc_report2kk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `cyc_report2kk`() +BEGIN + +SELECT Fecha, Clasificacion, CAST(SUM(Importe) AS DECIMAL(10,2)) as Importe, empresa_id +FROM +( + SELECT CASE + WHEN C.Vencimiento <= 30 THEN '0-30 dias' + WHEN C.Vencimiento BETWEEN 31 AND 60 THEN '31-60 dias' + WHEN C.Vencimiento BETWEEN 61 AND 90 THEN '61-90 dias' + ELSE '> 90 dias' + END AS Clasificacion, + F.Importe, + C.Fecha, + F.empresa_id + + FROM cyc_declaration C + INNER JOIN Facturas F USING(factura_id) + WHERE C.Riesgo > 0 + +) cyc +GROUP BY Fecha, Clasificacion, empresa_id; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `cyc_reportkk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `cyc_reportkk`() +BEGIN + +SELECT Fecha, Clasificacion, CAST(SUM(Importe) AS DECIMAL(10,2)) as Importe, empresa_id +FROM +( + SELECT CASE IFNULL(C.Riesgo,-1) + WHEN 0 THEN 'No aseguradas' + WHEN -1 THEN 'Sin clasificar' + ELSE 'Asegurados' + END AS Clasificacion, + F.Importe, + C.Fecha, + F.empresa_id + + FROM cyc_declaration C + INNER JOIN Facturas F USING(factura_id) + +) cyc +GROUP BY Fecha, Clasificacion, empresa_id; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `defaulterRanking` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `defaulterRanking`() +BEGIN + +SELECT + c.Id_Cliente, + hasChanged, + Cliente, + amount as Deuda, + CodigoTrabajador, + CyC, + Apuntador, + Fecha_obs, + last_obs, + defaulterSince +from + bi.defaulters d + join + ( + SELECT customer_id Id_Cliente,SUM(amount) AS Saldo + FROM bi.customerRiskOverdue + GROUP BY customer_id + ) saldos ON saldos.Id_Cliente = d.client + join + Clientes c on c.Id_Cliente = d.client + join + Trabajadores t USING (Id_Trabajador) +left join +( +SELECT Id_Cliente, last_obs, CodigoTrabajador as Apuntador, Fecha as Fecha_obs +FROM +( +SELECT Id_Cliente, `text` as last_obs, CodigoTrabajador, client_observation.odbc_date as Fecha +FROM client_observation +JOIN Trabajadores using(Id_Trabajador) +order by client_observation.odbc_date desc +) sub GROUP BY Id_Cliente +) obs on obs.Id_Cliente = d.client +WHERE +date = CURDATE() +and amount > 0 +and not (Saldo > amount AND amount < 0) +and CodigoTrabajador not in ('CYC','BUD','EJE') +ORDER BY amount DESC; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `desglose_volume` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `desglose_volume`(IN agency_id INT) +BEGIN + DECLARE v_start DATETIME DEFAULT TIMESTAMP(CURDATE()); + DECLARE v_end DATETIME DEFAULT TIMESTAMP(CURDATE(), '23:59:59'); + + SET v_start = IF(WEEKDAY(CURDATE()), CURDATE(),TIMESTAMPADD(DAY,-1,CURDATE())); + SET v_start = IF(CURDATE() = '2014-05-02', '2014-05-01',v_start); + + DROP TEMPORARY TABLE IF EXISTS zeleVOL; + CREATE TEMPORARY TABLE zeleVOL + ( + Id_Ticket INT PRIMARY KEY + ,Provincia VARCHAR(30) + ,Bultos INT DEFAULT 0 + ,Faltan INT DEFAULT 0 + ); + + -- Insertamos los tickets que ya tienen la linea de portes + + INSERT INTO zeleVOL(Provincia, Id_Ticket, Bultos) + SELECT p.name, t.Id_Ticket, sum(m.Cantidad) + FROM Tickets t + JOIN Consignatarios c USING(Id_Consigna) + JOIN province p ON c.province_id = p.province_id + JOIN Movimientos m USING(Id_Ticket) + JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia + JOIN warehouse_joined wj ON wj.warehouse_id = t.warehouse_id + WHERE m.Id_Article = 71 + AND wj.warehouse_alias_id = 1 -- El 1 equivale a Silla (SillaFV-SillaPCA) + AND t.Fecha BETWEEN v_start AND v_end + AND a.agency_id = agency_id + GROUP BY p.name, Id_Ticket; + + -- Insertamos los tickets que ya tienen expediciones, que fallaran si se repite la clave primaria. + + INSERT INTO zeleVOL(Provincia, Id_Ticket, Bultos) + SELECT p.name, e.ticket_id, COUNT(e.ticket_id) + FROM expeditions e + JOIN Tickets t ON ticket_id = Id_Ticket + JOIN Consignatarios c USING(Id_Consigna) + JOIN province p ON c.province_id = p.province_id + JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia + JOIN warehouse_joined wj ON wj.warehouse_id = t.warehouse_id + WHERE e.odbc_date BETWEEN v_start AND v_end + AND wj.warehouse_alias_id = 1 -- El 1 equivale a Silla (SillaFV-SillaPCA) + AND a.agency_id = agency_id + GROUP BY p.name, ticket_id + ON DUPLICATE KEY UPDATE Bultos = Bultos; + + -- Por encajar + + INSERT INTO zeleVOL(Provincia, Id_Ticket, Faltan) + SELECT province, Id_Ticket, COUNT(Id_Ticket) as Faltan + FROM + ( + SELECT p.name AS province, Id_Ticket, COUNT(Id_Movimiento) l, SUM(Cantidad) c + FROM Movimientos m + JOIN Tickets t USING(Id_Ticket) + JOIN Consignatarios c USING(Id_Consigna) + JOIN province p ON c.province_id = p.province_id + JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia + LEFT JOIN expeditions e ON t.Id_Ticket = e.ticket_id + JOIN warehouse_joined wj ON wj.warehouse_id = t.warehouse_id + WHERE Fecha BETWEEN v_start AND v_end + AND wj.warehouse_alias_id = 1 -- El 1 equivale a Silla (SillaFV-SillaPCA) + AND a.agency_id = agency_id + AND (Bultos = 0 AND expeditions_id IS NULL AND EtiquetasEmitidas = 0) + GROUP BY p.name, Id_Ticket + ) sub GROUP BY province + ON DUPLICATE KEY UPDATE Faltan = Faltan; + + -- Mostramos el resultado + + SELECT Provincia, COUNT(Id_Ticket) expediciones, SUM(Bultos) Bultos, SUM(Faltan) Prevision + FROM zeleVOL + GROUP BY Provincia; + + DROP TEMPORARY TABLE IF EXISTS zeleVOL; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `dif_porte` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `dif_porte`(IN datFEC DATE) +BEGIN + +/* Calcula los greuges de porte que no coinciden con lo esperado +/ +/ +/ +*/ + + +drop temporary table if exists tmp.bionic_porte; +create temporary table tmp.bionic_porte +select Id_Ticket, sum(Valor * Cantidad) as bionic +from vn2008.Movimientos m +join vn2008.Movimientos_componentes mc using(Id_Movimiento) +where Id_Componente = 15 +group by Id_Ticket; + +ALTER TABLE tmp.bionic_porte +ADD KEY bp_Id_Ticket_ix (Id_Ticket); + + +drop temporary table if exists tmp.shipping_porte; +create temporary table tmp.shipping_porte +select Id_Ticket, shipping_charge from vn2008.v_expeditions_shipping_charge where Fecha >= datFEC; + +ALTER TABLE tmp.shipping_porte +ADD KEY sp_Id_Ticket_ix (Id_Ticket); + + +drop temporary table if exists tmp.greuge_porte; +create temporary table tmp.greuge_porte +select Id as Id_Greuge, cast(right(Comentario,7) as decimal(10,0)) Id_Ticket, Importe +FROM vn2008.Greuges +where Comentario like 'dif_porte%'; +ALTER TABLE tmp.greuge_porte +ADD KEY Id_Ticket_ix (Id_Ticket); +select * from tmp.greuge_porte; + + + +SELECT Id_Ticket,shipping_charge as Teorico, bionic as Practico, Importe as Greuge, shipping_charge - bionic - Importe as dif +FROM tmp.shipping_porte +join tmp.greuge_porte using(Id_Ticket) +join tmp.bionic_porte using(Id_Ticket) + +; + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Ditacio` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Ditacio`(IN intId INT,IN straccion varchar(100),IN strtabla CHAR(1),IN intIdTrabajador INT, +IN straccion_old VARCHAR(100),IN straccion_new VARCHAR(100)) +proc_label:BEGIN + + DECLARE intlengthaccion TINYINT; + DECLARE strtabla_dits VARCHAR(35); + + SELECT CASE + WHEN strtabla='A' THEN 'Articles_dits' + WHEN strtabla='I' THEN 'Inventario_dits' + WHEN strtabla='E' THEN 'Entradas_dits' + WHEN strtabla='T' THEN 'Tickets_dits' + WHEN strtabla='C' THEN 'Clientes_dits' + WHEN strtabla='V' THEN 'travel_dits' + WHEN strtabla='R' THEN 'Rutas_dits' + WHEN strtabla='G' THEN 'Agencias_dits' + WHEN strtabla='S' THEN 'salarioDits' + ELSE NULL + END + INTO strtabla_dits; + + IF (strtabla_dits IS NULL) + THEN LEAVE proc_label; + END IF; + + SET @intIdTrabajador = intIdTrabajador; + SET @intId = intId; + SET @strvalue_old = straccion_old; + SET @strvalue_new = straccion_new; + SET @intidaccion = NULL; + + SELECT idaccion_dits + INTO @intidaccion + FROM accion_dits + WHERE accion=left(straccion,CHAR_LENGTH(accion)) + ORDER BY CHAR_LENGTH(accion) DESC + LIMIT 1; + + IF @intidaccion IS null THEN -- idaccion genèric per a evitar errors en cas de no existir + SET @intidaccion = 103; + END IF; + + SET @SQL=CONCAT('INSERT INTO ',strtabla_dits,' (idaccion_dits,Id_Trabajador,Id_Ticket,value_old,value_new) + VALUES (?,?,?,?,?)'); + + PREPARE stmt1 FROM @SQL; + EXECUTE stmt1 USING @intidaccion,@intIdTrabajador,@intId,@strvalue_old,@strvalue_new; + DEALLOCATE PREPARE stmt1; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `emailYesterdayPurchasesByConsigna` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `emailYesterdayPurchasesByConsigna`(IN v_Date DATE, IN v_Client_Id INT) +BEGIN + + +DECLARE MyIdTicket BIGINT; +DECLARE MyAlias VARCHAR(50); +DECLARE MyDomicilio VARCHAR(255); +DECLARE MyPoblacion VARCHAR(25); +DECLARE MyImporte DOUBLE; +DECLARE MyMailTo VARCHAR(250); +DECLARE MyMailReplyTo VARCHAR(250); +DECLARE done INT DEFAULT FALSE; +DECLARE emptyList INT DEFAULT 0; +DECLARE txt TEXT; + +DECLARE rs CURSOR FOR +SELECT t.Id_Ticket, Alias, cast(amount as decimal(10,2)) Importe, Domicilio, POBLACION +FROM Tickets t +JOIN Consignatarios cs on t.Id_Consigna = cs.Id_Consigna +JOIN v_ticket_amount v on v.Id_Ticket = t.Id_Ticket +WHERE t.Fecha BETWEEN v_Date AND dayend(v_Date) +AND t.Id_Cliente = v_Client_Id; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +SET v_Date = IFNULL(v_Date, util.yesterday()); + +OPEN rs; + +FETCH rs INTO MyIdTicket, MyAlias, MyImporte, MyDomicilio, MyPoblacion; + +SET emptyList = done; + +SET txt = CONCAT('

    ', + '

    Relación de envíos.

    ', + '

    Dia: ', v_Date, '

    '); + +WHILE NOT done DO + + SET txt = CONCAT(txt, '

    ', + ' + + + + + + +
    + Ticket ', MyIdTicket,' ', MyImporte, ' €
    ' + , ' ', MyAlias, '
    ' + , ' ', MyDomicilio, '(', MyPoblacion, ')'); + +FETCH rs INTO MyIdTicket, MyAlias, MyImporte, MyDomicilio, MyPoblacion; + +END WHILE; + + +SET txt = CONCAT(txt, + '', + '', + '
    ', + '

    Puede acceder al detalle de los albaranes haciendo click sobre el número de Ticket', + '

    Muchas gracias por su confianza

    ', + '

    '); + +-- Envío del email +IF emptyList = 0 THEN + + SELECT CONCAT(`e-mail`,',pako@verdnatura.es') INTO MyMailTo + FROM Clientes + WHERE Id_Cliente = v_Client_Id AND `e-mail`>''; + + IF v_Client_Id = 7818 THEN -- LOEWE + + SET MyMailTo = 'isabel@elisabethblumen.com,emunozca@loewe.es,pako@verdnatura.es'; + + END IF; + + INSERT INTO mail(`to`, reply_to, subject, text) + VALUES (IFNULL(MyMailTo,'pako.natek@gmail.com'),'pako@verdnatura.es','Resumen de pedidos preparados',txt); + +END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `emailYesterdayPurchasesLauncher` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `emailYesterdayPurchasesLauncher`() +BEGIN + +DECLARE done INT DEFAULT 0; +DECLARE vMyClientId INT; + +DECLARE rs CURSOR FOR +SELECT Id_Cliente +FROM Clientes +WHERE EYPBC != 0; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +OPEN rs; + +FETCH rs INTO vMyClientId; + +WHILE NOT done DO + + CALL emailYesterdayPurchasesByConsigna(util.yesterday(), vMyClientId); + + FETCH rs INTO vMyClientId; + +END WHILE; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `embalajes_stocks` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `embalajes_stocks`(IN idPEOPLE INT, IN bolCLIENT BOOLEAN) +BEGIN + +if bolCLIENT then + + select m.Id_Article, Article, - cast(sum(m.Cantidad) as decimal) as Saldo + from Movimientos m + join Articles a on m.Id_Article = a.Id_Article + join Tipos tp on tp.tipo_id = a.tipo_id + join Tickets t using(Id_Ticket) + join Consignatarios cs using(Id_Consigna) + where cs.Id_Cliente = idPEOPLE + and Tipo = 'Contenedores' + and t.Fecha > '2010-01-01' + group by m.Id_Article; + +else + +select Id_Article, Article, sum(Cantidad) as Saldo +from +(select Id_Article, Cantidad +from Compres c +join Articles a using(Id_Article) +join Tipos tp using(tipo_id) +join Entradas e using(Id_Entrada) +join travel tr on tr.id = travel_id +where Id_Proveedor = idPEOPLE +and landing >= '2010-01-01' +and reino_id = 6 + +union all + +select Id_Article, - Cantidad +from Movimientos m +join Articles a using(Id_Article) +join Tipos tp using(tipo_id) +join Tickets t using(Id_Ticket) +join Consignatarios cs using(Id_Consigna) +join proveedores_clientes pc on pc.Id_Cliente = cs.Id_Cliente +where Id_Proveedor = idPEOPLE +and reino_id = 6 +and t.Fecha > '2010-01-01') mov + +join Articles a using(Id_Article) +group by Id_Article; + +end if; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `embalajes_stocks_detalle` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `embalajes_stocks_detalle`(IN idPEOPLE INT, IN idARTICLE INT, IN bolCLIENT BOOLEAN) +BEGIN + + +if bolCLIENT then + + select m.Id_Article + , Article + , IF(Cantidad < 0, - Cantidad, NULL) as Entrada + , IF(Cantidad < 0, NULL, Cantidad) as Salida + , 'T' as Tabla + , t.Id_Ticket as Registro + , t.Fecha + , w.name as Almacen + , cast(Preu as Decimal(5,2)) Precio + , c.Cliente as Proveedor + , abbreviation as Empresa + from Movimientos m + join Articles a using(Id_Article) + join Tickets t using(Id_Ticket) + join empresa e on e.id = t.empresa_id + join warehouse w on w.id = t.warehouse_id + join Consignatarios cs using(Id_Consigna) + join Clientes c on c.Id_Cliente = cs.Id_Cliente + where cs.Id_Cliente = idPEOPLE + and m.Id_Article = idARTICLE + and t.Fecha > '2010-01-01'; + +else + +select Id_Article, Tabla, Registro, Fecha, Article +, w.name as Almacen, Entrada, Salida, Proveedor, cast(Precio as Decimal(5,2)) Precio + +from + +(select Id_Article + , IF(Cantidad > 0, Cantidad, NULL) as Entrada + , IF(Cantidad > 0, NULL,- Cantidad) as Salida + , 'E' as Tabla + , Id_Entrada as Registro + , landing as Fecha + , tr.warehouse_id + , Costefijo as Precio +from Compres c +join Entradas e using(Id_Entrada) +join travel tr on tr.id = travel_id +where Id_Proveedor = idPEOPLE +and Id_Article = idARTICLE +and landing >= '2010-01-01' + +union all + +select Id_Article + , IF(Cantidad < 0, - Cantidad, NULL) as Entrada + , IF(Cantidad < 0, NULL, Cantidad) as Salida + , 'T' + , Id_Ticket + , Fecha + , t.warehouse_id + , Preu +from Movimientos m +join Tickets t using(Id_Ticket) +join Consignatarios cs using(Id_Consigna) +join proveedores_clientes pc on pc.Id_Cliente = cs.Id_Cliente +where Id_Proveedor = idPEOPLE +and Id_Article = idARTICLE +and t.Fecha > '2010-01-01') mov + +join Articles a using(Id_Article) +join Proveedores p on Id_Proveedor = idPEOPLE +join warehouse w on w.id = mov.warehouse_id +; + +end if; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `EntradasTriggerBeforeDelete` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `EntradasTriggerBeforeDelete`(oldTravel INT, oldId INT) +BEGIN + + DECLARE hasToRecalculate BOOLEAN; + DECLARE newWarehouse INT; + + SELECT Id_Compra INTO hasToRecalculate FROM Compres c + JOIN vn.lastBuy lb ON lb.id = c.Id_Compra + WHERE c.Id_Entrada = newId LIMIT 1; + IF hasToRecalculate THEN + SELECT warehouse_id INTO newWarehouse FROM travel WHERE id = oldTravel; + CALL vn.lastBuyRefresh(newWarehouse); + END IF; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `EntradasTriggerBeforeUpdate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `EntradasTriggerBeforeUpdate`(oldTravel INT, newTravel INT, oldRedada BOOLEAN, + newRedada BOOLEAN, newId INT) +BEGIN + DECLARE newWarehouse INTEGER; + DECLARE hasToRecalculate BOOLEAN; + + IF oldRedada <> newRedada OR newTravel IS NULL THEN + + SELECT Id_Compra INTO hasToRecalculate FROM Compres c + JOIN vn.lastBuy lb ON lb.id = c.Id_Compra + WHERE c.Id_Entrada = newId LIMIT 1; + IF hasToRecalculate THEN + SELECT warehouse_id INTO newWarehouse FROM travel WHERE id = newtravel; + CALL vn.lastBuyRefresh(newWarehouse); + END IF; + END IF; + + IF newTravel <> oldTravel AND newTravel IS NOT NULL THEN + UPDATE travel t + JOIN Compres c ON c.Id_Entrada = newId + JOIN vn.lastBuy lb ON c.Id_Article = lb.item AND t.warehouse_id = lb.warehouse + SET lb.id = c.Id_Compra + WHERE t.id = newTravel AND t.landing BETWEEN date_inv() AND util.yesterday() + AND t.landing > lb.landing; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Entradas_Restar` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Entradas_Restar`(IN Id_Minuendo INT, IN Id_Sustraendo INT) +BEGIN + +UPDATE Compres c +JOIN +( + SELECT Id_Article, Cantidad + FROM Compres + WHERE Id_Entrada = Id_Sustraendo +) sub using(Id_Article) +SET c.Cantidad = c.Cantidad - sub.Cantidad +WHERE Id_Entrada = Id_Minuendo; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `entryFromOrder` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `entryFromOrder`(IN vShipmentWarehouse INTEGER, IN vLandingWarehouse INTEGER, IN vItem INTEGER, + IN vAmount INTEGER,IN vVolume INTEGER,vCost DECIMAL(10,2), IN vRetailedPrice DECIMAL(10,2), vInOutDate DATE) +BEGIN + + DECLARE vTravel INT; + DECLARE vEntry INT; + DECLARE vBucket VARCHAR(10); + + -- seleccionamos travel + SELECT id, Id_Entrada INTO vTravel, vEntry + FROM travel t LEFT JOIN Entradas e ON t.id = e.travel_id + WHERE t.landing = vInOutDate AND t.shipment = vInOutDate AND t.warehouse_id_out = vShipmentWarehouse + AND t.warehouse_id = vLandingWarehouse AND agency_id = 15 + LIMIT 1; + + -- creamos el travel si es necesario + IF NOT IFNULL(vTravel,0) THEN + INSERT INTO travel (shipment, landing, warehouse_id, warehouse_id_out, agency_id) + VALUES (vInOutDate, vInOutDate, vLandingWarehouse, vShipmentWarehouse, 15); + SELECT LAST_INSERT_ID() INTO vTravel; + END IF; + -- creamos la Entrada si es necesario + IF NOT IFNULL(vEntry,0) THEN + INSERT INTO Entradas (Id_Proveedor, travel_id) + VALUES (13, vTravel); -- proveedor 'MOVIMIENTO ALMACEN' + SELECT LAST_INSERT_ID() INTO vEntry; + END IF; + + -- creamos el cubo si es necesario + SELECT Id_Cubo INTO vBucket FROM Cubos WHERE Volumen = vVolume LIMIT 1; + + IF NOT IFNULL(vBucket,'') > '' THEN + INSERT INTO Cubos (Id_Cubo, Volumen) + VALUES (CONCAT('dm',vVolume/1000), vVolume); + SELECT LAST_INSERT_ID() INTO vBucket; + END IF; + + INSERT INTO Compres(Id_Article,Cantidad, Id_Entrada, Id_Cubo, Packing, grouping, caja, Costefijo, Portefijo, Embalajefijo, + Comisionfija, Tarifa2, Tarifa3) + VALUES(vItem, + vAmount, + vEntry, + vBucket, + 1, + 1, + 0, + vCost, + 0, + 0, + 0, + vRetailedPrice, + vRetailedPrice); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `entryFromTicket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `entryFromTicket`(IN vTicket INTEGER, IN vLandingWarehouse INTEGER) +BEGIN + + DECLARE vShipmentWarehouse INT; + DECLARE vLandingDate DATE; + DECLARE vShipmentDate DATE; + DECLARE vTravel INT; + DECLARE vEntry INT; + + SELECT warehouse_id, Fecha, Fecha INTO vShipmentWarehouse, vShipmentDate, vLandingDate FROM Tickets WHERE Id_Ticket = vTicket; + + -- seleccionamos travel + SELECT id, Id_Entrada INTO vTravel, vEntry + FROM travel t LEFT JOIN Entradas e ON t.id = e.travel_id + WHERE t.landing = vLandingDate AND t.shipment = vShipmentDate AND t.warehouse_id_out = vShipmentWarehouse AND t.warehouse_id = vLandingWarehouse + AND agency_id = 15 + LIMIT 1; + + -- creamos el travel si es necesario + IF vTravel IS NULL THEN + select vLandingDate; + INSERT INTO travel (shipment, landing, warehouse_id, warehouse_id_out, agency_id) + VALUES (vShipmentDate, vLandingDate, vLandingWarehouse, vShipmentWarehouse, 15); + SELECT LAST_INSERT_ID() INTO vTravel; + END IF; + + -- creamos la Entrada si es necesario + IF vEntry IS NULL THEN + INSERT INTO Entradas (Id_Proveedor, travel_id) + VALUES (13, vTravel); -- proveedor 'MOVIMIENTO ALMACEN' + SELECT LAST_INSERT_ID() INTO vEntry; + END IF; + + CALL item_last_buy_(vShipmentWarehouse,vShipmentDate); + + INSERT INTO Compres(Id_Article,Cantidad, Id_Entrada, Id_Cubo, Packing, grouping, caja, Costefijo, Portefijo, Embalajefijo, + Comisionfija, Tarifa2, Tarifa3) + SELECT m.Id_Article, + m.Cantidad, + vEntry, + c.Id_Cubo, + c.Packing, + IF(c.grouping,c.grouping,1), + c.caja, + Costefijo, + c.Portefijo, + c.Embalajefijo, + c.Comisionfija, + m.Preu Tarifa2, + m.Preu Tarifa3 + FROM + Movimientos m + JOIN Articles a ON m.Id_Article = a.Id_Article + LEFT JOIN t_item_last_buy b ON m.Id_Article = b.item_id AND b.warehouse_id = vShipmentWarehouse + LEFT JOIN Compres c ON c.Id_Compra = b.buy_id + WHERE m.Id_Ticket = vTicket; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `entryWithItem` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `entryWithItem`(IN vShipmentWarehouse INTEGER, IN vLandingWarehouse INTEGER, + IN vItem INTEGER, IN vAmount INTEGER,IN vVolume INTEGER, IN vGrossMargin DECIMAL(10,2), vInOutDate DATE) +BEGIN + + DECLARE vLandingWarehouse INT; + DECLARE vLandingDate DATE; + DECLARE vShipmentDate DATE; + DECLARE vTravel INT; + DECLARE vEntry INT; + DECLARE vBucket VARCHAR(10); + + -- seleccionamos travel + SELECT id, Id_Entrada INTO vTravel, vEntry + FROM travel t LEFT JOIN Entradas e ON t.id = e.travel_id + WHERE t.landing = vInOutDate AND t.shipment = vInOutDate AND t.warehouse_id_out = vShipmentWarehouse + AND t.warehouse_id = vLandingWarehouse AND agency_id = 15 + LIMIT 1; + + -- creamos el travel si es necesario + IF NOT vTravel THEN + INSERT INTO travel (shipment, landing, warehouse_id, warehouse_id_out, agency_id) + VALUES (vShipmentDate, vLandingDate, vLandingWarehouse, vLandingWarehouse, 15); + SELECT LAST_INSERT_ID() INTO vTravel; + END IF; + + -- creamos la Entrada si es necesario + IF NOT vEntry THEN + INSERT INTO Entradas (Id_Proveedor, travel_id) + VALUES (13, vTravel); -- proveedor 'MOVIMIENTO ALMACEN' + SELECT LAST_INSERT_ID() INTO vEntry; + END IF; + + -- creamos el cubo si es necesario + SELECT Id_Cubo INTO vBucket FROM Cubos WHERE Volumen = vVolume LIMIT 1; + IF vBucket IS NULL THEN + INSERT INTO Cubos (Id_Cubo, Volumen) + VALUES (CONCAT('dm',vVolume/1000), vVolume); + SELECT LAST_INSERT_ID() INTO vBucket; + END IF; + + INSERT INTO Compres(Id_Article,Cantidad, Id_Entrada, Id_Cubo, Packing, grouping, caja, Costefijo, Portefijo, Embalajefijo, + Comisionfija, Tarifa2, Tarifa3) + SELECT vItem, + vAmount, + vEntry, + vBucket, + 1 Packing, + 1 grouping, + 0 caja, + SUM(m.Preu), + 0 Portefijo, + 0 Embalajefijo, + 0 Comisionfija, + SUM(m.Preu) + vGrossMargin Tarifa2, + SUM(m.Preu) + vGrossMargin Tarifa3 + FROM + Movimientos m + WHERE m.Id_Ticket = vTicket; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `envios_masivos` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `envios_masivos`(IN idTICKET INT, IN IdCONSIGNA_DESDE INT, IN IdCONSIGNA_HASTA INT) +BEGIN + +-- Se trata de clonar el ticket semilla para todos los consignatarios del rango, con los movimientos que contenga + +-- Insertamos los tickets + +INSERT INTO Tickets(Id_Consigna, Id_Cliente, warehouse_id, Fecha, Alias, Tipo, Id_Trabajador, empresa_id, Id_Agencia) +SELECT c.Id_Consigna, t.Id_Cliente, t.warehouse_id, t.Fecha, c.Consignatario, t.Tipo, t.Id_Trabajador, t.empresa_id, t.Id_Agencia +FROM Tickets t +JOIN Consignatarios c +WHERE Id_Ticket = idTICKET +AND c.Id_Consigna BETWEEN IdCONSIGNA_DESDE AND IdCONSIGNA_HASTA; + + +-- Insertamos los movimientos + +INSERT INTO Movimientos(Id_Article, Concepte, Cantidad, Preu, PrecioFijado, Id_Ticket) +SELECT Id_Article, Concepte, Cantidad, Preu, TRUE , t.Id_Ticket +FROM Tickets t +JOIN Movimientos m +WHERE m.Id_Ticket = idTICKET +AND t.Id_Consigna BETWEEN IdCONSIGNA_DESDE AND IdCONSIGNA_HASTA; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `etiqueta_sambori` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `etiqueta_sambori`(IN lngEXPEDITION BIGINT, IN intMODE INT, IN intH INT, IN intFILAS INT) +BEGIN + +DECLARE intCOLUMNAS INT; +DECLARE intBULTOS INT; +DECLARE intDESCARGAS INT; +DECLARE intRUTA INT; +DECLARE intPOSICIONES INT; + + + +SELECT Id_Ruta INTO intRUTA +FROM Tickets t +JOIN expeditions e on e.ticket_id = t.Id_Ticket +WHERE e.expeditions_id = lngEXPEDITION; + + +SELECT sum(Bultos) , count(*) , CEIL(SUM(CEIL(Bultos / intH)) / intFILAS), SUM(CEIL(Bultos / intH)) + INTO intBULTOS,intDESCARGAS, intCOLUMNAS, intPOSICIONES +from +( +SELECT Id_Consigna, sum(Bultos) Bultos +FROM Tickets +WHERE Id_Ruta = intRUTA +group by Id_Consigna +) sub; + + + + +IF intMODE <> 2 THEN + + SELECT + CONCAT( IF(posicion_min MOD intFILAS = 0, intFILAS, posicion_min MOD intFILAS) + , MID(' BCDEFG',CEIL(posicion_min /intFILAS),1) + , IF(posicion_min = posicion_max,'',' - ') + , IF(posicion_min = posicion_max,'',IF(posicion_max MOD intFILAS = 0, intFILAS, posicion_max MOD intFILAS)) + , IF(posicion_min = posicion_max,'',MID(' BCDEFG',CEIL(posicion_max /intFILAS),1)) + + ) sambori, + t.Prioridad, + t.Id_Consigna, + CONCAT(e.counter, ' / ', t.Bultos) count_bultos, + e.expeditions_id, + zone, + Matricula Vehiculo, + trab.CodigoTrabajador Chofer, + Rutas.Id_Ruta, + RIGHT(Rutas.Id_Ruta, 2) Id_RutaSTR, + t.Bultos TotalBultos, + RIGHT(e.expeditions_id,3) expeditions_IDSTR + FROM + expeditions e + JOIN + Tickets t ON e.ticket_id = t.Id_Ticket + JOIN + ( + select Prioridad, cast(@s - 1 as decimal(3,0)) as posicion_max, @s:= cast(@s - ubicaciones as decimal(3,0)) as posicion_min + from + ( + select t.Prioridad, sum(t.Bultos) as bultos, CEIL(sum(t.bultos) / intH) as ubicaciones, @s := intPOSICIONES + 1 + from Tickets t + where Id_Ruta = intRUTA + group by Prioridad) sub + + ) posiciones on posiciones.Prioridad = t.Prioridad + + JOIN + Consignatarios cs ON cs.Id_Consigna = t.Id_Consigna + JOIN + province p USING (province_id) + JOIN + Rutas ON t.Id_Ruta = Rutas.Id_Ruta + left JOIN + Vehiculos veh USING (Id_vehiculo) + left JOIN + Trabajadores trab ON Rutas.Id_Trabajador = trab.Id_Trabajador + WHERE + expeditions_id = lngEXPEDITION; +ELSE + + + SELECT + CEIL((SUM(IF(t.Prioridad > t1.Prioridad, + t1.Bultos, + 0)) + e.Counter) / CEIL(SUM(t1.Bultos) / 13)) sambori, + t.Prioridad, + t.Id_Consigna, + CONCAT(e.counter, ' / ', t.Bultos) count_bultos, + e.expeditions_id, + zone, + Matricula Vehiculo, + trab.CodigoTrabajador Chofer, + Rutas.Id_Ruta, + RIGHT(Rutas.Id_Ruta, 2) Id_RutaSTR, + t.Bultos TotalBultos, + RIGHT(e.expeditions_id,3) expeditions_IDSTR + FROM + expeditions e + JOIN + Tickets t ON e.ticket_id = t.Id_Ticket + JOIN + Tickets t1 ON t.Id_Ruta = t1.Id_Ruta + JOIN + Consignatarios cs ON cs.Id_Consigna = t.Id_Consigna + JOIN + province p USING (province_id) + JOIN + Rutas ON t1.Id_Ruta = Rutas.Id_Ruta + LEFT JOIN + Vehiculos veh USING (Id_vehiculo) + LEFT JOIN + Trabajadores trab ON Rutas.Id_Trabajador = trab.Id_Trabajador + WHERE + expeditions_id = lngEXPEDITION; +END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `etiqueta_sambori_2` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `etiqueta_sambori_2`(IN lngEXPEDITION BIGINT, IN intMODE INT, IN intH INT, IN intFILAS INT) +BEGIN + +DECLARE intCOLUMNAS INT; +DECLARE intBULTOS INT; +DECLARE intDESCARGAS INT; +DECLARE intRUTA INT; +DECLARE intPOSICIONES INT; + + + +SELECT Id_Ruta INTO intRUTA +FROM Tickets t +JOIN expeditions e on e.ticket_id = t.Id_Ticket +WHERE e.expeditions_id = lngEXPEDITION; + + +SELECT sum(Bultos) , count(*) , CEIL(SUM(CEIL(Bultos / intH)) / intFILAS), SUM(CEIL(Bultos / intH)) + INTO intBULTOS,intDESCARGAS, intCOLUMNAS, intPOSICIONES +from +( +SELECT Id_Consigna, sum(Bultos) Bultos +FROM Tickets +WHERE Id_Ruta = intRUTA +group by Id_Consigna +) sub; + + + + +IF intMODE <> 2 THEN + + SELECT + CONCAT( IF(posicion_min MOD intFILAS = 0, intFILAS, posicion_min MOD intFILAS) + , MID(' BCDEFG',CEIL(posicion_min /intFILAS),1) + , IF(posicion_min = posicion_max,'',' - ') + , IF(posicion_min = posicion_max,'',IF(posicion_max MOD intFILAS = 0, intFILAS, posicion_max MOD intFILAS)) + , IF(posicion_min = posicion_max,'',MID(' BCDEFG',CEIL(posicion_max /intFILAS),1)) + + ) sambori, + t.Prioridad, + t.Id_Consigna, + CONCAT(e.counter, ' / ', t.Bultos) count_bultos, + e.expeditions_id, + zone, + Matricula Vehiculo, + trab.CodigoTrabajador Chofer, + Rutas.Id_Ruta, + RIGHT(Rutas.Id_Ruta, 2) Id_RutaSTR + FROM + expeditions e + JOIN + Tickets t ON e.ticket_id = t.Id_Ticket + JOIN + ( + select Prioridad, cast(@s - 1 as decimal(3,0)) as posicion_max, @s:= cast(@s - ubicaciones as decimal(3,0)) as posicion_min + from + ( + select t.Prioridad, sum(t.Bultos) as bultos, CEIL(sum(t.bultos) / intH) as ubicaciones, @s := intPOSICIONES + 1 + from Tickets t + where Id_Ruta = intRUTA + group by Prioridad) sub + + ) posiciones on posiciones.Prioridad = t.Prioridad + + JOIN + Consignatarios cs ON cs.Id_Consigna = t.Id_Consigna + JOIN + province p USING (province_id) + JOIN + Rutas ON t.Id_Ruta = Rutas.Id_Ruta + left JOIN + Vehiculos veh USING (Id_vehiculo) + left JOIN + Trabajadores trab ON Rutas.Id_Trabajador = trab.Id_Trabajador + WHERE + expeditions_id = lngEXPEDITION; +ELSE + + + SELECT + CEIL((SUM(IF(t.Prioridad > t1.Prioridad, + t1.Bultos, + 0)) + e.Counter) / CEIL(SUM(t1.Bultos) / 13)) sambori, + t.Prioridad, + t.Id_Consigna, + CONCAT(e.counter, ' / ', t.Bultos) count_bultos, + e.expeditions_id, + zone, + Matricula Vehiculo, + trab.CodigoTrabajador Chofer, + Rutas.Id_Ruta, + RIGHT(Rutas.Id_Ruta, 2) Id_RutaSTR + FROM + expeditions e + JOIN + Tickets t ON e.ticket_id = t.Id_Ticket + JOIN + Tickets t1 ON t.Id_Ruta = t1.Id_Ruta + JOIN + Consignatarios cs ON cs.Id_Consigna = t.Id_Consigna + JOIN + province p USING (province_id) + JOIN + Rutas ON t1.Id_Ruta = Rutas.Id_Ruta + LEFT JOIN + Vehiculos veh USING (Id_vehiculo) + LEFT JOIN + Trabajadores trab ON Rutas.Id_Trabajador = trab.Id_Trabajador + WHERE + expeditions_id = lngEXPEDITION; +END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `eti_list` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `eti_list`(IN wh_in INT) +BEGIN + +SELECT warehouse.name AS Alm_Origen + , travel.shipment + , travel.shipment_hour AS ETD + , warehouse_1.name AS Alm_Destino + , travel.landing + ,travel.landing_hour AS ETA + , awb.codigo AS awb + , Entradas.Id_Entrada + , Sum(Compres.Etiquetas) AS bultos + , Agencias.Agencia + , producer.name AS producer + , Proveedores.Proveedor + , Sum(Compres.Vida) AS Impresas + , producer.producer_id + , IFNULL((Entradas.Confirmada AND length(Entradas.Notas) > 0),0) as Ready_to_print + FROM Compres + INNER JOIN Entradas ON Entradas.Id_Entrada = Compres.Id_Entrada + INNER JOIN travel ON Entradas.travel_id = travel.id + INNER JOIN warehouse AS warehouse_1 ON warehouse_1.id = travel.warehouse_id + INNER JOIN warehouse ON warehouse.id = travel.warehouse_id_out + INNER JOIN Agencias ON Agencias.Id_Agencia = travel.agency_id + LEFT JOIN recibida_entrada ON Entradas.Id_Entrada = recibida_entrada.Id_Entrada + LEFT JOIN awb_recibida ON recibida_entrada.awb_recibida = awb_recibida.recibida_id + LEFT JOIN awb ON awb_recibida.awb_id = awb.id + INNER JOIN Articles ON Compres.Id_Article = Articles.Id_Article + LEFT JOIN producer ON Articles.producer_id = producer.producer_id + INNER JOIN Proveedores ON Entradas.Id_Proveedor = Proveedores.Id_Proveedor + + + WHERE wh_in IN (travel.warehouse_id_out, travel.warehouse_id) + AND travel.landing Between TIMESTAMPADD(DAY,-7,CURDATE()) and TIMESTAMPADD(DAY,14,CURDATE()) + GROUP BY warehouse.name, travel.shipment, travel.shipment_hour + , warehouse_1.name, travel.landing, travel.landing_hour + , awb.codigo, Entradas.Id_Entrada, Agencias.Agencia + , producer.name, Proveedores.Proveedor + ORDER BY travel.landing DESC; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `eti_to_print` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `eti_to_print`(IN idENTRADA INT, IN idPRODUCER INT) +BEGIN + +select Vida as Impresas + ,Etiquetas as bultos + ,Packing + ,Id_Article + ,CONCAT(Article,' ',Medida,' ', Categoria) as Articat + ,p.name as marca + ,Proveedor + ,Id_Entrada + ,Id_Compra +from Compres c +join Entradas e using(Id_Entrada) +join Proveedores using(Id_Proveedor) +join travel tr on tr.id = e.travel_id +join Articles a using(Id_Article) +left join producer p using(producer_id) +where Id_Entrada = idENTRADA + and idPRODUCER in (0,a.producer_id) ; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `f10_no_vincular` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `f10_no_vincular`(lngEntrada INTEGER) + DETERMINISTIC +BEGIN + DECLARE datFecha DATE DEFAULT CURDATE(); + +-- Modifica el NoVincular si hay dos entradas con el mismo Packing y el mismo Id_Articulo + DROP TEMPORARY TABLE IF EXISTS f10_no_vincular_; + CREATE TEMPORARY TABLE IF NOT EXISTS f10_no_vincular_ + SELECT c.Id_Entrada,c.Id_Compra,c.Id_Article, c.Novincular, c.Packing, be.pri + FROM Compres c + JOIN buy_edi be ON c.buy_edi_id = be.id AND be.fec = datFecha + LEFT JOIN Entradas_kop ek ON ek.Id_Entrada = c.Id_Entrada + WHERE + ((ek.Id_Entrada IS NOT NULL AND ek.sub IS NULL) + OR (c.Id_Entrada = 9200 AND be.ok <> FALSE) + OR c.Id_Entrada = lngEntrada) AND Id_Article <> 90; + + -- Modifica el NoVincular si hay dos entradas con el mismo Packing y el mismo Id_Articulo + DROP TEMPORARY TABLE IF EXISTS f10_mismo_Packing; + CREATE TEMPORARY TABLE IF NOT EXISTS f10_mismo_Packing + SELECT * FROM ( + SELECT * FROM f10_no_vincular_ + ORDER BY pri DESC) t + GROUP BY Id_Article,Packing + HAVING count(Id_Compra) > 1 AND BIT_OR(Id_Entrada = 9200); + + UPDATE Compres c + JOIN buy_edi be ON c.buy_edi_id = be.id AND be.fec = datFecha + JOIN f10_mismo_Packing f ON f.Id_Article = c.Id_Article AND c.Packing = f.Packing + LEFT JOIN Entradas_kop ek ON ek.Id_Entrada = f.Id_Entrada + SET c.Novincular = IF(c.Id_Compra = f.Id_Compra,0,1) + WHERE + ((ek.Id_Entrada IS NOT NULL AND ek.sub IS NULL) + OR (c.Id_Entrada = 9200 AND be.ok <> FALSE) + OR c.Id_Entrada = lngEntrada); + +-- Modifica el Id_Articulo si hay dos entradas con packing y el mismo Id_Articulo + DROP TEMPORARY TABLE IF EXISTS f10_mismo_Articulo; + CREATE TEMPORARY TABLE IF NOT EXISTS f10_mismo_Articulo + SELECT Id_Article FROM ( + SELECT * FROM ( + SELECT * FROM f10_no_vincular_ + ORDER BY Id_Entrada = 9200 DESC) t + GROUP BY Id_Article,Packing ) t + GROUP BY Id_Article HAVING COUNT(*) > 1 AND BIT_OR(Id_Entrada = 9200); + SELECT 4; + UPDATE Compres c + JOIN buy_edi be ON c.buy_edi_id = be.id AND be.fec = datFecha + JOIN f10_mismo_Articulo f ON f.Id_Article = c.Id_Article + LEFT JOIN Entradas_kop ek ON ek.Id_Entrada = c.Id_Entrada + SET c.Id_Article = 90 + WHERE c.Id_Entrada = 9200 AND be.ok <> FALSE; + + DROP TEMPORARY TABLE IF EXISTS f10_no_vincular_; + DROP TEMPORARY TABLE IF EXISTS f10_mismo_Packing; + DROP TEMPORARY TABLE IF EXISTS f10_mismo_Articulo; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `F5` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `F5`(IN idT BIGINT) +BEGIN +SELECT C.calidad, + LEFT(Article, 4) as Subtipo, + barcode, + 'ASEGURADO' AS asegurado, +/*CASE A.tipo_id +WHEN 75 THEN IF(M.Id_Article IN (120,2388,20100,16,10,130,104851,1,56,238,104850,104849,2),'RAMAJE',R.Reino) +WHEN 68 THEN IF(M.Id_Article IN (11539,10,14),'RAMAJE',R.Reino) +WHEN 69 THEN IF(M.Id_Article IN (41),'RAMAJE',R.Reino) +WHEN 72 THEN IF(M.Id_Article IN (238),'RAMAJE',R.Reino) +WHEN 2 THEN 'CYMBIDIUMS & ANTHURIUMS' +WHEN 122 THEN 'CYMBIDIUMS & ANTHURIUMS' +WHEN 12 THEN 'CYMBIDIUMS & ANTHURIUMS' +WHEN 13 THEN 'CYMBIDIUMS & ANTHURIUMS' +WHEN 14 THEN 'CYMBIDIUMS & ANTHURIUMS' +WHEN 15 THEN 'CYMBIDIUMS & ANTHURIUMS' +WHEN 71 THEN IF(LEFT(Article,2) = 'HC','Flor',R.Reino) +WHEN 19 THEN IF(LEFT(Article,3) IN ('HEL','GIN'),'CYMBIDIUMS & ANTHURIUMS',R.Reino) +WHEN 70 THEN IF(Article like '%red beauty%' or Article like '%clarinervium%','CYMBIDIUMS & ANTHURIUMS',R.Reino) +WHEN 86 THEN 'Flor' +ELSE R.Reino +END as*/ Reino, + /* +CASE A.tipo_id +WHEN 75 THEN IF(M.Id_Article IN (120,2388,20100,16,10,130,104851,1,56,238,104850,104849,2),-1,R.orden) +WHEN 68 THEN IF(M.Id_Article IN (11539,10,14),-1,R.orden) +WHEN 69 THEN IF(M.Id_Article IN (41),-1,R.orden) +WHEN 72 THEN IF(M.Id_Article IN (238),-1,R.orden) +WHEN 2 THEN 0 +WHEN 122 THEN 0 +WHEN 12 THEN 0 +WHEN 13 THEN 0 +WHEN 14 THEN 0 +WHEN 15 THEN 0 +WHEN 71 THEN IF(LEFT(Article,2) = 'HC',1,R.orden) +WHEN 19 THEN IF(LEFT(Article,3) IN ('HEL','GIN'),0,R.orden) +WHEN 70 THEN IF(Article like '%red beauty%' or Article like '%clarinervium%',0,R.orden) +WHEN 86 THEN 1 +ELSE R.orden +END as*/ R.orden, + CS.Consignatario, + T.Id_Cliente, + T.Id_Trabajador, + T.Id_Ticket, + T.Fecha, + M.Id_Article, + M.Cantidad, + M.quantity, + M.Cantidad / IF(nz(Gro.Grouping) = 0,1,nz(Gro.Grouping)) as Paquetes, + M.Concepte, + A.Medida, + A.Color, + A.Categoria, + O.Abreviatura as Origen, + T.Localizacion, + CT.CodigoTrabajador as Vendedor, + T.Bultos, + T.Observaciones, + Ag.Agencia Tipo, + TR.CodigoTrabajador, + /*0 Seguro,*/ + M.OK, + M.Reservado, + A.Tallos, + Gro.Grouping, + IF(`transaction`,right(concat('000000' ,M.Id_Article),6),M.Id_Movimiento) Id_Movimiento, + an.Nicho, + 'PEDIDO ASEGURADO' AS MSG, + T.Id_Ruta, + RT.Id_Vehiculo, + observation_type_id, + group_concat(IF(observation_type_id = 1,text,'') SEPARATOR '') 'sacador', + group_concat(IF(observation_type_id = 2,text,'') SEPARATOR '') 'encajador', + A.Foto, + M.Id_Movimiento movement_id, + lpad(ifnull(cooler_path_detail_id, an.Nicho),5,'0') as path, + M.Descuento,M.Preu, mm.valor as Preparado, mm.original_quantity + , p.`name` producer, T.warehouse_id, CS.POBLACION -- JGF 2016-02-16 +FROM + + Tickets T + LEFT JOIN Movimientos M USING(Id_Ticket) + LEFT JOIN Articles A on A.Id_Article = M.Id_Article + LEFT JOIN Articles_nicho an ON A.Id_Article = an.Id_Article AND an.warehouse_id = T.warehouse_id + LEFT JOIN producer p on p.producer_id = A.producer_id -- JGF 2016-02-16 + LEFT JOIN cooler_path_detail c on left(an.Nicho,3) = pasillo + LEFT JOIN Origen O ON A.id_origen = O.id + LEFT JOIN Clientes C USING(Id_Cliente) + LEFT JOIN Trabajadores CT ON C.Id_Trabajador = CT.Id_Trabajador + LEFT JOIN Trabajadores TR ON TR.Id_Trabajador = T.Id_Trabajador + INNER JOIN Consignatarios CS ON T.Id_Consigna = CS.Id_Consigna + INNER JOIN Agencias Ag ON Ag.Id_Agencia = T.Id_Agencia + LEFT JOIN ( + SELECT Id_Article, code as barcode + FROM barcodes + GROUP BY Id_Article + ) BC ON BC.Id_Article = A.Id_Article + LEFT JOIN Tipos TP USING(tipo_id) + LEFT JOIN reinos R ON TP.reino_id = R.id + LEFT JOIN Rutas RT USING(Id_Ruta) + LEFT JOIN ticket_observation tobs ON T.Id_Ticket = tobs.Id_ticket + AND (tobs.observation_type_id = 1 or tobs.observation_type_id = 2) + + LEFT JOIN ( + SELECT Id_Article, Grouping + FROM ( + SELECT landing, Id_Article, CASE caja + WHEN 0 THEN 1 + WHEN 2 THEN Packing + ELSE Grouping + END as Grouping + FROM Compres C + JOIN Entradas E USING(Id_Entrada) + JOIN travel TR ON TR.id = travel_id + WHERE warehouse_id = (SELECT warehouse_id FROM Tickets WHERE Id_Ticket = idT) + AND landing between (SELECT FechaInventario FROM tblContadores LIMIT 1) AND (SELECT date(Fecha) FROM Tickets WHERE Id_Ticket = idT) + ORDER BY landing DESC + ) GR1 + GROUP BY Id_Article + + ) Gro ON Gro.Id_Article = M.Id_Article + LEFT JOIN Movimientos_mark mm ON mm.Id_Movimiento = M.Id_Movimiento + + WHERE T.Id_Ticket = idT group by M.Id_Movimiento; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `F5_entrada` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `F5_entrada`(IN idE BIGINT) +BEGIN + + +SELECT + NULL AS Sacador, + NULL AS Encajador, + v.Cantidad / v.Packing AS Paquetes, + v.Packing AS Grouping, + barcode, + 'ASEGURADO' AS asegurado, + reino, + r.orden, + Alias AS Consignatario, + v.Id_Proveedor AS Id_Cliente, + v.Pedida, + v.Confirmada, + NULL AS vendedor, + 10 AS Calidad, + LPAD(IFNULL(cooler_path_detail_id, an.Nicho), + 5, + '0') AS path, + TB.Id_Trabajador, + v.Id_Entrada AS Id_Ticket, + landing AS Fecha, + v.Id_Article, + v.Cantidad, + v.article AS Concepte, + v.Medida, + v.Color, + v.Categoria, + Abreviatura AS Origen, + NULL AS Localizacion, + 0 AS Bultos, + w.`name` AS Tipo, + CodigoTrabajador, + 0 AS OK, + 0 AS Reservado, + v.Tallos, + v.Id_Compra AS Id_Movimiento, + an.Nicho, + 'PEDIDO ASEGURADO' AS MSG, + 0 AS Seguro, + 0 AS Id_Ruta, + 0 AS Id_Vehiculo, + a.Foto, + pr.name as producer +FROM + v_compres v + LEFT JOIN + Articles_nicho an ON v.Id_Article = an.Id_Article AND an.warehouse_id = v.warehouse_id_out + JOIN + warehouse w ON w.id = v.warehouse_id + LEFT JOIN + Tipos USING (tipo_id) + LEFT JOIN + reinos r ON r.id = Tipos.reino_id + LEFT JOIN + Trabajadores TB ON TB.Id_Trabajador = v.Id_Trabajador + LEFT JOIN + Proveedores p ON p.Id_Proveedor = v.Id_Proveedor + LEFT JOIN + (SELECT + Id_Article, code AS barcode + FROM + barcodes + GROUP BY Id_Article) BC ON BC.Id_Article = v.Id_Article + LEFT JOIN + Articles a ON a.Id_Article = v.Id_Article + LEFT JOIN + producer pr on pr.producer_id = a.producer_id + LEFT JOIN + cooler_path_detail c ON LEFT(v.Nicho, 3) = pasillo + LEFT JOIN + Origen o ON o.id = v.Id_origen +WHERE + v.Id_Entrada = idE + AND v.tipo_id IS NOT NULL + AND v.reino_id <> 8 + ; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `F5_entradakk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `F5_entradakk`(IN idE BIGINT) +BEGIN + + +SELECT + NULL AS Sacador, + NULL AS Encajador, + v.Cantidad / v.Packing AS Paquetes, + v.Packing AS Grouping, + barcode, + 'ASEGURADO' AS asegurado, + reino, + r.orden, + Alias AS Consignatario, + v.Id_Proveedor AS Id_Cliente, + v.Pedida, + v.Confirmada, + NULL AS vendedor, + 10 AS Calidad, + LPAD(IFNULL(cooler_path_detail_id, an.Nicho), + 5, + '0') AS path, + TB.Id_Trabajador, + v.Id_Entrada AS Id_Ticket, + landing AS Fecha, + v.Id_Article, + v.Cantidad, + v.article AS Concepte, + v.Medida, + v.Color, + v.Categoria, + Abreviatura AS Origen, + NULL AS Localizacion, + 0 AS Bultos, + w.`name` AS Tipo, + CodigoTrabajador, + 0 AS OK, + 0 AS Reservado, + v.Tallos, + v.Id_Compra AS Id_Movimiento, + an.Nicho, + 'PEDIDO ASEGURADO' AS MSG, + 0 AS Seguro, + 0 AS Id_Ruta, + 0 AS Id_Vehiculo, + a.Foto, + pr.name as producer +FROM + v_compres v + LEFT JOIN + Articles_nicho an ON v.Id_Article = an.Id_Article AND an.warehouse_id = v.warehouse_id_out + JOIN + warehouse w ON w.id = v.warehouse_id + LEFT JOIN + Tipos USING (tipo_id) + LEFT JOIN + reinos r ON r.id = Tipos.reino_id + LEFT JOIN + Trabajadores TB ON TB.Id_Trabajador = v.Id_Trabajador + LEFT JOIN + Proveedores p ON p.Id_Proveedor = v.Id_Proveedor + LEFT JOIN + (SELECT + Id_Article, code AS barcode + FROM + barcodes + GROUP BY Id_Article) BC ON BC.Id_Article = v.Id_Article + LEFT JOIN + Articles a ON a.Id_Article = v.Id_Article + LEFT JOIN + producer pr on pr.producer_id = a.producer_id + LEFT JOIN + cooler_path_detail c ON LEFT(v.Nicho, 3) = pasillo + LEFT JOIN + Origen o ON o.id = v.Id_origen +WHERE + v.Id_Entrada = idE + AND v.tipo_id IS NOT NULL + AND v.tipo_id <> 77 + ; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Facturas_Saltos` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Facturas_Saltos`(IN datSTART DATE , IN datEND DATE) +BEGIN + + +DECLARE strSER1 VARCHAR(2); +DECLARE strSER2 VARCHAR(2); +DECLARE intEMP1 INT; +DECLARE intEMP2 INT; +DECLARE v_done BOOLEAN DEFAULT FALSE; +DECLARE strFAC1 VARCHAR(11); +DECLARE strFAC2 VARCHAR(11); + + +DECLARE rs CURSOR FOR + SELECT Id_Factura, empresa_id, Serie + FROM Facturas + WHERE Fecha BETWEEN datSTART AND datEND + ORDER BY empresa_id, Serie, Id_Factura; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = TRUE; + +OPEN rs; + +DROP TEMPORARY TABLE IF EXISTS Facturas_Saltarinas; + +CREATE TEMPORARY TABLE Facturas_Saltarinas +(Factura_Inicial VARCHAR(11), + Factura_Final VARCHAR(11), + Empresa VARCHAR(3), + Serie VARCHAR(1)); + +FETCH rs INTO strFAC1, intEMP1, strSER1; + +IF NOT v_done THEN + + FETCH rs INTO strFAC2, intEMP2, strSER2; + +END IF; + +WHILE NOT v_done DO + + IF strSER1 = strSER2 AND intEMP1 = intEMP2 AND right(strFAC2,5) - right(strFAC1,5) > 1 then + + INSERT INTO Facturas_Saltarinas(Factura_Inicial, Factura_Final, Empresa, Serie) + SELECT strFAC1, strFAC2, abbreviation, strSER1 + FROM empresa + WHERE id = intEMP1; + + END IF; + + SET strFAC1 = strFAC2; + SET intEMP1 = intEMP2; + SET STRSER1 = strSER2; + + FETCH rs INTO strFAC2, intEMP2, strSER2; + +END WHILE; + +SELECT * FROM Facturas_Saltarinas; + +CLOSE rs; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Factura_vuelve` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Factura_vuelve`(IN strFactura VARCHAR(10), IN intCLI INT ) +BEGIN + +DECLARE dblIMPORTE DOUBLE; +DECLARE datFEC DATE; +DECLARE intEMP INT; +DECLARE intCLI_OLD INT; + +/*Este procedure no funcionara correctament perque el strFactura ha de fer referencia al factura_id*/ +SELECT Importe, Fecha, empresa_id, Id_Cliente +INTO dblIMPORTE, datFEC, intEMP, intCLI_OLD +FROM Facturas WHERE Id_Factura = strFactura; + +-- Cambia la empresa de la factura + +UPDATE Facturas SET empresa_id = 965, Id_Cliente = intCLI WHERE Id_Factura = strFactura; + +-- Cambia la empresa de los tickets + +UPDATE Tickets SET empresa_id = 965, Id_Cliente = intCLI WHERE Factura = strFactura; + + +-- Descuenta la cantidad del cliente antiguo + +INSERT INTO Recibos(Id_Factura + ,Entregado + ,Fechacobro + ,Id_Trabajador + ,Id_Banco + ,Id_Cliente + ,empresa_id) + +VALUES (strFactura + ,-1 * dblIMPORTE + ,datFEC + ,2 + ,430 + ,intCLI_OLD + ,intEMP); + +-- Carga el cobro en la cuenta del nuevo cliente + +INSERT INTO Recibos(Id_Factura + ,Entregado + ,Fechacobro + ,Id_Trabajador + ,Id_Banco + ,Id_Cliente + ,empresa_id) + +VALUES (strFactura + ,dblIMPORTE + ,datFEC + ,2 + ,430 + ,intCLI + ,965); + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `fv_to_pcakk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `fv_to_pcakk`() +BEGIN + +DECLARE idT INT; + +DECLARE idC INT; +DECLARE newFEC DATE; +DECLARE idEMP INT; +DECLARE idCON INT; +DECLARE intTIPO INT; +DECLARE newTICKET INT; +DECLARE newLANDING DATE; + +SELECT DISTINCT Id_Ticket INTO idT +FROM Movimientos m +JOIN Tickets t using(Id_Ticket) +JOIN Articles a using(Id_Article) +WHERE tipo_id = 19 AND Article like 'HEL %' +AND Fecha between '2015-10-22' and '2015-10-31' +AND warehouse_id =1 LIMIT 1; + +WHILE idT IS NOT NULL DO + + SELECT Id_Cliente,Fecha,empresa_id,Id_Consigna,Id_Agencia , landing + INTO idC , newFEC, idEMP , idCON , intTIPO , newLANDING + FROM Tickets + WHERE Id_Ticket = idT; + + CALL `ticket_new_complet`(idC ,newFEC, 44, 20, idEMP , idCON , intTIPO , NULL , newTICKET); + + UPDATE Movimientos + JOIN Articles a using(Id_Article) + SET Id_Ticket = newTICKET + WHERE tipo_id = 19 AND Article like 'HEL %' + AND Id_Ticket = idT; + + INSERT INTO order_Tickets (Id_Ticket, order_id) + SELECT newTICKET, order_id + FROM order_Tickets + WHERE Id_Ticket = idT; + + UPDATE Tickets + SET landing = newLANDING + WHERE Id_Ticket = newTICKET; + +SET idT = NULL; + +SELECT DISTINCT Id_Ticket INTO idT +FROM Movimientos m +JOIN Tickets t using(Id_Ticket) +JOIN Articles a using(Id_Article) +WHERE tipo_id = 19 AND Article like 'HEL %' +AND Fecha between '2015-10-22' and '2015-10-31' +AND warehouse_id =1 LIMIT 1; + +END WHILE; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `gescartera_Estados` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `gescartera_Estados`(IN intAno INT,IN intMes INT,IN intDiasPerdidos INT) +BEGIN +DECLARE intCLI,intCLI2 INT DEFAULT 0; +DECLARE datFEC,datFEC2,auxdatFEC DATE DEFAULT '2001-01-01'; +DECLARE lngTIC, lngTIC2 BIGINT DEFAULT 0; +DECLARE intDiferencia INT DEFAULT 0; # Variable donde se colocará la diferencia de días entre dos fechas. +DECLARE done,EsPerdido bit DEFAULT 0; +DECLARE intEstado TINYINT(2) DEFAULT 0; +DECLARE intNuevo INT DEFAULT 1; +DECLARE intPerdido INT DEFAULT 2; +DECLARE intRecuperado INT DEFAULT 3; + + +# Añado una fecha de fin para que no tenga en cuenta los tickets del futuro. (and Fecha<=current_date()) +/* +DECLARE cursor1 CURSOR FOR SELECT Id_Ticket,ti.Id_Cliente,date_format(Fecha,'%Y-%m-%d') AS FormatoFecha +FROM vn2008.Tickets ti +WHERE DATE_FORMAT(Fecha,'%Y-%m-%d')>CAST(CONCAT(YEAR(CURDATE())-2,'-','01-01')AS DATE) +AND DATE_FORMAT(Fecha,'%Y-%m-%d')<=LAST_DAY(CAST(CONCAT(intAno, '-' , intMes,'-',01) AS DATE)) +ORDER BY ti.Id_Cliente,Fecha; +*/ +DECLARE cursor1 CURSOR FOR SELECT Id_Ticket,fac.Id_Cliente,date_format(Fecha,'%Y-%m-%d') AS FormatoFecha +FROM Facturas fac +JOIN (SELECT Id_Ticket,Id_Cliente,Factura from Tickets ti where Factura is not null order by Fecha DESC,Id_Ticket DESC) sub1 +on fac.Id_Factura=sub1.Factura +WHERE DATE_FORMAT(Fecha,'%Y-%m-%d')>CAST(CONCAT(YEAR(CURDATE())-2,'-','01-01')AS DATE) +AND DATE_FORMAT(Fecha,'%Y-%m-%d')<=LAST_DAY(CAST(CONCAT(intAno, '-' , intMes,'-',01) AS DATE)) +group by Id_Cliente,Fecha +order by sub1.Id_Cliente,FormatoFecha; + +DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; +DECLARE CONTINUE HANDLER FOR 1146 +BEGIN + +DROP TEMPORARY TABLE IF EXISTS GC; + +CREATE TEMPORARY TABLE GC (Id_Ticket BIGINT,Fecha DATE,Id_Cliente int,Estado SMALLINT) ENGINE=MEMORY; + +OPEN cursor1; + FETCH cursor1 INTO lngtIC,intCLI,datFEC; + # el primero registro es un cliente nuevo. + INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES(lngtIC,datFEC, intCLI,intNuevo); + SET auxdatFEC=datFEC; + + WHILE NOT DONE DO + FETCH cursor1 INTO lngtIC2,intCLI2,datFEC2; + CASE + WHEN DONE THEN SET intDiferencia=DATEDIFF(CURRENT_DATE,datFEC2); + WHEN intCLI=intCLI2 THEN + SET intDiferencia=DATEDIFF(datFEC2,datFEC); + IF ((intEstado=2)) THEN -- es recuperado despues de haberse perdido + INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES (lngtIC2,datFEC2, intCLI,intRecuperado); # RECUPERADO + SET intEstado=1; + SET auxdatFEC=datFEC2; + ELSE + IF (intDiferencia >= intDiasPerdidos) THEN + -- IF (DATE_FORMAT(datFEC2,'%Y-%m')<>DATE_FORMAT(DATE_ADD(datFEC,INTERVAL intDiasPerdidos DAY),'%Y-%m')) AND (intEstado<2) THEN + INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES (0,DATE_ADD(auxdatFEC,INTERVAL intDiasPerdidos DAY), intCLI,intPerdido); + INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES (lngtIC2,datFEC2, intCLI,intRecuperado); # RECUPERADO + SET intEstado=1,auxdatFEC=datFEC2; + -- ELSE + -- INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES (lngtIC2,datFEC2, intCLI,intPerdido); # PERDIDO + -- SET intEstado=2; # Lo marcamos como perdido + -- END IF; + + END IF; + END IF; + WHEN intCLI<>intCLI2 THEN + SET intEstado=0; + SET intDiferencia=DATEDIFF(CURRENT_DATE,datFEC); + INSERT INTO GC(Id_Ticket, Fecha, Id_Cliente, Estado) VALUES(lngtIC2,datFEC2, intCLI2,intNuevo); # NUEVO + SET auxdatFEC=datFEC2; + END CASE; + SET datFEC=datFEC2; + SET intCLI=intCLI2; + SET lngTIC = lngTIC2,auxdatFEC=datFEC2; + + END WHILE; + + CLOSE cursor1; + + + # inserto los registros de clientes sin ticket (Estado 4) + INSERT GC + SELECT 0,'2000-01-01',Id_Cliente,4 + FROM vn2008.Clientes + WHERE Id_Cliente NOT IN + (select distinct Id_Cliente + FROM vn2008.Tickets order by id_cliente); + + SELECT Id_Ticket, Fecha, Id_Cliente, CASE ESTADO + WHEN 1 THEN 'NUEVO' + WHEN 2 THEN 'PERDIDO' + WHEN 3 THEN 'RECUPERADO' + ELSE 'SIN TICKET' END AS Estado,CodigoTrabajador + FROM GC + INNER JOIN vn2008.Clientes cli USING (Id_Cliente) + INNER JOIN vn2008.Trabajadores trab USING (Id_Trabajador); + +END; + + IF EXISTS (SELECT * FROM GC LIMIT 1) THEN + + SELECT Id_Ticket, Fecha, Id_Cliente, CASE ESTADO + WHEN 1 THEN 'NUEVO' + WHEN 2 THEN 'PERDIDO' + WHEN 3 THEN 'RECUPERADO' + ELSE 'SIN TICKET' END AS Estado,CodigoTrabajador + FROM GC + INNER JOIN vn2008.Clientes cli USING (Id_Cliente) + INNER JOIN vn2008.Trabajadores trab USING (Id_Trabajador); + + END IF; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `get_barcodes_ticket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `get_barcodes_ticket`(IN idT BIGINT) +BEGIN + + drop temporary TABLE IF EXISTS articles_ticket; + CREATE TEMPORARY TABLE IF NOT EXISTS articles_ticket + (PRIMARY KEY (Id_Article)) + ENGINE = MEMORY + select distinct Id_Article from Movimientos where Id_Ticket = idT; + + drop temporary TABLE IF EXISTS articles_ticket2; + CREATE TEMPORARY TABLE IF NOT EXISTS articles_ticket2 + (PRIMARY KEY (Id_Article)) + ENGINE = MEMORY + select * from articles_ticket; + + drop temporary TABLE IF EXISTS articles_buys; + CREATE TEMPORARY TABLE IF NOT EXISTS articles_buys AS + select Id_Compra, a.Id_Article from v_compres c JOIN articles_ticket a ON a.Id_Article = c.Id_Article + where landing >= DATE_SUB(CURDATE(), INTERVAL 14 DAY); + + SELECT distinct + code, a.Id_Article + FROM + barcodes b + inner join + articles_ticket a ON a.Id_Article = b.Id_Article + union + SELECT + Id_Compra as code, a.Id_Article + FROM + articles_buys c + inner join + articles_ticket2 a ON a.Id_Article = c.Id_Article; + + drop temporary TABLE IF EXISTS articles_ticket; + drop temporary TABLE IF EXISTS articles_ticket2; + drop temporary TABLE IF EXISTS articles_buys; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `historico` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `historico`(IN idART INT, IN wh INT, IN v_virtual INT) +BEGIN +DECLARE datFEC DATETIME; + +SELECT Fechainventario INTO datFEC FROM tblContadores; +SET @a = 0; +SELECT DATE(Fecha) AS Fecha, + Entrada, + Salida, + OK, + Alias, + Referencia, + id, + @a := @a + IFNULL(Entrada,0) - IFNULL(Salida,0) as acumulado, + F5, + v_virtual, + Calidad,CodigoTrabajador +FROM + + ( SELECT TR.landing as Fecha, + C.Cantidad as Entrada, + NULL as Salida, + (TR.received != FALSE) as OK, + P.Proveedor as Alias, + E.Referencia as Referencia, + E.Id_Entrada as id, + TR.delivered as F5, + 0 as Calidad, tra.CodigoTrabajador + FROM Compres C + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON TR.id = E.travel_id + JOIN Proveedores P USING (Id_Proveedor) + LEFT JOIN Articles a ON a.Id_Article = C.Id_Article + LEFT JOIN Tipos ti ON ti.Id_Tipo = a.tipo_id + LEFT JOIN Trabajadores tra ON tra.Id_Trabajador = ti.Id_Trabajador + WHERE TR.landing >= datFEC + AND wh IN (TR.warehouse_id , 0) + AND C.Id_Article = idART + AND E.Inventario = 0 + + UNION ALL + + SELECT TR.shipment as Fecha, + NULL as Entrada, + C.Cantidad as Salida, + TR.delivered as OK, + P.Proveedor as Alias, + E.Referencia as Referencia, + E.Id_Entrada as id, + TR.delivered as F5, + 0 as Calidad, tra.CodigoTrabajador + + FROM Compres C + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON TR.id = E.travel_id + JOIN warehouse ON warehouse.id = TR.warehouse_id_out + JOIN Proveedores P USING (Id_Proveedor) + LEFT JOIN Articles a ON a.Id_Article = C.Id_Article + LEFT JOIN Tipos ti ON ti.Id_Tipo = a.tipo_id + LEFT JOIN Trabajadores tra ON tra.Id_Trabajador = ti.Id_Trabajador + WHERE TR.shipment >= datFEC + AND wh IN (TR.warehouse_id_out,0) + AND Id_Proveedor <> 4 + AND C.Id_Article = idART + AND E.Inventario = 0 + AND fuente = 0 + + UNION ALL + + SELECT T.Fecha as Fecha, + NULL as Entrada, + M.Cantidad as Salida, + (IFNULL(ts.alertLevel,0) > 0) as OK, + T.Alias as Alias, + T.Localizacion as Referencia, + T.Id_Ticket as id, + T.PedidoImpreso EtiquetasEmitidas, + C.Calidad, tr.CodigoTrabajador + + FROM Movimientos M + JOIN Tickets T USING (Id_Ticket) + LEFT JOIN vn.ticketState ts ON ts.ticket = T.Id_Ticket + JOIN Clientes C ON C.Id_Cliente = T.Id_Cliente + LEFT JOIN Trabajadores tr ON tr.Id_Trabajador = C.Id_Trabajador + WHERE T.Fecha >= datFEC + AND M.Id_Article = idART + AND wh IN (T.warehouse_id , 0) + + ) AS Historico +ORDER BY Fecha, OK DESC, Entrada DESC; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `historicoprecio` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `historicoprecio`( id_art INT, id_wh INT,id_datestart DATE,id_dateend DATE) +BEGIN + + + SET @@max_sp_recursion_depth = 100 ; + DROP TEMPORARY TABLE IF EXISTS historicoprecio; + + CREATE TEMPORARY TABLE historicoprecio + ( + date_start DATE, + rate_0 DOUBLE, + rate_1 DOUBLE, + rate_2 DOUBLE, + rate_3 DOUBLE, + PRIMARY KEY (date_start) + ) + ENGINE = MEMORY; + + + CALL historicoprecio2 (id_art,id_wh,id_datestart,id_dateend); + + + SET @a:= @b:= @c:= @d:= @e:= @f := @g:= @h:=0.0; + SELECT * FROM + (SELECT d.`date` landing,if(rate_0 IS NULL,@a,@a:=rate_0) Costefijo,if(rate_1 IS NULL,@b,@b:=rate_1) rate_1, + if(rate_2 IS NULL,@c,@c:=rate_2) rate_2,if(rate_3 IS NULL,@d,@d:=rate_3) rate_3,'PF' tipo FROM `time` d + LEFT JOIN historicoprecio hp ON d.`date` = hp.date_start WHERE d.`date` BETWEEN id_datestart AND id_dateend + UNION ALL + SELECT DISTINCT d.`date` ,if(Costefijo IS NULL,@e,@e:=Costefijo) Costefijo,if(Tarifa1 IS NULL,@f,@f:=Tarifa1), + if(Tarifa2 IS NULL,@g,@g:=Tarifa2),if(Tarifa3 IS NULL,@h,@h:=Tarifa3),'C' + FROM `time` d + LEFT JOIN travel t ON t.landing = d.`date` + LEFT JOIN Entradas e ON e.travel_id = t.id + LEFT JOIN Compres c ON c.Id_Entrada = e.Id_Entrada AND id_wh IN (0,warehouse_id) AND c.Id_Article = id_art AND NoVincular = FALSE + WHERE d.`date` BETWEEN id_datestart AND id_dateend + ) + t ORDER BY landing DESC; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `historicoprecio2` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `historicoprecio2`( id_art INT, id_wh INT,id_datestart DATE,id_dateend DATE) +BEGIN + DECLARE done BIT DEFAULT 0; + DECLARE datini,datfin,datiniaux,datfinaux DATE; + DECLARE dblrate0,dblrate0aux,dblrate1,dblrate1aux,dblrate2,dblrate2aux,dblrate3,dblrate3aux DOUBLE DEFAULT 0; + DECLARE boolBeforeStart TINYINT DEFAULT 1; + -- selecciona el primer bloque apartir de la mínima fecha que esta dentro del rango y la fecha de finalizar es posterior + SET datiniaux = NULL; + SET datfinaux = NULL; + -- guarda en dblrate0aux el valor del valor del periode, a lo millor falla si no trau cap linea + SELECT IFNULL(rate_0,0), IFNULL(rate_1,0), IFNULL(rate_2,0), IFNULL(rate_3,0) + INTO dblrate0aux,dblrate1aux,dblrate2aux,dblrate3aux FROM price_fixed + WHERE date_start = id_datestart AND warehouse_id IN (0,id_wh) AND item_id = id_art; + + REPEAT + + SET datini = NULL; + SET datfin = NULL; + SET dblrate0 = NULL; + SET dblrate1 = NULL; + SET dblrate2 = NULL; + SET dblrate3 = NULL; + SELECT date_start,date_end,rate_0,rate_1,rate_2,rate_3 INTO datini,datfin,dblrate0,dblrate1,dblrate2,dblrate3 FROM price_fixed + WHERE item_id = id_art AND warehouse_id IN (0,id_wh) AND date_end < id_dateend + AND date_end >= IFNULL(datfinaux,id_datestart) AND date_start = (SELECT MIN(date_start) FROM price_fixed + WHERE date_start >= IFNULL(datiniaux,TIMESTAMPADD(DAY,1,id_datestart)) AND item_id = id_art AND warehouse_id IN (0,id_wh) ) + ORDER BY date_start LIMIT 1; + + IF datini IS NOT NULL THEN + -- Inserta un registre(dia -1) + IF boolBeforeStart THEN + INSERT INTO historicoprecio(date_start,rate_0,rate_1,rate_2,rate_3) + VALUES(TIMESTAMPADD(DAY,-1,datini),dblrate0aux,dblrate1aux,dblrate2aux,dblrate3aux); + SET boolBeforeStart = TRUE; + END IF; + -- reiniciem els valors de les variables + SET datiniaux = NULL; + SET datfinaux = NULL; + -- seleccionem el dia fins al qual dura el periode eliminant els dies que queden solapats + SELECT MIN(date_start) INTO datfinaux FROM price_fixed WHERE date_start > datini AND date_start < datfin AND date_end >= datfin + AND warehouse_id IN (0,id_wh) AND item_id = id_art; + + -- cridada recursiva per al periode(retallat si cal) inclós + CALL historicoprecio2 (id_art,id_wh,datini,IFNULL(datfinaux,datfin)); + -- anyadeix el valor que ha d'agafar el dia seguent d'acabar el periode actual. + IF datfinaux IS NULL THEN + INSERT INTO historicoprecio(date_start,rate_0,rate_1,rate_2,rate_3) + VALUES(TIMESTAMPADD(DAY,1,datfin),dblrate0aux,dblrate1aux,dblrate2aux,dblrate3aux), + (datfin,dblrate0,dblrate1,dblrate2,dblrate3); + ELSE + INSERT INTO historicoprecio(date_start,rate_0,rate_1,rate_2,rate_3) + VALUES(TIMESTAMPADD(DAY,-1,datfinaux),dblrate0,dblrate1,dblrate2,dblrate3); + SET boolBeforeStart = FALSE; + END IF; + SET datiniaux=TIMESTAMPADD(DAY,1,datini); + SET datfinaux=datfin; + + END IF; + UNTIL datini IS NULL END REPEAT; + -- inserta linea caso base + INSERT INTO historicoprecio(date_start,rate_0,rate_1,rate_2,rate_3) VALUES(id_datestart,dblrate0aux,dblrate1aux,dblrate2aux,dblrate3aux) + ON DUPLICATE KEY UPDATE rate_0 = dblrate0,rate_1 = dblrate1,rate_2 = dblrate2,rate_3 = dblrate3; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `historico_absoluto` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `historico_absoluto`(IN idART INT, IN wh INT, IN datfecha DATETIME) +BEGIN + +DECLARE inv_calculado INT; +DECLARE inv INT; +DECLARE today DATETIME; +DECLARE fecha_inv DATETIME; +SET today = curdate(); + + DROP TEMPORARY TABLE IF EXISTS historico_pasado; + CREATE TEMPORARY TABLE historico_pasado + SELECT * + FROM ( + SELECT TR.landing as Fecha, + C.Cantidad as Entrada, + NULL as Salida, + (TR.received != FALSE) as OK, + P.Proveedor as Alias, + E.Referencia as Referencia, + E.Id_Entrada as id, + TR.delivered as F5, 0 as Calidad + FROM Compres C -- mirar perque no entra en received + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN Proveedores P USING (Id_Proveedor) + WHERE TR.landing >= '2001-01-01' + AND Id_proveedor <> 4 + AND wh IN (TR.warehouse_id , 0) + AND C.Id_Article = idART + AND E.Inventario = 0 + + UNION ALL + + SELECT TR.shipment as Fecha, + NULL as Entrada, + C.Cantidad as Salida, + TR.delivered as OK, + P.Proveedor as Alias, + E.Referencia as Referencia, + E.Id_Entrada as id, + TR.delivered as F5, 0 as Calidad + FROM Compres C + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN Proveedores P USING (Id_Proveedor) + + WHERE TR.shipment >= '2001-01-01' + AND wh = TR.warehouse_id_out + AND Id_Proveedor <> 4 + AND C.Id_Article = idART + AND E.Inventario = 0 + + UNION ALL + + SELECT T.Fecha as Fecha, + NULL as Entrada, + M.Cantidad as Salida, + (M.OK <> 0 OR T.Etiquetasemitidas <> 0 OR T.Factura IS NOT NULL) as OK, + T.Alias as Alias, + T.Factura as Referencia, + T.Id_Ticket,T.PedidoImpreso, + C.Calidad + FROM Movimientos M + INNER JOIN Tickets T USING (Id_Ticket) + JOIN Clientes C ON C.Id_Cliente = T.Id_Cliente + WHERE T.Fecha >= '2001-01-01' + AND M.Id_Article = idART + AND wh IN (T.warehouse_id , 0) + ) as t1 ORDER BY Fecha, Entrada DESC, OK DESC; + + SELECT sum(Entrada) - sum(Salida) INTO inv_calculado + FROM historico_pasado + WHERE Fecha < datfecha; + + -- WHERE historico_pasado.Fecha < fecha_inv ; + + +SELECT p1.*, NULL as v_virtual FROM( + SELECT datfecha as Fecha,inv_calculado as Entrada, NULL as Salida,1 as OK, + 'Inventario calculado' as Alias, '' as Referencia, 0 as id, 1 as F5, 0 as Calidad + UNION ALL + SELECT * FROM historico_pasado WHERE Fecha >= datfecha + )as p1; + + +DROP TEMPORARY TABLE historico_pasado; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `historico_joined` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `historico_joined`(IN idART INT, IN wh_joined INT, IN v_virtual INT) +BEGIN +DECLARE datFEC DATETIME; + +SELECT Fechainventario INTO datFEC FROM tblContadores; +SET @a = 0; +SELECT DATE(Fecha) AS Fecha, + Entrada, + Salida, + OK, + Alias, + Referencia, + id, + @a := @a + IFNULL(Entrada,0) - IFNULL(Salida,0) as acumulado, + F5, + v_virtual, + Calidad,CodigoTrabajador +FROM + + ( SELECT TR.landing as Fecha, + C.Cantidad as Entrada, + NULL as Salida, + (TR.received != FALSE) as OK, + P.Proveedor as Alias, + E.Referencia as Referencia, + E.Id_Entrada as id, + TR.delivered as F5, + 0 as Calidad, tra.CodigoTrabajador + FROM Compres C + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON TR.id = E.travel_id + JOIN Proveedores P USING (Id_Proveedor) + LEFT JOIN Articles a ON a.Id_Article = C.Id_Article + LEFT JOIN Tipos ti ON ti.Id_Tipo = a.tipo_id + LEFT JOIN Trabajadores tra ON tra.Id_Trabajador = ti.Id_Trabajador + LEFT JOIN warehouse_joined wj ON wj.warehouse_id = TR.warehouse_id + WHERE TR.landing >= datFEC + AND wh_joined IN (wj.warehouse_alias_id , 0) + AND C.Id_Article = idART + AND E.Inventario = 0 + + UNION ALL + + SELECT TR.shipment as Fecha, + NULL as Entrada, + C.Cantidad as Salida, + TR.delivered as OK, + P.Proveedor as Alias, + E.Referencia as Referencia, + E.Id_Entrada as id, + TR.delivered as F5, + 0 as Calidad, tra.CodigoTrabajador + + FROM Compres C + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON TR.id = E.travel_id + JOIN Proveedores P USING (Id_Proveedor) + LEFT JOIN Articles a ON a.Id_Article = C.Id_Article + LEFT JOIN Tipos ti ON ti.Id_Tipo = a.tipo_id + LEFT JOIN Trabajadores tra ON tra.Id_Trabajador = ti.Id_Trabajador + LEFT JOIN warehouse_joined wj ON wj.warehouse_id = TR.warehouse_id_out + WHERE TR.shipment >= datFEC + AND wh_joined IN (wj.warehouse_alias_id,0) + AND Id_Proveedor <> 4 + AND C.Id_Article = idART + AND E.Inventario = 0 + + UNION ALL + + SELECT T.Fecha as Fecha, + NULL as Entrada, + M.Cantidad as Salida, + (M.OK <> 0 OR T.Etiquetasemitidas <> 0 OR T.Factura IS NOT NULL) as OK, + T.Alias as Alias, + T.Localizacion as Referencia, + T.Id_Ticket as id, + T.PedidoImpreso EtiquetasEmitidas, + C.Calidad, tr.CodigoTrabajador + + FROM Movimientos M + JOIN Tickets T USING (Id_Ticket) + JOIN Clientes C ON C.Id_Cliente = T.Id_Cliente + LEFT JOIN Trabajadores tr ON tr.Id_Trabajador = C.Id_Trabajador + LEFT JOIN warehouse_joined wj ON wj.warehouse_id = T.warehouse_id + WHERE T.Fecha >= datFEC + AND M.Id_Article = idART + AND wh_joined IN (wj.warehouse_alias_id , 0) + + ) AS Historico +ORDER BY Fecha, Entrada DESC, OK DESC; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `historico_multiple` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `historico_multiple`(IN idART INT) +BEGIN + +DECLARE datFEC DATETIME; + +SELECT Fechainventario INTO datFEC FROM tblContadores; + +SET @a = 0; + +DROP TEMPORARY TABLE IF EXISTS hm1; + +CREATE TEMPORARY TABLE hm1 +SELECT DATE(Fecha) as Fecha, + Entrada, + Salida, + OK, + Referencia, + Historia.id, + + wh, + + `name` as wh_name + +FROM + + ( SELECT TR.landing as Fecha, + C.Cantidad as Entrada, + NULL as Salida, + + IF(warehouse_id = 44, 1, warehouse_id) as wh, + (TR.received != FALSE) as OK, + E.Referencia as Referencia, + E.Id_Entrada as id + + + + FROM Compres C + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + WHERE TR.landing >= datFEC + AND C.Id_Article = idART + AND E.Redada = 0 + + AND C.Cantidad <> 0 + + UNION ALL + + SELECT TR.shipment as Fecha, + NULL as Entrada, + C.Cantidad as Salida, + + + IF(warehouse_id_out = 44, 1, warehouse_id_out) as wh, + TR.delivered as OK, + + E.Referencia as Referencia, + E.Id_Entrada as id + + FROM Compres C + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + WHERE TR.shipment >= datFEC + AND C.Id_Article = idART + + AND E.Redada = 0 + + AND C.Cantidad <> 0 + + UNION ALL + + SELECT T.Fecha as Fecha, + NULL as Entrada, + M.Cantidad as Salida, + IF(warehouse_id = 44, 1, warehouse_id) as wh, + + (M.OK <> 0 OR T.Etiquetasemitidas <> 0 OR T.Factura IS NOT NULL) as OK, + T.Factura as Referencia, + T.Id_Ticket as id + + FROM Movimientos M + INNER JOIN Tickets T USING (Id_Ticket) + WHERE T.Fecha >= datFEC + AND M.Id_Article = idART + + ) AS Historia + + INNER JOIN warehouse ON warehouse.id = Historia.wh +ORDER BY Fecha, Entrada DESC, OK DESC; + + +DROP TEMPORARY TABLE IF EXISTS hm2; +DROP TEMPORARY TABLE IF EXISTS hm3; +DROP TEMPORARY TABLE IF EXISTS hm4; +DROP TEMPORARY TABLE IF EXISTS hm5; +DROP TEMPORARY TABLE IF EXISTS hm6; +DROP TEMPORARY TABLE IF EXISTS hm7; +DROP TEMPORARY TABLE IF EXISTS hm8; +CREATE TEMPORARY TABLE hm2 SELECT * FROM hm1 WHERE wh = 19; +CREATE TEMPORARY TABLE hm3 SELECT * FROM hm1 WHERE wh = 7; +CREATE TEMPORARY TABLE hm4 SELECT * FROM hm1 WHERE wh = 1 or wh = 44; +CREATE TEMPORARY TABLE hm5 SELECT * FROM hm1 WHERE wh = 5; +CREATE TEMPORARY TABLE hm6 SELECT * FROM hm1 WHERE wh = 17; +CREATE TEMPORARY TABLE hm7 SELECT * FROM hm1 WHERE wh = 37; +CREATE TEMPORARY TABLE hm8 SELECT * FROM hm1 WHERE wh = 55; + +SELECT * FROM + +( + +SELECT Fecha, Entrada as BOGEntrada, Salida as BOGSalida, OK as BOGOK, Referencia as BOGReferencia, id as BOGid, + + NULL AS VNHEntrada, NULL AS VNHSalida, NULL AS VNHOK, NULL AS VNHReferencia, NULL AS VNHid, + + NULL AS SILEntrada, NULL AS SILSalida, NULL AS SILOK, NULL AS SILReferencia, NULL AS SILid, + + NULL AS MADEntrada, NULL AS MADSalida, NULL AS MADOK, NULL AS MADReferencia, NULL AS MADid, + + NULL AS MCFEntrada, NULL AS MCFSalida, NULL AS MCFOK, NULL AS MCFReferencia, NULL AS MCFid, + + NULL AS VILEntrada, NULL AS VILSalida, NULL AS VILOK, NULL AS VILReferencia, NULL AS VILid, + + NULL AS BAREntrada, NULL AS BARSalida, NULL AS BAROK, NULL AS BARReferencia, NULL AS BARid + +FROM hm2 + + +UNION ALL + +SELECT Fecha + , NULL, NULL, NULL, NULL, NULL + ,Entrada, Salida, OK, Referencia, id + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL +FROM hm3 + + + +UNION ALL + +SELECT Fecha + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , Entrada, Salida, OK, Referencia, id + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL +FROM hm4 + +UNION ALL + +SELECT Fecha + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , Entrada, Salida, OK, Referencia, id + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL +FROM hm5 + +UNION ALL + +SELECT Fecha + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , Entrada, Salida, OK, Referencia, id + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL +FROM hm6 + +UNION ALL + +SELECT Fecha + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , Entrada, Salida, OK, Referencia, id + , NULL, NULL, NULL, NULL, NULL + + +FROM hm7 + +UNION ALL + +SELECT Fecha + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , NULL, NULL, NULL, NULL, NULL + , Entrada, Salida, OK, Referencia, id + +FROM hm8 + +) sub + +ORDER BY Fecha, BOGEntrada IS NULL, VNHEntrada IS NULL, SILEntrada IS NULL, MADEntrada IS NULL, MCFEntrada IS NULL, VILEntrada IS NULL, BAREntrada IS NULL; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ImporteSantos` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ImporteSantos`(IN dat_from date,IN dat_to date) +BEGIN + +select codigotrabajador,Id_Cliente,Cliente,cast(sum(ImporteAnt) as decimal(10,0)) ImporteAnt,cast(sum(ImporteActual) as decimal(10,0)) ImporteActual +from ( + select codigotrabajador,cli.Id_Cliente Id_Cliente,Cliente,sum(amount) ImporteAnt,0 ImporteActual + from bi.ticket ti + inner join Clientes cli on ti.Id_Cliente=cli.Id_Cliente + inner join vn2008.Trabajadores on cli.Id_Trabajador=Trabajadores.Id_Trabajador + where (date between date_add(dat_from,interval -1 year) and date_add(dat_to,interval -1 year)) + -- and cli.invoice + group by CodigoTrabajador,ti.Id_Cliente + + union all +select CodigoTrabajador,cli.Id_Cliente,Cliente,0 ImporteAnt, + IFNULL(round(sum(cantidad * Costfixat),2),2) ImporteActual + from Tickets ti + inner join Movimientos m using (Id_Ticket) + INNER JOIN vn2008.Articles a USING(Id_Article) + INNER JOIN Tipos tp ON tp.tipo_id = a.tipo_id + LEFT JOIN reinos r ON r.id = tp.reino_id + INNER JOIN vn2008.Consignatarios c USING(Id_Consigna) + inner join Clientes cli on c.Id_Cliente=cli.Id_cliente + inner join vn2008.Trabajadores on cli.Id_Trabajador=Trabajadores.Id_Trabajador + inner join vn2008.Permisos perm on cli.Id_Trabajador=perm.Id_Trabajador + inner join vn2008.Grupos grup on perm.Id_Grupo=grup.Id + where ti.Fecha between dat_from and DAYEND(dat_to) + -- and cli.invoice + AND r.display <> 0 + and (grup.Id in (6) or cli.Id_Trabajador in (20)) + group by CodigoTrabajador,c.Id_Cliente,year(Fecha) +)sub1 +group by CodigoTrabajador,Id_Cliente +having (ImporteAnt<>0 or ImporteActual<>0) +order by CodigoTrabajador,Id_Cliente; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `InsertarEspionaje` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `InsertarEspionaje`(intIdTrabajador INT(11),intIdEquipo int) +BEGIN + +DECLARE intNReg TINYINT DEFAULT 0; + +SELECT Count(*) AS NReg +INTO intNReg +FROM Espionajes +WHERE Fecha=Current_date +AND Id_Trabajador=intIdTrabajador; + +IF (intNReg=0) THEN + INSERT INTO Espionajes (Id_Trabajador,Fecha,HoraEntrada,Id_Equipo) + VALUES (intIdTrabajador,CURRENT_DATE,CURRENT_TIME,intIdEquipo); +ELSE + UPDATE Espionajes + SET HoraSalida=CURRENT_TIME + WHERE Id_Trabajador=intIdTrabajador + AND Fecha=curdate(); +END IF; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `insert_producer_plantpassport` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `insert_producer_plantpassport`(IN idCompra INT) +BEGIN + DECLARE last_insert INTEGER; + + INSERT IGNORE INTO producer (`name`) + SELECT es.company_name + FROM vn2008.Compres c + JOIN vn2008.buy_edi be ON be.id = c.buy_edi_id + JOIN edi.supplier es ON es.supplier_id = be.pro + WHERE c.Id_Compra = idCompra; + + -- SELECT LAST_INSERT_ID() INTO last_insert; + + /* + IF last_insert > 0 THEN + UPDATE Articles a JOIN Compres c + ON a.Id_Article = c.Id_Article SET a.producer_id = last_insert WHERE c.Id_Compra = idCompra; + END IF;*/ +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `inventario_margen` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `inventario_margen`(IN d_START DATETIME, IN d_END DATETIME, IN i_tipo INT, IN i_filtro INT, IN i_wh INT) +BEGIN + + DECLARE d_INV DATETIME; + DECLARE bolREVERSE BOOLEAN DEFAULT 0; + DECLARE d_FEC2 DATETIME; + DECLARE d_FEC DATETIME; + DECLARE i_SECTOR INT DEFAULT 0; + DECLARE strFILTRO VARCHAR(255) DEFAULT 'TRUE'; + DECLARE dblPORTE_m3 DOUBLE DEFAULT 45; + DECLARE intCASE INTEGER; + DECLARE ID_CLIENTE_COMPLEMENTOS INT DEFAULT 1927; + DECLARE ID_REINO_OTROS INT DEFAULT 6; + DECLARE ID_PROVEEDOR_INVENTARIO INT DEFAULT 4; + DECLARE ID_TRABAJADOR_MARIBEL INT DEFAULT 133; + + IF i_filtro THEN + SELECT `sql` INTO strFILTRO FROM filtros WHERE id = i_filtro; + END IF; + + + +-- PREVIO: Crear una tabla para filtrar los articulos que interesan + + DROP TEMPORARY TABLE IF EXISTS article_selection; + + SET strFILTRO = REPLACE(strFILTRO, 'Id_Article','A.Id_Article'); + + CALL sql_query (sql_printf( + 'CREATE TEMPORARY TABLE article_selection + ENGINE = MEMORY + SELECT Id_Article + FROM Articles A + LEFT JOIN Tipos USING(tipo_id) + LEFT JOIN Trabajadores TR ON TR.Id_Trabajador = Tipos.Id_Trabajador + LEFT JOIN Tintas ON A.color = Tintas.Id_Tinta + LEFT JOIN Origen ON Origen.id = A.id_origen + WHERE %s AND %s AND reino_id != %v' + ,IF(i_tipo, CONCAT('tipo_id = ', i_tipo), 'TRUE') + ,strFILTRO + ,ID_REINO_OTROS + )); + + +ALTER TABLE article_selection ADD PRIMARY KEY(Id_Article); + + +-- PRIMER PASO: Cálculo del inventario inicial, valorado + +-- Averiguamos la fecha del inventario inmediatemente anterior a la fecha de inicio + + SELECT landing INTO d_INV + FROM travel TR + INNER JOIN Entradas E ON E.travel_id = TR.id + WHERE landing <= d_START + AND E.Id_Proveedor = ID_PROVEEDOR_INVENTARIO + AND i_wh IN (0,TR.warehouse_id) + ORDER BY landing DESC + LIMIT 1; + + IF d_INV is null THEN + + SELECT landing INTO d_INV + FROM travel TR + INNER JOIN Entradas E ON E.travel_id = TR.id + WHERE landing > d_START + AND E.Id_Proveedor = ID_PROVEEDOR_INVENTARIO + AND i_wh IN (0,TR.warehouse_id) + ORDER BY landing ASC + LIMIT 1; + + END IF; + + +-- Ubicamos la fecha de inventario segun su posición relativa a la de inicio y a la de fin + +IF d_INV <= d_START THEN + + SET intCASE = 1; + +ELSE + + IF d_INV > d_END THEN + + SET intCASE = 3; + + ELSE + + SET intCASE = 2; + + END IF; + +END IF; + +DROP TEMPORARY TABLE IF EXISTS inv; + +-- Preparamos la tabla temporal que va a almacenar el valor y cantidad de productos + +CREATE TEMPORARY TABLE inv + (w_id SMALLINT, + Id_Article BIGINT, + Unidades INT, + Valor DOUBLE, + Sector INT DEFAULT 0 ) ENGINE = MEMORY; + + +ALTER TABLE inv ADD PRIMARY KEY USING HASH (w_id, Id_Article, Sector); + +/************************** SECTOR INICIAL: 0 *****************************/ + +CASE intCASE + + WHEN 1 THEN + + SET d_FEC = TIMESTAMP(d_INV,'00:00:00'); + SET d_FEC2 = TIMESTAMP(TIMESTAMPADD(DAY,-1,d_START) ,'23:59:59'); + SET bolREVERSE = FALSE; + + ELSE + + SET d_FEC = TIMESTAMP(d_START,'00:00:00'); + SET d_FEC2 = TIMESTAMP(TIMESTAMPADD(DAY,-1,d_INV) ,'23:59:59'); + SET bolREVERSE = TRUE; + + +END CASE; + + +-- Inicializamos el inventario + + + INSERT INTO inv(w_id, Id_Article, Unidades,Valor) + SELECT TR.warehouse_id, C.Id_Article, sum(C.Cantidad), ifnull(C.Costefijo,0) + IFNULL(C.Embalajefijo,0) + IFNULL(C.Portefijo,0) + IFNULL(C.Comisionfija,0) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos TP USING(tipo_id) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN warehouse w ON w.id = warehouse_id + JOIN article_selection USING(Id_Article) + WHERE landing = d_INV + AND w.comisionantes + AND i_wh IN (0,TR.warehouse_id) + AND E.Id_Proveedor = ID_PROVEEDOR_INVENTARIO + AND reino_id != ID_REINO_OTROS + AND TR.warehouse_id != TR.warehouse_id_out + GROUP BY TR.warehouse_id, C.Id_Article; + +-- Se insertan las compras que llegan entre la fecha del inventario y la fecha inicial + + INSERT INTO inv(w_id, Id_Article, Unidades, Valor) + SELECT TR.warehouse_id, C.Id_Article, C.Cantidad * IF(bolREVERSE,-1,1), ifnull(C.Costefijo,0) + IFNULL(C.Embalajefijo,0) + IFNULL(C.Portefijo,0) + IFNULL(C.Comisionfija,0) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos TP USING(tipo_id) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN warehouse w ON w.id = warehouse_id + JOIN article_selection USING(Id_Article) + WHERE landing BETWEEN d_FEC AND d_FEC2 + AND i_wh IN (0,TR.warehouse_id) + AND w.comisionantes + AND NOT redada + AND reino_id != ID_REINO_OTROS + AND E.Id_Proveedor != ID_PROVEEDOR_INVENTARIO + AND TR.warehouse_id != TR.warehouse_id_out + ORDER BY landing DESC + ON DUPLICATE KEY UPDATE inv.Unidades = inv.Unidades + (C.Cantidad * IF(bolREVERSE,-1,1)) + , Valor = IF(Costefijo > 0,ifnull(C.Costefijo,0) + IFNULL(C.Embalajefijo,0) + IFNULL(C.Portefijo,0) + IFNULL(C.Comisionfija,0),Valor); + +-- Se sacan las que salen + + INSERT INTO inv(w_id, Id_Article, Unidades) + SELECT TR.warehouse_id_out, C.Id_Article, C.Cantidad * IF(bolREVERSE,1,-1) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos TP USING(tipo_id) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN warehouse w ON w.id = warehouse_id_out + JOIN article_selection USING(Id_Article) + WHERE shipment BETWEEN d_FEC AND d_FEC2 + AND i_wh IN (0,TR.warehouse_id_out) + AND w.comisionantes + AND NOT redada + AND reino_id != ID_REINO_OTROS + AND E.Id_Proveedor != ID_PROVEEDOR_INVENTARIO + AND TR.warehouse_id != TR.warehouse_id_out + ON DUPLICATE KEY UPDATE inv.Unidades = inv.Unidades + (C.Cantidad * IF(bolREVERSE,1,-1)); + +-- Ahora las ventas + + INSERT INTO inv(w_id, Id_Article, Unidades) + SELECT w.id, M.Id_Article, M.Cantidad * IF(bolREVERSE,1,-1) + FROM Movimientos M + INNER JOIN Tickets T USING (Id_Ticket) + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos TP USING(tipo_id) + INNER JOIN warehouse w ON w.id = T.warehouse_id + INNER JOIN article_selection USING(Id_Article) + WHERE T.Fecha BETWEEN d_FEC AND d_FEC2 + AND i_wh IN (0,T.warehouse_id) + AND w.comisionantes + AND reino_id != ID_REINO_OTROS + ON DUPLICATE KEY UPDATE inv.Unidades = inv.Unidades + (M.Cantidad * IF(bolREVERSE,1,-1)); + + +UPDATE inv SET Valor = inv.Unidades * Valor; + + +/************************** SECTOR ENTRADAS: 1 *****************************/ + +SET i_SECTOR = 1; + + + SET d_FEC = TIMESTAMP(d_START,'00:00:00'); + SET d_FEC2 = TIMESTAMP(d_END ,'23:59:59'); + + + +-- Ahora vamos a incrementar en unidades y valor el producto recibido en el rango de fechas del procedimiento + + INSERT INTO inv(Sector, w_id, Id_Article, Unidades, Valor) + SELECT i_SECTOR, TR.warehouse_id, C.Id_Article, sum(C.Cantidad ) + , sum(C.Cantidad * (nz(Costefijo)+nz(Embalajefijo)+nz(Portefijo)+nz(Comisionfija)) ) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos TP USING(tipo_id) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN warehouse w ON w.id = warehouse_id + JOIN article_selection USING(Id_Article) + WHERE landing BETWEEN d_FEC AND d_FEC2 + AND i_wh IN (0,TR.warehouse_id) + AND w.comisionantes + AND NOT redada + AND E.Id_Proveedor != ID_PROVEEDOR_INVENTARIO + AND reino_id != ID_REINO_OTROS + AND TR.warehouse_id != TR.warehouse_id_out + GROUP BY TR.warehouse_id, C.Id_Article; + + + + +/************************** SECTOR SALIDAS: 2 *****************************/ + +SET i_SECTOR = 2; + +-- Ahora vamos a restar en unidades y valor el producto que sale de los almacenes en el rango de fechas del procedimiento + + INSERT INTO inv(Sector, w_id, Id_Article, Unidades, Valor) + SELECT i_SECTOR, TR.warehouse_id_out, C.Id_Article, sum( -1 * C.Cantidad ) + , sum( -1 * C.Cantidad * (nz(Costefijo) + nz(Embalajefijo) )) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos TP USING(tipo_id) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN warehouse w ON w.id = warehouse_id_out + JOIN article_selection USING(Id_Article) + WHERE shipment BETWEEN d_FEC AND d_FEC2 + AND i_wh IN (0,TR.warehouse_id_out) + AND w.comisionantes + AND NOT redada + AND E.Id_Proveedor != ID_PROVEEDOR_INVENTARIO + AND reino_id != ID_REINO_OTROS + AND TR.warehouse_id != TR.warehouse_id_out + GROUP BY TR.warehouse_id_out, C.Id_Article ; + + + +/******************** SECTOR VENTAS: 3 **************************************/ + +SET i_SECTOR = 3; + + +DROP TEMPORARY TABLE IF EXISTS Cub; + CREATE TEMPORARY TABLE Cub + SELECT * FROM (SELECT * FROM bi.last_Id_Cubo order by Id_Compra desc) sub group by Id_Article, warehouse_id; + + ALTER TABLE Cub ADD PRIMARY KEY USING HASH (Id_Article, warehouse_id); + + + + +IF d_START >= '2015-10-01' THEN + + INSERT INTO inv(Sector, w_id, Id_Article, Unidades, Valor) + + + SELECT i_SECTOR + , w.id + , M.Id_Article + , sum(-1 * M.Cantidad ) as Unidades + , sum(-1 * IF(T.Id_Cliente IN (200,400),0,1) * IFNULL(bsv.importe,0)) as Valor + FROM Movimientos M + LEFT JOIN bs.ventas bsv on bsv.Id_Movimiento = M.Id_Movimiento + INNER JOIN Tickets T USING (Id_Ticket) + INNER JOIN Articles A ON A.Id_Article = M.Id_Article + INNER JOIN Tipos TP on TP.tipo_id = A.tipo_id + INNER JOIN warehouse w ON w.id = T.warehouse_id + JOIN article_selection `AS` ON `AS`.Id_Article = M.Id_Article + WHERE T.Fecha BETWEEN d_FEC AND d_FEC2 + AND i_wh IN (0,T.warehouse_id) + AND w.comisionantes + AND reino_id != ID_REINO_OTROS + /* + AND ( + T.Id_Cliente != ID_CLIENTE_COMPLEMENTOS + OR + TP.Id_Trabajador != ID_TRABAJADOR_MARIBEL + ) + */ + GROUP BY T.warehouse_id, Id_Article; + + + + +ELSE + + + + INSERT INTO inv(Sector, w_id, Id_Article, Unidades, Valor) + + + SELECT i_SECTOR, w.id, M.Id_Article, sum(-1 * M.Cantidad ) + , + + sum( -1 + * M.Cantidad + * IF(CS.Id_Cliente IN (200,400),0,1) + * IF( + T.Fecha >= '2015-10-01' + , M.CostFixat + , ( + ( M.Preu + * (100 - M.Descuento) + / 100 + ) + - IF(C.Descuento = 1 and T.Bultos > 0 and Fecha > '2013-07-01', + IFNULL( dblPORTE_m3 * (cm3_2(CB.Id_Cubo, CB.Id_Article) / 1000000) / CB.Packing ,0 ) + ,0) + ) + ) + + ) as Preu + + FROM Movimientos M + INNER JOIN Tickets T USING (Id_Ticket) + LEFT JOIN Cub CB ON CB.Id_Article = M.Id_Article AND T.warehouse_id = CB.warehouse_id + INNER JOIN Consignatarios CS USING(Id_Consigna) + INNER JOIN Clientes C ON C.Id_Cliente = CS.Id_Cliente + INNER JOIN Articles A ON A.Id_Article = M.Id_Article + INNER JOIN Tipos TP USING(tipo_id) + INNER JOIN warehouse w ON w.id = T.warehouse_id + JOIN article_selection `AS` ON `AS`.Id_Article = M.Id_Article + WHERE T.Fecha BETWEEN d_FEC AND d_FEC2 + AND i_wh IN (0,T.warehouse_id) + AND w.comisionantes + AND reino_id != ID_REINO_OTROS + /* + AND ( + T.Id_Cliente != ID_CLIENTE_COMPLEMENTOS + OR + TP.Id_Trabajador != ID_TRABAJADOR_MARIBEL + ) + */ + GROUP BY T.warehouse_id, Id_Article; + + +END IF; + + -- Ventas del año anterior + + DROP TEMPORARY TABLE IF EXISTS Ventas_Lastyear; + + CREATE TEMPORARY TABLE Ventas_Lastyear + SELECT CodigoTrabajador, TP.Id_Tipo, + + sum(M.Cantidad + * IF(CS.Id_Cliente IN (200,400),0,1) + * IF( + T.Fecha >= '2015-10-01' + , M.CostFixat + , ( + ( M.Preu + * (100 - M.Descuento) + / 100 + ) + - IF(C.Descuento = 1 and T.Bultos > 0 and Fecha > '2013-07-01', + IFNULL( dblPORTE_m3 * (cm3_2(CB.Id_Cubo, CB.Id_Article) / 1000000) / CB.Packing ,0 ) + ,0) + ) + ) + + ) as Importe + FROM Movimientos M + INNER JOIN Tickets T USING (Id_Ticket) + LEFT JOIN Cub CB ON CB.Id_Article = M.Id_Article AND T.warehouse_id = CB.warehouse_id + INNER JOIN Consignatarios CS USING(Id_Consigna) + INNER JOIN Clientes C ON C.Id_Cliente = CS.Id_Cliente + INNER JOIN Articles A ON A.Id_Article = M.Id_Article + INNER JOIN Tipos TP USING(tipo_id) + INNER JOIN Trabajadores TR ON TP.Id_Trabajador = TR.Id_Trabajador + INNER JOIN warehouse w ON w.id = T.warehouse_id + JOIN article_selection `AS` ON `AS`.Id_Article = M.Id_Article + WHERE T.Fecha BETWEEN TIMESTAMPADD(YEAR,-1,d_FEC) AND TIMESTAMPADD(YEAR,-1,d_FEC2) + AND i_wh IN (0,T.warehouse_id) + AND w.comisionantes + AND reino_id != ID_REINO_OTROS + /* + AND ( + T.Id_Cliente != ID_CLIENTE_COMPLEMENTOS + OR + TP.Id_Trabajador != ID_TRABAJADOR_MARIBEL + ) + */ + GROUP BY CodigoTrabajador, Id_Tipo; + + + + + + +/******************** SECTOR FINAL: 4 **************************************/ + +SET i_SECTOR = 4; + + +CASE intCASE + + + WHEN 3 THEN + + SET d_FEC = TIMESTAMP(TIMESTAMPADD(DAY,1,d_END),'00:00:00'); + SET d_FEC2 = TIMESTAMP(TIMESTAMPADD(DAY,-1,d_INV),'23:59:59'); + SET bolREVERSE = TRUE; + + ELSE + + SET d_FEC = TIMESTAMP(d_INV,'00:00:00'); + SET d_FEC2 = TIMESTAMP(d_END ,'23:59:59'); + SET bolREVERSE = FALSE; + + +END CASE; + +-- Ahora repetimos el proceso de inventario, para contabilizar el stock remanente. + +-- Inicializamos el inventario + + + INSERT INTO inv(Sector, w_id, Id_Article, Unidades, Valor) + SELECT i_SECTOR, TR.warehouse_id, C.Id_Article, sum(C.Cantidad), nz(Costefijo) + nz(Portefijo) + nz(Embalajefijo) + nz(Comisionfija) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos TP USING(tipo_id) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN warehouse w ON w.id = warehouse_id + JOIN article_selection USING(Id_Article) + WHERE landing = d_INV + AND i_wh IN (0,TR.warehouse_id) + AND E.Id_Proveedor = ID_PROVEEDOR_INVENTARIO + AND reino_id != ID_REINO_OTROS + AND w.comisionantes + AND TR.warehouse_id != TR.warehouse_id_out + GROUP BY TR.warehouse_id, C.Id_Article; + + + + + + +-- Se insertan las compras que llegan entre la fecha del inventario y la fecha inicial + + INSERT INTO inv(Sector, w_id, Id_Article, Unidades, Valor) + SELECT i_SECTOR, TR.warehouse_id, C.Id_Article, C.Cantidad * IF(bolREVERSE,-1,1), nz(Costefijo) + nz(Portefijo) + nz(Embalajefijo) + nz(Comisionfija) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos TP USING(tipo_id) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN warehouse w ON w.id = warehouse_id + JOIN article_selection USING(Id_Article) + WHERE landing BETWEEN d_FEC AND d_FEC2 + AND i_wh IN (0,TR.warehouse_id) + AND NOT redada + AND w.comisionantes + AND E.Id_Proveedor != 4 + AND reino_id != ID_REINO_OTROS + AND TR.warehouse_id != TR.warehouse_id_out + ORDER BY landing DESC + ON DUPLICATE KEY UPDATE inv.Unidades = inv.Unidades + (C.Cantidad * IF(bolREVERSE,-1,1)) + , Valor = IF( nz(Costefijo) > 0,nz(Costefijo) + nz(Portefijo) + nz(Embalajefijo) + nz(Comisionfija),Valor); + +-- Se sacan las que salen + + INSERT INTO inv(Sector, w_id, Id_Article, Unidades) + SELECT i_SECTOR, TR.warehouse_id_out, C.Id_Article, C.Cantidad * IF(bolREVERSE,1,-1) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos TP USING(tipo_id) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN warehouse w ON w.id = warehouse_id_out + JOIN article_selection USING(Id_Article) + WHERE shipment BETWEEN d_FEC AND d_FEC2 + AND i_wh IN (0,TR.warehouse_id_out) + AND NOT redada + AND w.comisionantes + AND E.Id_Proveedor != 4 + AND reino_id != ID_REINO_OTROS + + ON DUPLICATE KEY UPDATE inv.Unidades = inv.Unidades + (C.Cantidad * IF(bolREVERSE,1,-1)); + + +-- Ahora las ventas + + INSERT INTO inv(Sector, w_id, Id_Article, Unidades) + SELECT i_SECTOR, w.id, M.Id_Article, M.Cantidad * IF(bolREVERSE,1,-1) + FROM Movimientos M + INNER JOIN Tickets T USING (Id_Ticket) + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos TP USING(tipo_id) + INNER JOIN warehouse w ON w.id = T.warehouse_id + JOIN article_selection USING(Id_Article) + WHERE T.Fecha BETWEEN d_FEC AND d_FEC2 + AND i_wh IN (0,T.warehouse_id) + AND w.comisionantes + AND reino_id != ID_REINO_OTROS + ON DUPLICATE KEY UPDATE inv.Unidades = inv.Unidades + (M.Cantidad * IF(bolREVERSE,1,-1)); + +-- Valoramos el inventario final + + +UPDATE inv SET Valor = inv.Unidades * Valor WHERE Sector =4; + + +-- Resultado + +DROP TEMPORARY TABLE IF EXISTS Margen_Desglose; + +CREATE TEMPORARY TABLE Margen_Desglose + +SELECT CASE Sector + WHEN 0 THEN 'Inventario Inicial' + WHEN 1 THEN 'Entradas' + WHEN 2 THEN 'Salidas' + WHEN 3 THEN 'Ventas' + WHEN 4 THEN 'Inventario Final' END AS Seccion + , w.name as Almacen, r.reino as Reino, Id_Article, Article, Medida, Unidades,Id_Tipo, round(Valor,0) as Valor , round(Valor/Unidades,3) as Precio, Sector +FROM inv +JOIN Articles USING(Id_Article) +JOIN Tipos TP USING(tipo_id) +JOIN warehouse w ON w.id = w_id +JOIN reinos r ON r.id = TP.reino_id +WHERE Unidades != 0 +ORDER BY Almacen, Sector +; + + + + + +DROP TEMPORARY TABLE IF EXISTS Margen_Bruto; + +CREATE TEMPORARY TABLE Margen_Bruto + +SELECT Unidades_Vendidas, Coste, Venta,1 - round(coste / venta,2) as Margen +FROM ( +SELECT w.name as Almacen, r.reino as Reino, Id_Article, Article, Medida, sum(IF(Sector = 3, -1,0) * Unidades) as Unidades_Vendidas + , @coste:= round(sum( IF(Sector != 3, Valor * IF(Sector = 4,-1,1), 0) ) ,0) as Coste + , @venta:= round(sum( IF(Sector = 3, - Valor, 0 ) ),0) as Venta +FROM inv +JOIN Articles USING(Id_Article) +JOIN Tipos TP USING(tipo_id) +JOIN warehouse w ON w.id = w_id +JOIN reinos r ON r.id = TP.reino_id +WHERE Unidades != 0 + +) sub; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `inventario_multiple` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `inventario_multiple`(IN wh TINYINT(2), IN date_ticket DATETIME) +BEGIN +-- DEPRECATED USAR cache.available_refresh + DECLARE date_order DATETIME; + DECLARE date_end DATETIME DEFAULT CURDATE(); + DECLARE date_aux DATE; + DECLARE date_start DATETIME; + DECLARE date_yesterday DATETIME; + DECLARE date_tomorrow DATETIME; + DECLARE strWH VARCHAR(2); + + SET strWH = IF(wh,wh,'%'); + SET date_end = TIMESTAMPADD(DAY, 7, date_ticket); + + CALL article (); + + ALTER TABLE `article_inventory` + ADD `available` FLOAT(7,2) NOT NULL, + ADD `inventory` FLOAT(7,2) NOT NULL, + ADD `visible` FLOAT(7,2) NOT NULL; + + -- JGF 2015-02-19 Falla, el valor @camp es cero y falla Campanya + /* + SELECT + IF(@camp := DATEDIFF(campaign, date_ticket) BETWEEN 0 AND campaign_life, + TIMESTAMPADD(DAY, -campaign_life, campaign), + FechaInventario), + IF(@camp BETWEEN 0 AND campaign_life, + TIMESTAMP(campaign, '23:59:59'), + TIMESTAMP(TIMESTAMPADD(DAY, 15, date_ticket),'23:59:59')) + INTO date_start, date_end + FROM tblContadores;*/ + + SELECT + FechaInventario,TIMESTAMP(TIMESTAMPADD(DAY, 15, date_ticket),'23:59:59') + INTO date_start, date_end + FROM tblContadores; + + + SET date_order = TIMESTAMP(DATE(date_ticket), '00:00:00'); + SET date_tomorrow = TIMESTAMPADD(DAY, 1, date_order); + +-- Inventario hasta dia antes del ticket + CALL item_stock(wh,date_ticket,NULL); + + INSERT INTO article_inventory (article_id,inventory,visible,available) + SELECT item_id, stock, visible, available + FROM tmp_item; + + DROP TEMPORARY TABLE IF EXISTS tmp_item; + +-- Inventario ventas durante el dia del ticket + INSERT INTO article_inventory(article_id,visible) + + SELECT Id_Article, SUM(amount) AS Subtotal + + FROM ( + + SELECT Id_Article, -Cantidad AS amount + + FROM Movimientos M INNER JOIN Tickets T USING (Id_Ticket) + + WHERE Fecha >= date_order + + AND Fecha < date_tomorrow + + AND (M.OK != FALSE + + OR T.Etiquetasemitidas != FALSE + + OR T.Factura IS NOT NULL) + + AND T.warehouse_id = wh + + UNION ALL + + SELECT Id_Article, Cantidad + + FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) + + LEFT JOIN travel TR ON E.travel_id = TR.id + + WHERE TR.landing >= date_order + + AND TR.landing < date_tomorrow + + AND TR.received != FALSE + + AND TR.warehouse_id = wh + + AND E.Inventario = FALSE + + AND E.Redada = FALSE + + UNION ALL + + SELECT Id_Article, -Cantidad + + FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) + + LEFT JOIN travel TR ON E.travel_id = TR.id + + WHERE TR.shipment >= date_order + + AND TR.shipment < date_tomorrow + + AND TR.delivered != FALSE + + AND TR.warehouse_id_out = wh + + AND E.Inventario = FALSE + + AND E.Redada = FALSE + + ) AS T1 + + GROUP BY Id_Article + + ON DUPLICATE KEY UPDATE + + visible = inventory + VALUES(visible); + + + -- Disponible en el futuro + CALL item_travel (wh, date_order); + + SET date_aux = DATE(date_order); + + INSERT INTO article_inventory(article_id,available) + + SELECT Tic3.Id_Article, minacum(dat, amount, date_aux) AS sd + + FROM ( + + SELECT Tic2.Id_Article, DATE(Fecha) AS dat, SUM(amount) AS amount + + FROM ( + + SELECT Id_Article, Fecha, -Cantidad AS amount + + FROM Movimientos M + + INNER JOIN Tickets T USING (Id_Ticket) + + WHERE Fecha BETWEEN date_order AND date_end + + AND T.warehouse_id = wh + + UNION ALL + + SELECT Id_Article, TR.landing, Cantidad + + FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) + + LEFT JOIN travel TR ON E.travel_id = TR.id + + WHERE TR.landing BETWEEN date_order AND date_end + + AND TR.warehouse_id = wh + + AND E.Inventario = FALSE + + AND E.Redada = FALSE + + UNION ALL + + SELECT Id_Article, TR.shipment, -Cantidad + + FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) + + LEFT JOIN travel TR ON E.travel_id = TR.id + + WHERE TR.shipment BETWEEN date_order AND date_end + + AND TR.warehouse_id_out = wh + + AND E.Inventario = FALSE + + AND E.Redada = FALSE + + ) AS Tic2 + + GROUP BY Tic2.Id_Article, dat + + ) Tic3 + + LEFT JOIN Articles A ON Tic3.Id_Article = A.Id_Article + + LEFT JOIN Origen O ON O.id = A.id_origen + + LEFT JOIN item_travel t ON t.wh = O.warehouse_id + + WHERE dat < IFNULL(t.landing, date_end) + + GROUP BY Tic3.Id_Article + + ON DUPLICATE KEY UPDATE + + available = IFNULL(inventory,0) + VALUES(available); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `inventario_multiple_2` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `inventario_multiple_2`( + date_ticket DATETIME + ,wh TINYINT + ,days_max TINYINT +) +proc: BEGIN + DECLARE date_end DATETIME DEFAULT CURDATE(); + DECLARE date_start DATETIME; + DECLARE date_top DATETIME; + DECLARE date_tomorrow DATETIME; + + SET date_ticket = DATE(date_ticket); -- PAK + + ALTER TABLE `article_inventory` + ADD `avalaible` INT NOT NULL, + ADD `sd` INT NOT NULL, + ADD `rest` INT NOT NULL, + ADD `expected` INT NOT NULL, + ADD `inventory` INT NOT NULL, + ADD `visible` INT NOT NULL, + ADD `life` TINYINT NOT NULL DEFAULT '0'; + + IF date_ticket < CURDATE() + THEN + LEAVE proc; + END IF; + + SELECT FechaInventario INTO date_start FROM tblContadores; + + SET date_end = TIMESTAMP(TIMESTAMPADD(DAY, IF(days_max >= 0, days_max,15), date_ticket),'23:59:59'); + SET date_tomorrow = TIMESTAMPADD(DAY, 1,date_ticket); + SET date_top = TIMESTAMPADD(DAY, 1,date_end); + + -- Calculo del inventario dia D a las 24:00 zulu + + UPDATE article_inventory AI INNER JOIN + + ( + + SELECT Id_Article, SUM(amount) as Subtotal FROM + + ( + + SELECT Id_Article, -Cantidad AS amount + + FROM Movimientos M + JOIN Tickets T USING (Id_Ticket) + JOIN warehouse W ON W.id = T.warehouse_id + WHERE DATE(Fecha) BETWEEN date_start AND date_ticket + AND IF(wh = 0, W.is_comparative, wh =T.warehouse_id) + + UNION ALL + + SELECT Id_Article, Cantidad + FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) + LEFT JOIN travel TR ON E.travel_id = TR.id + JOIN warehouse W ON W.id = TR.warehouse_id -- PAK + WHERE TR.landing BETWEEN date_start AND date_ticket + AND IF(wh = 0, W.is_comparative, wh =TR.warehouse_id) + AND E.Inventario = 0 + AND E.Redada = 0 + + UNION ALL + + SELECT Id_Article, -Cantidad + FROM Compres C + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON E.travel_id = TR.id + JOIN warehouse W ON W.id = TR.warehouse_id_out + WHERE TR.shipment BETWEEN date_start AND date_ticket + AND IF(wh = 0, W.is_comparative, wh =TR.warehouse_id_out) + AND E.Inventario = 0 + AND E.Redada = 0 + + ) AS T1 + + GROUP BY Id_Article + + ) AS T2 + + ON AI.article_id = T2.Id_Article + + SET AI.inventory = T2.Subtotal, + + AI.visible = T2.Subtotal, + + AI.avalaible = T2.Subtotal, + + AI.sd = T2.Subtotal; + + -- Calculo del visible + + UPDATE article_inventory AI INNER JOIN + ( + SELECT Id_Article, SUM(amount) as Subtotal FROM + ( + SELECT Id_Article, Cantidad AS amount + FROM Movimientos M + JOIN Tickets T USING (Id_Ticket) + JOIN warehouse W ON W.id = T.warehouse_id -- PAK + WHERE Fecha >= date_ticket AND Fecha < date_tomorrow -- PAK + AND (M.OK = 0 AND T.Etiquetasemitidas = 0 AND T.Factura IS NULL) + AND IF(wh = 0, W.is_comparative, wh =T.warehouse_id) + + UNION ALL + + SELECT Id_Article, -Cantidad + FROM Compres C + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON E.travel_id = TR.id + JOIN warehouse W ON W.id = TR.warehouse_id -- PAK + WHERE TR.landing = date_ticket + AND TR.received = 0 + AND E.Inventario = 0 + AND E.Redada = 0 + AND IF(wh = 0, W.is_comparative, wh =TR.warehouse_id) + + UNION ALL + + SELECT Id_Article, Cantidad + FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) + LEFT JOIN travel TR ON E.travel_id = TR.id + INNER JOIN warehouse W ON W.id = TR.warehouse_id_out + WHERE TR.shipment = date_ticket + AND TR.delivered = 0 + AND E.Inventario = 0 + AND E.Redada = 0 + AND IF(wh = 0, W.is_comparative, wh =TR.warehouse_id_out) + + ) AS T1 + + GROUP BY Id_Article + + ) AS T2 + + ON AI.article_id = T2.Id_Article + + SET AI.visible = AI.visible + T2.Subtotal; + + -- Calculo del disponible + + CALL item_travel (wh, date_ticket); + + UPDATE article_inventory AI INNER JOIN + ( + SELECT Tic3.Id_Article, SUM(amount) AS sd, minacum(Fecha, amount, date_ticket) as smd FROM + ( + + SELECT Tic2.Id_Article, Fecha, SUM(amount) AS amount FROM + ( + SELECT Id_Article, DATE(Fecha) as Fecha, -Cantidad AS amount + FROM Movimientos M + JOIN Tickets T USING (Id_Ticket) + JOIN warehouse W ON W.id = T.warehouse_id + WHERE Fecha BETWEEN date_tomorrow AND date_end + AND IF(wh = 0, W.is_comparative, wh =T.warehouse_id) + + UNION ALL + + SELECT Id_Article, landing as Fecha, Cantidad + FROM Compres C + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON E.travel_id = TR.id + JOIN warehouse W ON W.id = TR.warehouse_id -- PAK + WHERE TR.landing BETWEEN date_tomorrow AND date_end + AND IF(wh = 0, W.is_comparative, wh =TR.warehouse_id) + AND E.Inventario = 0 + AND E.Redada = 0 + + UNION ALL + + SELECT Id_Article, shipment as Fecha, -Cantidad + FROM Compres C + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON E.travel_id = TR.id + JOIN warehouse W ON W.id = TR.warehouse_id_out + WHERE TR.shipment BETWEEN date_tomorrow AND date_end + AND IF(wh = 0, W.is_comparative, wh =TR.warehouse_id_out) + AND E.Inventario = 0 + AND E.Redada = 0 + + ) AS Tic2 + + GROUP BY Tic2.Id_Article, Fecha + ) Tic3 + + LEFT JOIN Articles A ON Tic3.Id_Article = A.Id_Article + LEFT JOIN Origen O ON O.id = A.id_origen + LEFT JOIN item_travel t ON t.wh = O.warehouse_id + + WHERE Fecha < IF(days_max < 0 AND t.landing IS NOT NULL, + t.landing, + date_top) + + GROUP BY Tic3.Id_Article + + + ) AS Tic5 + + ON Tic5.Id_Article = AI.article_id + SET AI.avalaible = IF(Tic5.smd > 0, AI.avalaible, AI.avalaible + Tic5.smd), + AI.sd = AI.inventory + Tic5.sd; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `inventario_multiple_inventarios` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `inventario_multiple_inventarios`(wh SMALLINT, date_ticket DATETIME) +BEGIN + DECLARE date_order DATETIME; + DECLARE date_end DATETIME DEFAULT CURDATE(); + DECLARE date_start DATETIME; + + CALL article (); + + ALTER TABLE article_inventory + ADD visible FLOAT(7,2) NOT NULL; + + -- Campaña + + SELECT + IF(@camp := DATEDIFF(campaign, date_ticket) BETWEEN 0 AND campaign_life , + TIMESTAMPADD(DAY, -campaign_life, campaign) , + FechaInventario), + IF(@camp BETWEEN 0 AND campaign_life, + TIMESTAMP(campaign, '23:59:59'), + TIMESTAMP(TIMESTAMPADD(DAY, 15, date_ticket),'23:59:59')) + INTO date_start, date_end + FROM tblContadores; + + SET date_order = TIMESTAMP(DATE(date_ticket), '00:00:00'); + + INSERT INTO article_inventory (article_id, visible) + SELECT Id_Article, SUM(amount) + FROM ( + SELECT Id_Article, -Cantidad AS amount + FROM Movimientos M INNER JOIN Tickets T USING (Id_Ticket) + WHERE Fecha >= date_start + AND Fecha < date_order + AND T.warehouse_id = wh + UNION ALL + SELECT Id_Article, Cantidad + FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) + LEFT JOIN travel TR ON E.travel_id = TR.id + WHERE TR.landing >= date_start + AND TR.landing < date_order + AND TR.warehouse_id = wh + AND E.Inventario = FALSE + UNION ALL + SELECT Id_Article, -Cantidad + FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) + LEFT JOIN travel TR ON E.travel_id = TR.id + WHERE TR.shipment >= date_start + AND TR.shipment < date_order + AND TR.warehouse_id_out = wh + AND E.Inventario = FALSE + ) AS T1 + GROUP BY Id_Article; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `inventario_multiple_joined` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `inventario_multiple_joined`( + date_ticket DATETIME + ,wh_joined TINYINT + ,days_max TINYINT +) +proc: BEGIN + DECLARE date_end DATETIME DEFAULT CURDATE(); + DECLARE date_start DATETIME; + DECLARE date_top DATETIME; + DECLARE date_tomorrow DATETIME; + DECLARE i_avalaible INTEGER; + DECLARE wh INTEGER; + + SET date_ticket = DATE(date_ticket); -- PAK + + ALTER TABLE `article_inventory` + ADD `avalaible` INT NOT NULL, + ADD `sd` INT NOT NULL, + ADD `rest` INT NOT NULL, + ADD `expected` INT NOT NULL, + ADD `inventory` INT NOT NULL, + ADD `visible` INT NOT NULL, + ADD `life` TINYINT NOT NULL DEFAULT '0'; + + IF date_ticket < CURDATE() + THEN + LEAVE proc; + END IF; + + SELECT FechaInventario INTO date_start FROM tblContadores; + + SET date_end = TIMESTAMP(TIMESTAMPADD(DAY, IF(days_max >= 0, days_max,15), date_ticket),'23:59:59'); + SET date_tomorrow = TIMESTAMPADD(DAY, 1,date_ticket); + SET date_top = TIMESTAMPADD(DAY, 1,date_end); + + -- Calculo del inventario dia D a las 24:00 zulu + + UPDATE article_inventory AI INNER JOIN + + ( + + SELECT Id_Article, SUM(amount) as Subtotal FROM + + ( + + SELECT Id_Article, -Cantidad AS amount + + FROM Movimientos M + + JOIN Tickets T USING (Id_Ticket) + JOIN warehouse_joined wj ON T.warehouse_id = wj.warehouse_id -- JGF 15/12/14 + WHERE DATE(Fecha) BETWEEN date_start AND date_ticket + AND wh_joined IN (wj.warehouse_alias_id, 0) + UNION ALL + + SELECT Id_Article, Cantidad + + FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) + + LEFT JOIN travel TR ON E.travel_id = TR.id + JOIN warehouse_joined wj ON TR.warehouse_id = wj.warehouse_id -- JGF 15/12/14 + WHERE TR.landing BETWEEN date_start AND date_ticket + AND wh_joined IN (wj.warehouse_alias_id, 0) + + AND E.Inventario = 0 + AND E.Redada = 0 + + UNION ALL + + SELECT Id_Article, -Cantidad + FROM Compres C + + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON E.travel_id = TR.id + JOIN warehouse_joined wj ON TR.warehouse_id_out = wj.warehouse_id -- JGF 15/12/14 + WHERE TR.shipment BETWEEN date_start AND date_ticket + AND wh_joined IN (wj.warehouse_alias_id,0) + AND E.Inventario = 0 + AND E.Redada = 0 + ) AS T1 + + GROUP BY Id_Article + + ) AS T2 + + ON AI.article_id = T2.Id_Article + + SET AI.inventory = T2.Subtotal, + + AI.visible = T2.Subtotal, + + AI.avalaible = T2.Subtotal, + + AI.sd = T2.Subtotal; + + SELECT avalaible INTO i_avalaible FROM article_inventory WHERE article_id = 21012; + + -- Calculo del visible + + UPDATE article_inventory AI INNER JOIN + ( + SELECT Id_Article, SUM(amount) as Subtotal FROM + ( + SELECT Id_Article, Cantidad AS amount + FROM Movimientos M + + JOIN Tickets T USING (Id_Ticket) + JOIN warehouse_joined wj ON T.warehouse_id = wj.warehouse_id -- JGF 15/12/14 + WHERE Fecha >= date_ticket AND Fecha < date_tomorrow -- PAK + AND (M.OK = 0 AND T.Etiquetasemitidas = 0 AND T.Factura IS NULL) + AND wh_joined IN (wj.warehouse_alias_id, 0) + UNION ALL + SELECT Id_Article, -Cantidad + FROM Compres C + + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON E.travel_id = TR.id + + JOIN warehouse_joined wj ON TR.warehouse_id = wj.warehouse_id -- JGF 15/12/14 + WHERE TR.landing = date_ticket + + AND TR.received = 0 + AND E.Inventario = 0 + AND E.Redada = 0 + AND wh_joined IN (wj.warehouse_alias_id, 0) + + UNION ALL + + SELECT Id_Article, Cantidad + FROM Compres C INNER JOIN Entradas E USING (Id_Entrada) + LEFT JOIN travel TR ON E.travel_id = TR.id + JOIN warehouse_joined wj ON TR.warehouse_id_out = wj.warehouse_id -- JGF 15/12/14 + WHERE TR.shipment = date_ticket + AND TR.delivered = 0 + AND E.Inventario = 0 + AND E.Redada = 0 + AND wh_joined IN (wj.warehouse_alias_id,0) + ) AS T1 + + GROUP BY Id_Article + + ) AS T2 + + ON AI.article_id = T2.Id_Article + + SET AI.visible = AI.visible + T2.Subtotal; + + -- Calculo del disponible + SELECT IF(COUNT(warehouse_id),0,warehouse_id) INTO wh FROM warehouse_joined WHERE warehouse_alias_id = wh_joined; + + CALL item_travel (wh, date_ticket); + + UPDATE article_inventory AI INNER JOIN + ( + SELECT Tic3.Id_Article, SUM(amount) AS sd, minacum(Fecha, amount, date_ticket) as smd FROM + ( + + SELECT Tic2.Id_Article, Fecha, SUM(amount) AS amount FROM + ( + SELECT Id_Article, DATE(Fecha) as Fecha, -Cantidad AS amount + FROM Movimientos M + + JOIN Tickets T USING (Id_Ticket) + + JOIN warehouse_joined wj ON T.warehouse_id = wj.warehouse_id -- JGF 15/12/14 + WHERE Fecha BETWEEN date_tomorrow AND date_end + AND wh_joined IN (wj.warehouse_alias_id, 0) + + UNION ALL + SELECT Id_Article, landing as Fecha, Cantidad + FROM Compres C + + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON E.travel_id = TR.id + + JOIN warehouse_joined wj ON TR.warehouse_id = wj.warehouse_id -- JGF 15/12/14 + WHERE TR.landing BETWEEN date_tomorrow AND date_end + AND wh_joined IN (wj.warehouse_alias_id, 0) + + AND E.Inventario = 0 + AND E.Redada = 0 + UNION ALL + SELECT Id_Article, shipment as Fecha, -Cantidad + FROM Compres C + + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON E.travel_id = TR.id + JOIN warehouse_joined wj ON TR.warehouse_id_out = wj.warehouse_id -- JGF 15/12/14 + WHERE TR.shipment BETWEEN date_tomorrow AND date_end + AND wh_joined IN (wj.warehouse_alias_id,0) + AND E.Inventario = 0 + AND E.Redada = 0 + ) AS Tic2 + + GROUP BY Tic2.Id_Article, Fecha + ) Tic3 + + LEFT JOIN Articles A ON Tic3.Id_Article = A.Id_Article + LEFT JOIN Origen O ON O.id = A.id_origen + LEFT JOIN item_travel t ON t.wh = O.warehouse_id + + WHERE Fecha < IF(days_max < 0 AND t.landing IS NOT NULL, + t.landing, + date_top) + + GROUP BY Tic3.Id_Article + + + ) AS Tic5 + + ON Tic5.Id_Article = AI.article_id + SET AI.avalaible = IF(Tic5.smd > 0, AI.avalaible, AI.avalaible + Tic5.smd), + AI.sd = AI.inventory + Tic5.sd; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `inventario_multiple_reservas` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `inventario_multiple_reservas`(date_ticket DATETIME, wh INT, days_max INT) +BEGIN + DECLARE date_end DATETIME DEFAULT CURDATE(); + DECLARE date_start DATETIME; + DECLARE i_avalaible INTEGER; + + SET date_ticket = DATE(date_ticket); + + CALL article (); + + INSERT INTO article_inventory (article_id) + SELECT a.Id_Article + FROM Articles a + JOIN Tipos tp ON tp.tipo_id = a.tipo_id + LEFT JOIN reinos r ON r.id = tp.reino_id + WHERE r.display <> 0; + + ALTER TABLE `article_inventory` + ADD `avalaible` INT(11) NOT NULL, + ADD `sd` INT(11) NOT NULL, + ADD `rest` INT(11) NOT NULL, + ADD `expected` INT(11) NOT NULL, + ADD `inventory` INT(11) NOT NULL, + ADD `visible` INT(11) NOT NULL, + ADD `life` TINYINT(1) NOT NULL DEFAULT '0'; + + SELECT FechaInventario INTO date_start FROM tblContadores; + + SET date_end = TIMESTAMP(TIMESTAMPADD(DAY, -1, date_ticket),'23:59:59'); + + -- Utilizo el valor clave 4848 para days_max para aprovechar el procedimiento para el frmCamiones de eti + + IF days_max = 4848 THEN + set date_ticket = date_end; + END IF; + + -- Calculo del inventario dia D a las 24:00 + + UPDATE article_inventory AI INNER JOIN + ( + SELECT Id_Article, SUM(amount) as Subtotal FROM ( + SELECT Id_Article, -Cantidad AS amount + FROM Movimientos M + JOIN Tickets T USING (Id_Ticket) + JOIN warehouse W ON W.id = T.warehouse_id + WHERE Fecha BETWEEN date_start AND date_end + AND wh IN (T.warehouse_id, 0) + AND NOT W.fuente + UNION ALL + SELECT Id_Article, Cantidad + FROM Compres C + JOIN Entradas E USING (Id_Entrada) + LEFT JOIN travel TR ON E.travel_id = TR.id + JOIN warehouse W ON W.id = TR.warehouse_id + WHERE TR.landing BETWEEN date_start AND date_ticket + AND wh IN (TR.warehouse_id, 0) + AND NOT W.fuente + AND E.Inventario = 0 + AND E.Redada = 0 + UNION ALL + SELECT Id_Article, -Cantidad + FROM Compres C + JOIN Entradas E USING (Id_Entrada) + JOIN travel TR ON E.travel_id = TR.id + JOIN warehouse W ON W.id = TR.warehouse_id_out + WHERE TR.shipment BETWEEN date_start AND date_end + AND wh IN (TR.warehouse_id_out,0) + AND NOT W.fuente + AND E.Inventario = 0 + AND E.Redada = 0 + ) AS T1 + GROUP BY Id_Article + ) AS T2 + ON AI.article_id = T2.Id_Article + SET AI.inventory = T2.Subtotal, + AI.visible = T2.Subtotal, + AI.avalaible = T2.Subtotal, + AI.sd = T2.Subtotal; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `inventario_valorado` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `inventario_valorado`(IN d_FEC DATE, IN bol_DESGLOSE BOOLEAN) +BEGIN + + + + + DECLARE d_INV DATE; + DECLARE bolREVERSE BOOLEAN DEFAULT 0; + DECLARE d_INV2 DATE; + + SELECT landing INTO d_INV + FROM travel TR + INNER JOIN Entradas E ON E.travel_id = TR.id + WHERE landing <= d_FEC + AND E.Id_Proveedor = 4 + ORDER BY landing DESC + LIMIT 1; + + + + SET bolREVERSE = IF (d_INV is null, 1, 0); + + + IF bolREVERSE THEN + + SELECT landing INTO d_INV2 + FROM travel TR + INNER JOIN Entradas E ON E.travel_id = TR.id + WHERE landing >= d_FEC + AND E.Id_Proveedor = 4 + ORDER BY landing ASC + LIMIT 1; + + SET d_INV = TIMESTAMPADD(DAY,1,d_FEC); + SET d_FEC = d_INV2; + + + + END IF; + + DROP TEMPORARY TABLE IF EXISTS inv; + + CREATE TEMPORARY TABLE inv + (w_id SMALLINT, + Id_Article BIGINT, + cantidad INT, + coste DOUBLE DEFAULT 0, + total DOUBLE DEFAULT 0) ENGINE = MEMORY; + + + ALTER TABLE inv ADD PRIMARY KEY USING HASH (w_id, Id_Article); + + + + IF bolREVERSE = 1 THEN + + INSERT INTO inv(w_id, Id_Article, cantidad) + SELECT TR.warehouse_id, C.Id_Article, SUM(C.Cantidad) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN Tipos t USING(tipo_id) + INNER JOIN warehouse w ON w.id = warehouse_id + WHERE landing = d_FEC + AND E.Id_Proveedor = 4 + AND NOT w.fuente + AND t.inventory + AND reino_id NOT IN (7) + GROUP BY TR.warehouse_id, C.Id_Article; + + END IF; + + INSERT INTO inv(w_id, Id_Article, cantidad) + SELECT TR.warehouse_id, C.Id_Article, C.Cantidad * IF(bolREVERSE,-1,1) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN Tipos t USING(tipo_id) + INNER JOIN warehouse w ON w.id = TR.warehouse_id + WHERE landing BETWEEN d_INV AND TIMESTAMPADD(DAY, IF(bolREVERSE,-1,0) ,d_FEC) + AND NOT redada + AND NOT w.fuente + AND reino_id NOT IN (7) + AND t.inventory + ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + (C.Cantidad * IF(bolREVERSE,-1,1)); + + INSERT INTO inv(w_id, Id_Article, cantidad) + SELECT TR.warehouse_id_out, C.Id_Article, C.Cantidad * IF(bolREVERSE,1,-1) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN Tipos t USING(tipo_id) + INNER JOIN warehouse w ON w.id = warehouse_id_out + WHERE shipment BETWEEN d_INV AND TIMESTAMPADD(DAY, IF(bolREVERSE,-1,0) ,d_FEC) + AND NOT redada + AND NOT w.fuente + AND reino_id NOT IN (7) + AND t.inventory + ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + (C.Cantidad * IF(bolREVERSE,1,-1)); + + INSERT INTO inv(w_id, Id_Article, cantidad) + SELECT w.id, M.Id_Article, M.Cantidad * IF(bolREVERSE,1,-1) + FROM Movimientos M + INNER JOIN Tickets T USING (Id_Ticket) + INNER JOIN Clientes C USING(Id_Cliente) + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos t USING(tipo_id) + INNER JOIN warehouse w ON w.id = warehouse_id + WHERE T.Fecha BETWEEN d_INV AND TIMESTAMPADD(DAY, -1 ,d_FEC) + AND NOT w.fuente + AND reino_id NOT IN (7) + AND t.inventory + ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + M.Cantidad * IF(bolREVERSE,1,-1); + + + INSERT INTO inv(w_id, Id_Article, cantidad) + SELECT w.id, M.Id_Article, M.Cantidad * IF(bolREVERSE,0,-1) + FROM Movimientos M + INNER JOIN Tickets T USING (Id_Ticket) + INNER JOIN Clientes C USING(Id_Cliente) + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos t USING(tipo_id) + INNER JOIN warehouse w ON w.id = warehouse_id + WHERE T.Fecha = d_FEC + AND (d_FEC <> CURDATE() or (M.OK <> 0 or T.Etiquetasemitidas <> 0 )) + AND NOT w.fuente + AND reino_id NOT IN (7) + AND t.inventory + ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + M.Cantidad * IF(bolREVERSE,0,-1); + + CALL item_last_buy_(NULL,d_FEC); + + UPDATE inv + JOIN t_item_last_buy lb ON w_id = lb.warehouse_id AND inv.Id_Article = lb.item_id + JOIN Compres C ON C.Id_Compra = lb.buy_id + SET total = inv.cantidad * (ifnull(C.Costefijo,0) + IFNULL(C.Embalajefijo,0) + IFNULL(C.Portefijo,0) + IFNULL(C.Comisionfija,0)), + coste = ifnull(C.Costefijo,0) + IFNULL(C.Embalajefijo,0) + IFNULL(C.Portefijo,0) + IFNULL(C.Comisionfija,0) + WHERE inv.cantidad <> 0; + + DELETE FROM inv WHERE Cantidad IS NULL or Cantidad = 0; + + IF bol_DESGLOSE THEN + + SELECT w_id, Id_Article, Article, Medida, Cantidad,Id_Tipo,reino_id, coste, cast(total as decimal(10,2)) total + FROM inv + JOIN warehouse w on w.id = w_id + JOIN Articles USING(Id_Article) + JOIN Tipos TP USING(tipo_id) + where w.valuatedInventory + and total > 0 + order by total desc; + + ELSE + + SELECT w.name as Almacen, r.reino as Reino, cast(total as decimal) as Euros + FROM inv + JOIN warehouse w ON w.id = w_id + JOIN Articles A USING(Id_Article) + JOIN Tipos t USING(tipo_id) + JOIN reinos r ON r.id = t.reino_id + where w.valuatedInventory; + + END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `inventario_valorado_FTH` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `inventario_valorado_FTH`(IN d_FEC DATE, IN bol_DESGLOSE BOOLEAN, IN inv_value_new DOUBLE) +BEGIN + + + DECLARE emp_id INT DEFAULT 791; + DECLARE inv_value DOUBLE ; + + DECLARE d_INV DATE; + DECLARE bolREVERSE BOOLEAN DEFAULT 0; + DECLARE d_INV2 DATE; + + SELECT landing INTO d_INV + + FROM travel TR + + INNER JOIN Entradas E ON E.travel_id = TR.id + + WHERE landing <= d_FEC + + AND E.Id_Proveedor = 4 + + ORDER BY landing DESC + + LIMIT 1; + + + + SET bolREVERSE = IF (d_INV is null, 1, 0); + + + IF bolREVERSE THEN + + SELECT landing INTO d_INV2 + + FROM travel TR + + INNER JOIN Entradas E ON E.travel_id = TR.id + + WHERE landing >= d_FEC + + AND E.Id_Proveedor = 4 + + ORDER BY landing ASC + + LIMIT 1; + + SET d_INV = TIMESTAMPADD(DAY,1,d_FEC); + SET d_FEC = d_INV2; + + + + END IF; + +DROP TEMPORARY TABLE IF EXISTS inv; + +CREATE TEMPORARY TABLE inv + (w_id SMALLINT, + Id_Article BIGINT, + cantidad INT, + landing DATE, + Proveedor VARCHAR(30), + Id_Entrada BIGINT, + coste DOUBLE DEFAULT 0, + total DOUBLE DEFAULT 0) ENGINE = MEMORY; + + +ALTER TABLE inv ADD PRIMARY KEY USING HASH (w_id, Id_Article); + + + +IF bolREVERSE = 1 THEN + + INSERT INTO inv(w_id, Id_Article, cantidad) + SELECT TR.warehouse_id, C.Id_Article, SUM(C.Cantidad) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN Tipos t USING(tipo_id) + INNER JOIN warehouse w ON w.id = warehouse_id + WHERE landing = d_FEC + AND E.Id_Proveedor = 4 + AND NOT w.fuente + AND A.tipo_id NOT IN (21,7) + AND reino_id NOT IN (6,7) + GROUP BY TR.warehouse_id, C.Id_Article; + + + +END IF; + + + + INSERT INTO inv(w_id, Id_Article, cantidad) + SELECT TR.warehouse_id, C.Id_Article, C.Cantidad * IF(bolREVERSE,-1,1) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN Tipos t USING(tipo_id) + INNER JOIN warehouse w ON w.id = TR.warehouse_id + WHERE landing BETWEEN d_INV AND TIMESTAMPADD(DAY, IF(bolREVERSE,-1,0) ,d_FEC) + AND NOT redada + AND NOT w.fuente + AND reino_id NOT IN (6,7) + AND A.tipo_id NOT IN (21,7) + ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + (C.Cantidad * IF(bolREVERSE,-1,1)); + +-- SELECT * FROM inv WHERE Id_Article = 10067; + + INSERT INTO inv(w_id, Id_Article, cantidad) + SELECT TR.warehouse_id_out, C.Id_Article, C.Cantidad * IF(bolREVERSE,1,-1) + FROM Compres C + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Entradas E USING (Id_Entrada) + INNER JOIN travel TR ON TR.id = E.travel_id + INNER JOIN Tipos t USING(tipo_id) + INNER JOIN warehouse w ON w.id = warehouse_id_out + WHERE shipment BETWEEN d_INV AND TIMESTAMPADD(DAY, IF(bolREVERSE,-1,0) ,d_FEC) + AND NOT redada + AND NOT w.fuente + AND reino_id NOT IN (6,7) + AND A.tipo_id NOT IN (21,7) + ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + (C.Cantidad * IF(bolREVERSE,1,-1)); + + + +-- SELECT * FROM inv WHERE Id_Article = 10067; + + INSERT INTO inv(w_id, Id_Article, cantidad) + SELECT w.id, M.Id_Article, M.Cantidad * IF(bolREVERSE,1,-1) + FROM Movimientos M + INNER JOIN Tickets T USING (Id_Ticket) + INNER JOIN Clientes C USING(Id_Cliente) + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos t USING(tipo_id) + INNER JOIN warehouse w ON w.id = warehouse_id + WHERE T.Fecha BETWEEN d_INV AND TIMESTAMPADD(DAY, -1 ,d_FEC) + AND empresa_id = emp_id AND NOT w.fuente + AND reino_id NOT IN (6,7) + AND A.tipo_id NOT IN (21,7) + ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + M.Cantidad * IF(bolREVERSE,1,-1); + +-- SELECT * FROM inv WHERE Id_Article = 10067; + + INSERT INTO inv(w_id, Id_Article, cantidad) + SELECT w.id, M.Id_Article, M.Cantidad * IF(bolREVERSE,0,-1) + FROM Movimientos M + INNER JOIN Tickets T USING (Id_Ticket) + INNER JOIN Clientes C USING(Id_Cliente) + INNER JOIN Articles A USING(Id_Article) + INNER JOIN Tipos t USING(tipo_id) + INNER JOIN warehouse w ON w.id = warehouse_id + WHERE T.Fecha = d_FEC + AND (d_FEC <> CURDATE() or (M.OK <> 0 or T.Etiquetasemitidas <> 0 )) + AND NOT w.fuente + AND empresa_id = emp_id + AND reino_id NOT IN (6,7) + AND A.tipo_id NOT IN (21,7) + ON DUPLICATE KEY UPDATE inv.cantidad = inv.cantidad + M.Cantidad * IF(bolREVERSE,0,-1); + +-- SELECT * FROM inv WHERE Id_Article = 10067; + +UPDATE inv +JOIN ( SELECT * FROM + ( + SELECT Id_Article + , warehouse_id + , Id_Entrada + , landing + , IF(Id_Proveedor = 13 AND warehouse_id_out = 7, 'VNH',Proveedor) Proveedor + , ifnull(C.Costefijo,0) + + IFNULL(C.Embalajefijo,0) + + IFNULL(C.Portefijo,0) + + IFNULL(C.Comisionfija,0) cost + FROM Compres C + JOIN Entradas E using(Id_Entrada) + JOIN Proveedores P using(Id_Proveedor) + JOIN travel tr on tr.id = travel_id + WHERE empresa_id = emp_id + AND landing between '2015-01-02' and '2015-08-31' + AND noVincular = FALSE + AND E.Id_Proveedor NOT IN (12,4,30,850,963,IF(warehouse_id_out = 7, -0.48, 13)) + AND NOT redada + ORDER BY landing DESC + ) sub + GROUP BY Id_Article, warehouse_id + ) lb ON w_id = lb.warehouse_id AND inv.Id_Article = lb.Id_Article + +SET total = inv.cantidad * cost, +coste = cost, +inv.landing = lb.landing, +inv.Proveedor = lb.Proveedor, +inv.Id_Entrada = lb.Id_Entrada +WHERE inv.cantidad > 0; + +DELETE FROM inv WHERE Cantidad IS NULL or Cantidad <= 0 or total = 0; + + +-- Incrementamos las cantidades para alcanzar el valor fijado al inicio +SELECT SUM(total) INTO inv_value FROM inv; + +UPDATE inv SET cantidad = ROUND(cantidad * inv_value_new / inv_value ,0); +UPDATE inv SET total = cantidad * coste; + + +IF bol_DESGLOSE THEN + + + + +SELECT inv.*, Article, Medida, Id_Tipo,reino_id +FROM inv +JOIN Articles USING(Id_Article) +JOIN Tipos TP USING(tipo_id) +where w_id IN (1,44, 5) -- JGF 2015-06-08 afegeix 41 a peticio de MAV +and total > 0 +order by total desc; + +ELSE + +SELECT w.name as Almacen, r.reino as Reino, total as Euros +FROM inv +JOIN warehouse w ON w.id = w_id +JOIN Articles A USING(Id_Article) +JOIN Tipos t USING(tipo_id) +JOIN reinos r ON r.id = t.reino_id +; + +END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `inventory_refresh` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `inventory_refresh`() +BEGIN +/** + * Recalcula los inventarios de todos los almacenes. + */ + INSERT INTO daily_task_log + SET consulta = 'inventory_refresh-begin'; + + CALL article_inventory_warehouses (TIMESTAMPADD(DAY, -10, CURDATE())); + + INSERT INTO daily_task_log + SET consulta = 'inventory_refresh-end'; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoice_newkk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoice_newkk`( + customer_id INT, + serie VARCHAR(10), + date_ini DATE, + date_end DATE, + date_invoice DATETIME, + ticket_id INT, + empresa_act INT, + Id_Trabajador INT +) +BEGIN + DECLARE invoice_id VARCHAR(30) DEFAULT NULL; + DECLARE date_vec DATE DEFAULT date_invoice; + DECLARE day_vec INT; + DECLARE bi_r DOUBLE DEFAULT 0; + DECLARE bi_g DOUBLE DEFAULT 0; + DECLARE bi_n DOUBLE DEFAULT 0; + DECLARE iva_r DOUBLE DEFAULT 0; + DECLARE iva_g DOUBLE DEFAULT 0; + DECLARE re_r DOUBLE DEFAULT 0; + DECLARE re_g DOUBLE DEFAULT 0; + DECLARE dblImporte DOUBLE DEFAULT 0; + DECLARE intpais_id TINYINT DEFAULT 1; + DECLARE intFac INTEGER; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + SELECT TIMESTAMP (date_ini, '00:00:00') into date_ini; + + SET date_invoice = IFNULL(date_invoice,CURDATE()); + + IF date_invoice >= '2015-12-01' AND empresa_act = 791 AND serie <> 'A' THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT ='ERROR_FTH_NO_EXISTE'; + END IF; + + DROP TEMPORARY TABLE IF EXISTS `iva_base`; + CREATE TEMPORARY TABLE `iva_base` + ( + `id` VARCHAR(3) NOT NULL, + `base` DOUBLE NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) + ) + ENGINE = MEMORY; + + DROP TEMPORARY TABLE IF EXISTS `ticket_invoice`; + CREATE TEMPORARY TABLE `ticket_invoice` + ( + `ticket_id` INT NOT NULL, + PRIMARY KEY (`ticket_id`) + ) + ENGINE = MEMORY; + + START TRANSACTION; + + SELECT pais_id INTO intpais_id FROM Proveedores WHERE Id_Proveedor = empresa_act; + + IF ticket_id = 0 THEN + + INSERT INTO ticket_invoice (ticket_id) SELECT Id_Ticket FROM Tickets WHERE (Fecha BETWEEN date_ini + AND DAYEND(date_end)) AND Id_Cliente = customer_id AND Factura IS NULL AND empresa_id = empresa_act ; + + ELSE + + INSERT INTO ticket_invoice (ticket_id) SELECT Id_Ticket FROM Tickets WHERE Id_Ticket = ticket_id + AND Factura IS NULL ; + + END IF; +-- Elimina tickets sense moviments + UPDATE Tickets INNER JOIN (SELECT COUNT(Movimientos.Id_Movimiento) AS num, ticket_invoice.ticket_id AS ticket_id + FROM ticket_invoice LEFT JOIN Movimientos ON ticket_invoice.ticket_id = Movimientos.Id_Ticket + GROUP BY ticket_invoice.ticket_id HAVING num = 0) counter + ON Tickets.Id_Ticket = counter.ticket_id SET Tickets.Fecha = '1999-01-01 00:00:00'; + + -- Eliminem els tickets que no han de ser facturats + DELETE ticket_invoice.* FROM ticket_invoice INNER JOIN Tickets ON ticket_invoice.ticket_id = Tickets.Id_Ticket + INNER JOIN Clientes ON Tickets.Id_Cliente = Clientes.Id_cliente WHERE YEAR(Tickets.Fecha) < 2001 AND invoice; + + IF (SELECT COUNT(*) FROM ticket_invoice) > 0 THEN + + INSERT INTO iva_base (id) SELECT tipoiva FROM tblIVA; + + UPDATE iva_base + INNER JOIN + (SELECT tipo, SUM(base) base + FROM + (SELECT t.tipo, red(m.Cantidad * m.Preu * (100 - Descuento) / 100) AS base + FROM + Movimientos m + INNER JOIN ticket_invoice ti ON m.Id_Ticket = ti.ticket_id + INNER JOIN (SELECT t.tipo, Id_Article + FROM + (SELECT + date, iva_codigo_id, ic.tipo, iva_group_id + FROM + iva_group_codigo gi + INNER JOIN iva_codigo ic ON gi.iva_codigo_id = ic.id + INNER JOIN iva_tipo itp ON itp.id = ic.iva_tipo_id + WHERE + date <= date_invoice + AND Id_Pais = intpais_id + ORDER BY date DESC) t + INNER JOIN Articles USING (iva_group_id) + GROUP BY Id_Article) t USING (Id_Article)) sub + GROUP BY tipo) iva_movement ON iva_base.id = iva_movement.tipo + SET + iva_base.base = iva_movement.base; + + IF (serie = 'H' OR serie = 'V' OR serie = 'E' OR serie = 'X') then + SELECT SUM(base) into dblImporte from iva_base; + ELSE + + SET bi_r = (SELECT base FROM iva_base WHERE id = 'R'); + + SET bi_g = (SELECT base FROM iva_base WHERE id = 'G'); + SET bi_n = (SELECT base FROM iva_base WHERE id = '0'); + SET iva_r = red(bi_r * (SELECT iva FROM iva_codigo INNER JOIN iva_tipo it ON it.id = iva_tipo_id + WHERE tipo = 'R' AND Id_Pais = intpais_id AND Fecha <= date_invoice and iva ORDER BY fecha DESC, recargo DESC LIMIT 1) / 100 ); + SET iva_g = red(bi_g * (SELECT iva FROM iva_codigo INNER JOIN iva_tipo it ON it.id = iva_tipo_id + WHERE tipo = 'G' AND Id_Pais = intpais_id AND Fecha <= date_invoice and iva ORDER BY fecha DESC, recargo DESC LIMIT 1) / 100 ); + IF (SELECT IF(RE = 0, FALSE, TRUE) FROM Clientes WHERE Clientes.Id_cliente = customer_id) THEN + + SET re_r = red(bi_r * (SELECT recargo FROM iva_codigo INNER JOIN iva_tipo it ON it.id = iva_tipo_id + WHERE tipo = 'R' AND Id_Pais = intpais_id AND Fecha <= date_invoice and iva ORDER BY fecha DESC, recargo DESC LIMIT 1) / 100 ); + SET re_g = red(bi_g * (SELECT recargo FROM iva_codigo INNER JOIN iva_tipo it ON it.id = iva_tipo_id + WHERE tipo = 'G' AND Id_Pais = intpais_id AND Fecha <= date_invoice and iva ORDER BY fecha DESC, recargo DESC LIMIT 1) / 100 ); + END IF; + SET dblImporte = bi_r + bi_g + bi_n + iva_r + iva_g + re_r + re_g ; + END IF; + + END IF; + + IF dblImporte <> 0 THEN + + SELECT Vencimiento INTO day_vec FROM Clientes WHERE Id_cliente = customer_id; + SET date_vec = TIMESTAMPADD(DAY, day_vec, date_vec); + + -- el trigger añade el siguiente Id_Factura correspondiente a la serie + INSERT INTO Facturas + ( + Id_Factura, + Serie, + Fecha, + Id_Cliente, + BI7, + BI16, + IVA7, + IVA16, + RE1, + RE4, + Importe, + Vencimiento, + empresa_id + ) + VALUES + ( + 1, + serie, + date_invoice, + customer_id, + bi_r, + bi_g, + iva_r, + iva_g, + re_r, + re_g, + dblImporte, + date_vec, + empresa_act + ); + + SET intFac = LAST_INSERT_ID(); + + SELECT Id_Factura INTO invoice_id FROM Facturas + WHERE factura_id = intFac; + + UPDATE Tickets INNER JOIN ticket_invoice ON Tickets.Id_Ticket = ticket_invoice.ticket_id + SET Factura = invoice_id, Etiquetasemitidas = TRUE; + + DROP TEMPORARY TABLE IF EXISTS tmp.updateInter; + CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY + SELECT s.id,ti.ticket_id,Id_Trabajador + FROM ticket_invoice ti + JOIN vn.ticketState ts ON ti.ticket_id = ts.ticket + JOIN state s + WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = vn.getAlert3State(ti.ticket_id); + + INSERT INTO vncontrol.inter(state_id,Id_Ticket,Id_Trabajador) + SELECT * FROM tmp.updateInter; + + INSERT INTO Tickets_dits (idaccion_dits,Id_Trabajador,Id_Ticket,value_old,value_new) + SELECT 111/*Factura serie*/ ,Id_Trabajador,ti.ticket_id,NULL,serie FROM ticket_invoice ti; + END IF; + + DROP TEMPORARY TABLE `iva_base`; + DROP TEMPORARY TABLE `ticket_invoice`; + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `itemTagArrangedUpdate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `itemTagArrangedUpdate`(IN vItem BIGINT) +BEGIN +/** + * DEPRECATED + **/ + CALL vn.itemTagArrangedUpdate(vItem); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `itemTagArrangedUpdate_launcher` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `itemTagArrangedUpdate_launcher`() +BEGIN + + call vn2008.itemTagArrangedUpdate(0); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `itemTagUpdatePriority` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `itemTagUpdatePriority`(IN vItem INT) +BEGIN +/* +* DEPRECATED +*/ + +CALL vn.itemTagUpdatePriority(vItem); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_buffer_tarifa_traveltreekk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_buffer_tarifa_traveltreekk`(v_date DATE, v_consigna INT, v_agencia INT, i_order INT, v_wh SMALLINT) +BEGIN + -- v_date fecha de recepcion de mercancia + + DECLARE done TINYINT DEFAULT 0; + DECLARE v_shipment DATE; + DECLARE v_agency_id INT; + + DECLARE cur1 CURSOR FOR + SELECT warehouse_id, Fecha_envio + FROM travel_tree; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + + -- establecemos los almacenes y las fechas que van a entrar al dispo_multi + + SELECT agency_id INTO v_agency_id FROM Agencias WHERE Id_Agencia = v_agencia; + + -- Si pasamos un almacen significa que estamos recalculando el dispo y el precio para un ticket existente + + IF v_wh = 0 + THEN + CALL travel_tree(v_date,v_consigna, v_agency_id); + ELSE + DROP TEMPORARY TABLE IF EXISTS travel_tree; + + CREATE TEMPORARY TABLE travel_tree ( + warehouse_id SMALLINT NOT NULL, + Fecha_envio DATE NOT NULL, + Fecha_recepcion DATE NOT NULL, + PRIMARY KEY ( warehouse_id) + ) ENGINE = MEMORY; + + INSERT INTO travel_tree + SELECT v_wh, v_date, v_date; + END IF; + + -- Ejecutamos item_buffer_tarifa para cada registro del cursos, y almacenaremos los valores acumulados, para el buffer y para los componentes + + OPEN cur1; + FETCH cur1 INTO v_wh, v_shipment; + + DROP TEMPORARY TABLE IF EXISTS buffer_multi; + CREATE TEMPORARY TABLE buffer_multi ( + warehouse_id tinyint(4) NOT NULL , + Id_Article int(11) NOT NULL , + visible double DEFAULT NULL, + available double DEFAULT NULL, + future date DEFAULT NULL, + buy_inc int(11) DEFAULT NULL, + buy_last date DEFAULT NULL, + buy_id int(11) DEFAULT NULL, + `fixed` tinyint(4) DEFAULT '0', + rate_0 double DEFAULT NULL, + rate_1 double DEFAULT NULL, + rate_2 double DEFAULT NULL, + rate_3 double DEFAULT NULL, + Packing int(8) DEFAULT 1, + Grouping int(8) DEFAULT 1, + Productor VARCHAR(45) DEFAULT NULL, + caja tinyint(4) DEFAULT '0', + Origen VARCHAR(3) NOT NULL DEFAULT '---', + mark tinyint(4) DEFAULT '0', + `comment` VARCHAR(100), + foto VARCHAR(50), + Id_Tipo smallint(5), + Article VARCHAR(50), + PRIMARY KEY (Id_Article, warehouse_id) + ) ENGINE = MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ; + + WHILE NOT done + DO + CALL item_buffer_tarifa(v_wh, v_shipment, v_consigna, FALSE, v_agencia); + + -- eliminaremos PCA de Silla FV y viceversa + + INSERT INTO buffer_multi(warehouse_id, Id_Article, visible, available, future, buy_inc, buy_last, buy_id, `fixed`, rate_0, rate_1, rate_2, rate_3, Packing, Grouping, Productor, caja, Origen, mark, `comment`, foto, Id_Tipo, Article) + SELECT v_wh, id, visible, available, future, buy_inc, buy_last, buy_id, `fixed`, rate_0, rate_1, rate_2, rate_3, Packing, Grouping, Productor, bb.caja, Origen, mark, `comment`, A.Foto, A.tipo_id, A.Article + FROM bionic_buffer bb + JOIN Articles A ON A.Id_Article = bb.id + JOIN Tipos TP ON TP.tipo_id = A.tipo_id + WHERE NOT (v_wh = 44 AND TP.reino_id IN (1,5)) + AND NOT (v_wh = 1 AND TP.reino_id NOT IN (1,5)); + + INSERT INTO order_components(order_id, warehouse_id, Id_Article, Valor, Id_Componente) + SELECT i_order, v_wh, bb.Id_Article, Valor, Id_Componente + FROM components bb + JOIN Articles A ON A.Id_Article = bb.Id_Article + JOIN Tipos TP ON TP.tipo_id = A.tipo_id + WHERE NOT (v_wh = 44 AND TP.reino_id IN (1,5)) + AND NOT (v_wh = 1 AND TP.reino_id NOT IN (1,5)); + + DROP TEMPORARY TABLE bionic_buffer; + DROP TEMPORARY TABLE components; + + FETCH cur1 INTO v_wh, v_shipment; + END WHILE; + + CLOSE cur1; + + DROP TEMPORARY TABLE IF EXISTS buffer_multi_lotes; + + CREATE TEMPORARY TABLE buffer_multi_lotes + ENGINE = MEMORY + SELECT buy_last as landing, warehouse_id, Id_Article, FLOOR(available/IF(caja = 1,Grouping,1)) AS Items, + IF(caja = 1,Grouping,1) AS Grouping, rate_1 AS Precio, 1 AS tarifa_class + FROM buffer_multi + WHERE caja < 2 + AND (Packing > Grouping or caja = 0); + + INSERT INTO buffer_multi_lotes + SELECT buy_last, warehouse_id, Id_Article, FLOOR(available/Packing) AS items, Packing AS Grouping, rate_2 AS Precio,2 AS tarifa_class + FROM buffer_multi + WHERE Packing > 0 + AND available > Packing; + + INSERT INTO buffer_multi_lotes + SELECT buy_last, warehouse_id, Id_Article, 1 AS items, available AS Grouping, rate_3 AS Precio,3 AS tarifa_class + FROM buffer_multi; + + DROP TEMPORARY TABLE travel_tree; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_buffer_tarifa_traveltree_dupkk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_buffer_tarifa_traveltree_dupkk`( + v_date DATE, -- fecha de recepcion de mercancia + v_consigna INT, + v_agencia INT, + i_order INT, + v_wh TINYINT) +BEGIN + DECLARE v_shipment DATE; + DECLARE v_agency_id INT; + DECLARE done BOOL DEFAULT FALSE; + DECLARE cur CURSOR FOR + SELECT warehouse_id, Fecha_envio FROM travel_tree; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + CALL cache.order_clean (i_order); + + -- Establecemos los almacenes y las fechas que van a entrar al dispo_multi + + SELECT agency_id INTO v_agency_id FROM Agencias WHERE Id_Agencia = v_agencia; + + -- Si pasamos un almacen significa que estamos recalculando el dispo y el precio para un ticket existente + + DROP TEMPORARY TABLE IF EXISTS travel_tree; + + IF v_wh = 0 + THEN + CALL vn2008.travel_tree(v_date,v_consigna, v_agency_id); + ELSE + CREATE TEMPORARY TABLE travel_tree + (PRIMARY KEY (warehouse_id)) + ENGINE=MEMORY + SELECT v_wh warehouse_id, v_date Fecha_envio; + END IF; + + -- Ejecutamos item_buffer_tarifa para cada registro del cursos, y almacenaremos los valores acumulados, para el buffer y para los componentes + + OPEN cur; + FETCH cur INTO v_wh, v_shipment; + + WHILE NOT done + DO + CALL item_buffer_tarifa_dup (v_wh, v_shipment, v_consigna, FALSE, v_agencia); + + -- Eliminaremos PCA de Silla FV y viceversa + + INSERT INTO cache.order_stock ( + order_id, warehouse_id, Id_Article, visible, available, future, buy_inc, buy_last, buy_id, `fixed`, rate_0, rate_1, rate_2, rate_3, Packing, Grouping, Productor, caja, Origen, mark, `comment`, foto, Id_Tipo, Article + ) + SELECT i_order, v_wh, id, visible, available, future, buy_inc, buy_last, buy_id, `fixed`, rate_0, rate_1, rate_2, rate_3, Packing, Grouping, Productor, bb.caja, Origen, mark, `comment`, A.Foto, A.tipo_id, A.Article + FROM bionic_buffer bb + JOIN Articles A on A.Id_Article = bb.id + JOIN Tipos TP on TP.tipo_id = A.tipo_id + WHERE NOT (v_wh = 44 AND TP.reino_id IN (1,5)) + AND NOT (v_wh = 1 AND TP.reino_id NOT IN (1,5)); + + INSERT INTO cache.order_component ( + order_id, warehouse_id, item_id, cost, component_id + ) + SELECT i_order, v_wh, bb.Id_Article, Valor, Id_Componente + FROM components bb + JOIN Articles A on A.Id_Article = bb.Id_Article + JOIN Tipos TP on TP.tipo_id = A.tipo_id + WHERE NOT (v_wh = 44 AND TP.reino_id IN (1,5)) + AND NOT (v_wh = 1 AND TP.reino_id NOT IN (1,5)); + + FETCH cur INTO v_wh, v_shipment; + END WHILE; + + CLOSE cur; + + INSERT INTO cache.order_stock_lot ( + order_id, + landing, + warehouse_id, + item_id, + items, + grouping, + price, + rate_class + ) + SELECT order_id, buy_last, warehouse_id, Id_Article, FLOOR(available / IF(caja = 1, Grouping, 1)), IF(caja = 1, Grouping, 1), rate_1, 1 + FROM cache.order_stock + WHERE caja < 2 + AND (Packing > Grouping or caja = 0) + UNION ALL + SELECT order_id, buy_last, warehouse_id, Id_Article, FLOOR(available/Packing), Packing, rate_2, 2 + FROM cache.order_stock + WHERE Packing > 0 + AND available > Packing + UNION ALL + SELECT order_id, buy_last, warehouse_id, Id_Article, 1, available, rate_3, 3 + FROM cache.order_stock; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_buy` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_buy`(IN v_wh TINYINT, IN v_date DATETIME) +BEGIN + DECLARE date_inv DATE; + ALTER TABLE item + ADD buy_id INT UNSIGNED; + + IF v_date < (SELECT date_inv()) THEN + SELECT MIN(landing) INTO date_inv FROM travel t INNER JOIN Entradas e ON e.travel_id = t.id + WHERE warehouse_id_out = 13 AND landing <= v_date; + ELSE + SET date_inv = date_inv(); + END IF; + UPDATE item i INNER JOIN ( + SELECT * FROM ( + SELECT c.Id_Article item_id, c.Id_Compra id + FROM Compres c INNER JOIN Entradas e USING(Id_Entrada) + INNER JOIN travel t ON t.id = e.travel_id + WHERE t.landing BETWEEN date_inv AND v_date + AND c.Novincular = FALSE + AND c.Tarifa2 >= 0 + ORDER BY v_wh = t.warehouse_id DESC, t.landing DESC + ) t + GROUP BY item_id + ) t + ON i.id = t.item_id + SET i.buy_id = t.id; + + CREATE INDEX buy USING HASH ON item (buy_id); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_buy_price` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_buy_price`(IN v_customer INT,IN date_ DATE,IN v_wh TINYINT) +BEGIN + ALTER TABLE item + ADD price DOUBLE, + ADD discount INT; + + + -- Lo primero, el precio normal, la ultima entrada para ese almacen + + UPDATE item i + JOIN Compres b ON i.buy_id = b.Id_Compra + JOIN Clientes c ON c.Id_cliente = v_customer + SET i.price = CASE c.Descuento + + WHEN 0 THEN b.PVP + WHEN 1 THEN b.Tarifa1 + WHEN 2 THEN b.Tarifa2 + WHEN 3 THEN b.Tarifa3 + ELSE IF(c.Descuento BETWEEN 4 AND 100, b.Tarifa2, round(b.Tarifa3 * (200 - c.Descuento) / 100 ,2) ) + END, + i.discount = IF(c.Descuento BETWEEN 4 AND 100, c.Descuento, 0); + + -- Precios fijados + + UPDATE item i + INNER JOIN Clientes c ON c.Id_cliente = v_customer + JOIN v_price_fixed_group fp ON i.id = fp.item_id + SET i.price = CASE c.Descuento + WHEN 0 THEN fp.rate_0 + WHEN 1 THEN fp.rate_1 + WHEN 2 THEN fp.rate_2 + WHEN 3 THEN fp.rate_3 + ELSE fp.rate_3 + END, + i.discount = 0 + WHERE fp.warehouse_id IN (0,v_wh) + AND date_ BETWEEN fp.date_start AND fp.date_end; + + -- Precios especiales + + UPDATE item i + JOIN Clientes c ON c.Id_cliente = v_customer + JOIN PreciosEspeciales p ON i.id = p.Id_Article AND p.Id_Cliente = v_customer + SET i.price = p.PrecioEspecial, + i.discount = 0; + + -- Precio mínimo + + UPDATE item i + JOIN Articles a ON a.Id_Article = i.id + JOIN Clientes c ON c.Id_cliente = v_customer + SET i.price = IF(a.`Min` AND i.price < a.PVP, a.PVP,i.price); + +-- pak 14/9/14 provisional + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_cache_cleaner` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_cache_cleaner`() +BEGIN + DECLARE v_lifetime INT DEFAULT 80; + DECLARE v_expired DATETIME DEFAULT TIMESTAMPADD(SECOND, -v_lifetime, NOW()); + + IF (SELECT MAX(id) FROM`cache`) < 32000 + THEN + UPDATE `cache` SET age = age + 1 WHERE stamp < v_expired ORDER BY age DESC; + + DELETE FROM `cache` WHERE stamp < TIMESTAMPADD(SECOND, -40, v_expired); + + IF ROW_COUNT() > 0 + THEN + DELETE a + FROM cache_a a + LEFT JOIN `cache` c ON c.id = a.cache_id + WHERE c.id IS NULL; + END IF; + ELSE + TRUNCATE TABLE `cache`; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_catalog` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_catalog`( + v_wh INT + ,v_date DATE + ,v_customer INT +) +BEGIN + DECLARE v_cache SMALLINT; + + CALL item_cache (v_cache, 'a', v_wh, v_date); + + DROP TEMPORARY TABLE IF EXISTS item_catalog; + + CREATE TEMPORARY TABLE item_catalog + (KEY (item_id)) + ENGINE = MEMORY + SELECT + b.item_id + ,b.available + ,b.fixed + ,IFNULL(p.PrecioEspecial,( + CASE c.Descuento + WHEN 0 THEN b.rate_0 + WHEN 1 THEN b.rate_1 + WHEN 2 THEN b.rate_2 + WHEN 3 THEN b.rate_3 + ELSE NULL + END + )) AS price + ,be.S1 s1 + ,be.S2 s2 + ,0 discount + ,CASE co.caja WHEN 0 THEN 1 WHEN 2 THEN co.packing ELSE co.grouping END AS grouping + FROM cache_a b + JOIN Clientes c + ON c.Id_cliente = v_customer + JOIN Articles a + ON a.Id_Article = b.item_id + JOIN Tipos t + ON t.tipo_id = a.tipo_id + JOIN reinos r + ON r.id = t.reino_id + JOIN Compres co + ON co.Id_Compra = b.buy_id + LEFT JOIN buy_edi be + ON be.id = co.buy_edi_id + LEFT JOIN PreciosEspeciales p + ON p.Id_Cliente = v_customer AND b.item_id = p.Id_Article + WHERE b.available > 0 AND b.cache_id = v_cache; + -- ON be.compra_id = co.compra_id + -- Cliente Te gustan las flores + + IF NOT v_customer = 3064 + THEN + DELETE c + FROM item_catalog c + JOIN Articles ON item_id = Id_Article + WHERE tipo_id = 105; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_disp_virt` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_disp_virt`(v_wh SMALLINT, v_date DATETIME, id_single INT, v_cache INT) +BEGIN + DROP TEMPORARY TABLE IF EXISTS wh_father; + DROP TEMPORARY TABLE IF EXISTS wh_son; + DROP TEMPORARY TABLE IF EXISTS article_inventory; + + CREATE TEMPORARY TABLE wh_father + ( + wh SMALLINT, + INDEX i (wh) + ) + ENGINE = MEMORY; + + CREATE TEMPORARY TABLE wh_son + ( + wh INT, + INDEX i (wh) + ) + ENGINE = MEMORY; + + INSERT INTO wh_father(wh) VALUES(v_wh); + INSERT INTO wh_son(wh) VALUES(v_wh); + + -- Sols es crea la variable @wh_son quan es crida desde traslado JGF 2015-01-30 + IF @wh_son THEN + INSERT INTO wh_son(wh) VALUES(@wh_son); + END IF; + + CALL item_travel_fixed(v_wh,v_date); + SET @@max_sp_recursion_depth = 10; + + CALL item_disp_virt1 (v_wh, v_date, 0, id_single, v_cache); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_disp_virt1` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_disp_virt1`(v_wh SMALLINT, v_date DATETIME, direccion TINYINT, id_single INT, v_cache INT) +BEGIN + DECLARE wh_cursor,done TINYINT DEFAULT 0; + DECLARE v_shipment_aux DATETIME DEFAULT NULL; + DECLARE v_date_cur DATETIME DEFAULT CURDATE(); + DECLARE v_inv DATETIME; + DECLARE v_camp DATETIME; + DECLARE b_fprice TINYINT; + + -- selecciona tots els fills del @v_wh(actual) + DECLARE cur1 CURSOR FOR + SELECT son FROM warehouse_tree_bidi + WHERE father = v_wh AND son NOT IN (SELECT DISTINCT wh FROM wh_son); + + -- selecciona tots els pares del v_wh(actual) + DECLARE cur2 CURSOR FOR + SELECT father FROM warehouse_tree_bidi + WHERE son = v_wh AND father NOT IN (SELECT DISTINCT wh FROM wh_father); + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + + +SELECT FechaInventario, TIMESTAMPADD(DAY, -campaign_life, campaign) + INTO v_inv, v_camp FROM tblContadores LIMIT 1; + -- Crea una tabla amb el @v_wh + CALL hedera.sql_query (sql_printf('DROP TEMPORARY TABLE IF EXISTS %t;',v_wh)); + CALL hedera.sql_query (sql_printf('create temporary table %t + ( + article_id INT PRIMARY KEY, + amount DOUBLE(8,2) + )ENGINE = MEMORY;' + ,v_wh)); + -- Si es campanya fa el calcul del disponible senzill + IF v_camp >= v_date_cur AND v_camp <= v_date THEN + SET v_date_cur = v_camp; + ELSE + OPEN cur1; + FETCH cur1 INTO wh_cursor; + + -- mentre queden fills.. + WHILE !done DO + -- calcula la data per a la cual calcular el disponible del fill + SELECT MIN(landing) INTO v_shipment_aux + FROM travel t + WHERE t.warehouse_id_out = v_wh + AND t.warehouse_id = wh_cursor + AND t.shipment >= v_date + AND NOT t.delivered + AND t.landing >= t.shipment; + + -- afegeix en la taula wh_son el v_wh no tornar-lo a calcular + INSERT INTO wh_son(wh) VALUES (v_wh); + -- calcula del disponible del fill + CALL item_disp_virt1 (wh_cursor, v_shipment_aux, -1, id_single, v_cache); + + -- Li resta al @v_wh els negatius dels fills + CALL hedera.sql_query (sql_printf ( + 'INSERT INTO %t (article_id,amount) + SELECT item_id ,available FROM vn2008.tmp_item WHERE available < 0 + ON DUPLICATE KEY UPDATE + amount = amount + VALUES(amount);' + ,v_wh + )); + + FETCH cur1 INTO wh_cursor; + END WHILE; + CLOSE cur1; + + SET v_shipment_aux = NULL; + + -- si direccion < 0 sols mira fills, + -- si direccion > 0 mira pare i fills + -- si direccion = 0 mira pare i fills, a més es el cas base + IF direccion >= 0 THEN + + SET done = 0; + OPEN cur2; + FETCH cur2 INTO wh_cursor; + -- mentre queden pares.. + WHILE !done DO + -- calcula la data per a la cual calcular el disponible del pare + SELECT MAX(shipment) INTO v_shipment_aux FROM travel t + WHERE t.warehouse_id_out = wh_cursor + AND t.warehouse_id = v_wh + AND t.delivered = 0 + AND t.shipment >= CURDATE() + AND t.landing <= v_date; + -- afegeix en la taula wh_son i wh_father el v_wh no tornar-lo a calcular + INSERT INTO wh_son(wh) VALUES (v_wh); + INSERT INTO wh_father(wh) VALUES (v_wh); + IF v_shipment_aux IS NOT NULL THEN + -- calcula el disponible per al pare + CALL item_disp_virt1(wh_cursor,v_shipment_aux,1, id_single, v_cache); + -- li suma al v_wh el disponible positiu del pare + CALL hedera.sql_query (sql_printf('INSERT INTO %t (article_id,amount) + SELECT item_id ,available FROM vn2008.tmp_item WHERE available > 0 + ON DUPLICATE KEY UPDATE + amount = amount + VALUES(amount);',v_wh)); + ELSE + + -- travels provinents del pare després de FechaTicket + SELECT MIN(shipment) INTO v_shipment_aux FROM travel t + WHERE t.warehouse_id_out = wh_cursor + AND t.warehouse_id = v_wh + AND t.delivered = 0 + AND t.shipment >= CURDATE() -- avans AND t.shipment > CURDATE() + AND t.landing >= v_date; -- avans AND t.landing >= v_date; 23/09/11 + CALL item_disp_virt1(wh_cursor,v_shipment_aux,2, id_single, v_cache); + END IF; + FETCH cur2 INTO wh_cursor; + + END WHILE; + + END IF; + END IF; + + -- calcula el stock, que es igual al visible + CALL item_stock (v_wh, v_date,NULL); + + CALL item_stock_avail (v_wh, v_date,NULL,direccion); + + -- Li afegeix al disponible simple del v_wh el virtual + CALL hedera.sql_query (sql_printf('INSERT INTO vn2008.tmp_item ( item_id, available) + SELECT article_id, amount FROM %t + ON DUPLICATE KEY UPDATE + available = available + VALUES(available);',v_wh)); + -- si es el cas base + IF !direccion THEN + IF v_date = curdate() THEN + CALL item_stock_visible (v_wh,NULL); + END IF; + DELETE FROM cache_a WHERE cache_id = v_cache; + + CALL hedera.sql_query (sql_printf ( + 'INSERT INTO vn2008.cache_a (cache_id, item_id, visible, available, virtual, future) + SELECT %v, item_id, visible, available, IFNULL(amount,0) virtual, future + FROM vn2008.tmp_item + LEFT JOIN %t ON item_id = article_id + ON DUPLICATE KEY UPDATE + visible = VALUES(visible), + available = VALUES(available), + virtual = VALUES(virtual), + future = VALUES(future);' + ,v_cache + ,v_wh + + )); + END IF; + + CALL hedera.sql_query (sql_printf ('DROP TEMPORARY TABLE IF EXISTS %t;', v_wh)); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_express` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_express`(IN intWH INT, IN datFEC DATE) +BEGIN + +DECLARE datINV DATE; + + + +SELECT FechaInventario INTO datINV FROM tblContadores LIMIT 1; + + +SELECT sub1.Id_Article, Visible, Tarifa2 +FROM +(SELECT Id_Article, SUM(Cantidad) as Visible +FROM Compres C +JOIN Entradas E USING(Id_Entrada) +JOIN travel T ON T.id = E.travel_id +WHERE shipment >= datINV +AND landing <= datFEC +AND Redada = 0 +AND warehouse_id = intWH +GROUP BY Id_Article) sub1 +JOIN +( +SELECT * FROM +( +SELECT Id_Article, Tarifa2 +FROM Compres C +JOIN Entradas E USING(Id_Entrada) +JOIN travel T ON T.id = E.travel_id +WHERE shipment >= datINV +AND landing <= datFEC +AND Redada = 0 +AND Novincular = 0 +AND warehouse_id = intWH +ORDER BY landing DESC) sub +GROUP BY Id_Article) sub2 USING(Id_Article); + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_last_buy_` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_last_buy_`(v_wh SMALLINT, v_date DATE) +BEGIN + -- Ultima compra hasta hoy + + CALL cache.last_buy_refresh (FALSE); + + + DROP TEMPORARY TABLE IF EXISTS t_item_last_buy; + CREATE TEMPORARY TABLE t_item_last_buy + (PRIMARY KEY (item_id,warehouse_id)) + ENGINE = MEMORY + SELECT item_id, buy_id, warehouse_id + FROM cache.last_buy + WHERE v_wh = warehouse_id OR v_wh IS NULL; + + + -- Ultima compra hasta @v_date + + + -- CALL item_last_buy_from_interval (v_wh, CURDATE(), TIMESTAMPADD(DAY, 1, v_date)); JGF 2016-06-08 fallo: cogia un dia mas de lo solicitado + CALL item_last_buy_from_interval (v_wh, CURDATE(), v_date); + + REPLACE INTO t_item_last_buy + SELECT item_id, buy_id, warehouse_id + FROM tmp.item_last_buy_from_interval + WHERE v_wh = warehouse_id OR v_wh IS NULL; + + + DROP TEMPORARY TABLE tmp.item_last_buy_from_interval; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_last_buy_from_interval` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_last_buy_from_interval`(v_wh SMALLINT, v_date_ini DATE, v_date_end DATE) +BEGIN +/** + * Obtiene la ultima compra a partir de un intervalo + * de fechas dado. + * + * @param v_wh Id de almacen %NULL para todos los almacenes + * @param v_date_ini Fecha inicial + * @param v_date_end Fecha final + * @table tmp.item_last_buy_from_interval + **/ + + + + IF v_date_end IS NULL + THEN + SET v_date_end = v_date_ini; + END IF; + + /* IF v_date_end < v_date_ini THEN + SET v_date_ini = TIMESTAMPADD(MONTH,-1,v_date_end); + END IF; +*/ + DROP TEMPORARY TABLE IF EXISTS tmp.item_last_buy_from_interval; + CREATE TEMPORARY TABLE tmp.item_last_buy_from_interval + ENGINE = MEMORY + SELECT c.Id_Article item_id, t.warehouse_id, multimax(t.landing, c.Id_Compra) buy_id, MAX(t.landing) landing + FROM Compres c + JOIN Entradas e USING (Id_Entrada) + JOIN travel t ON t.id = e.travel_id + WHERE t.landing BETWEEN v_date_ini AND v_date_end + AND (v_wh IS NULL OR t.warehouse_id = v_wh) + AND c.Tarifa2 > 0 + AND NOT c.Novincular + GROUP BY item_id, warehouse_id; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_new` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_new`() +BEGIN + CREATE TEMPORARY TABLE item + ( + item_id INT UNSIGNED NOT NULL, + UNIQUE KEY USING HASH (item_id) + ) + ENGINE = MEMORY; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_stock` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_stock`(v_wh SMALLINT, v_date DATETIME, v_item INT) +BEGIN +/** + * Calcula el stock del v_wh desde FechaInventario hasta v_date + **/ + + DECLARE n TINYINT; + DECLARE v_diff TIME; + DECLARE v_inv DATETIME; + DECLARE v_camp DATETIME; + DECLARE v_curdate DATETIME DEFAULT CURDATE(); + + SET v_date = TIMESTAMP(DATE(v_date), '00:00:00'); + + SELECT FechaInventario, TIMESTAMPADD(DAY, -campaign_life, campaign) + INTO v_inv, v_camp FROM tblContadores LIMIT 1; + + DROP TEMPORARY TABLE IF EXISTS tmp_item; + CREATE TEMPORARY TABLE tmp_item + (UNIQUE INDEX i USING HASH (item_id)) + ENGINE = MEMORY + SELECT item_id, SUM(amount) stock, SUM(amount) visible, SUM(amount) available FROM ( + SELECT item_id, amount FROM item_out + WHERE dat >= v_curdate AND dat < v_date + AND warehouse_id = v_wh + AND (v_item IS NULL OR item_id = v_item) + UNION ALL + SELECT item_id, amount FROM item_entry_in + WHERE dat >= v_curdate AND dat < v_date + AND warehouse_id = v_wh + AND (v_item IS NULL OR item_id = v_item) + UNION ALL + SELECT item_id, amount FROM item_entry_out + WHERE dat >= v_curdate AND dat < v_date + AND warehouse_id = v_wh + AND (v_item IS NULL OR item_id = v_item) + ) t + GROUP BY item_id HAVING stock != 0; + + CALL `cache`.stock_refresh (FALSE); + + INSERT INTO tmp_item (item_id,stock,visible,available) + SELECT item_id,amount,amount,amount FROM `cache`.stock + WHERE warehouse_id = v_wh AND (v_item IS NULL OR v_item = item_id) + ON DUPLICATE KEY UPDATE + stock = stock + VALUES(stock), + visible = visible + VALUES(visible), + available = available + VALUES(available); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_stock_avail` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_stock_avail`(IN v_wh TINYINT, IN v_date DATETIME, IN id_single INT,IN direccion TINYINT) +BEGIN + DECLARE done INT DEFAULT 0; + DECLARE expr,expr1,expr2,expr3,expr4,expr5 TEXT; + DECLARE query TEXT; + DECLARE _son,_self TEXT; + DECLARE _auxshipment, _auxlanding,fut DATE; + -- Selecciona tots els travels cap als fill ens els próxims 15 dies + DECLARE cur1 CURSOR FOR + SELECT shipment,landing FROM travel WHERE warehouse_id_out = v_wh AND shipment BETWEEN TIMESTAMPADD(day,1,v_date) + AND TIMESTAMPADD(day,15,v_date) AND warehouse_id = (SELECT son FROM warehouse_tree_bidi WHERE father = v_wh + LIMIT 1) + ORDER BY shipment; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + -- selecciona els primers travels que arrivaran després de la v_date de cada warehouse + + CALL item_travel (v_wh, v_date); + + SET expr = sql_printf ('dat BETWEEN DATE(%v) AND DATE(%v)' + ,TIMESTAMP(v_date, '00:00:00') + ,TIMESTAMP(TIMESTAMPADD(DAY, 15, v_date), '23:59:59') + /*,v_wh*/ + ); + + + IF id_single IS NOT NULL THEN + SET expr = sql_printf('%s AND item_id = %v' + ,expr + ,id_single + ); + END IF; + + SET expr1 = sql_printf ('%s AND warehouse_id = %v ' + ,expr + ,v_wh + ); + SET expr2 = ''; + SET _self = CONCAT(v_wh, 'virtual'); + + -- crea una taula amb el nom del warehousevirtual + CALL hedera.sql_query (sql_printf('CREATE TEMPORARY TABLE IF NOT EXISTS vn2008.%t + ( + item_id INT(11), + dat DATE, + amount DOUBLE(8,2), + PRIMARY KEY(item_id,dat) + ) + ENGINE = MEMORY;',_self)); + -- si esta mirant els pares li añadeix el virtual que pot arrivar a conseguir + IF direccion >= 0 THEN + SET expr2 = sql_printf (' UNION ALL + SELECT item_id, dat, amount + FROM vn2008.%t WHERE %s' + ,_self + ,expr + ); + END IF; + + ALTER TABLE tmp_item ADD future DATE; + + /*jgf afegeix AND Reservado != 0 */ + -- calcula el mínim disponible fins a la próxima arrivada de mercancia +SET query = sql_printf ( + 'INSERT INTO tmp_item (item_id,available, future) + SELECT item_id, SUM(amount) AS available,landing as future FROM ( + SELECT t.item_id, minacum(dt, amount, %v) amount,w.landing FROM ( + SELECT item_id, DATE(dat) dt, SUM(amount) amount FROM ( + SELECT item_id, dat, amount + FROM item_out WHERE %s + UNION ALL + SELECT item_id, dat, amount + FROM item_entry_in WHERE %s + UNION ALL + SELECT item_id, dat, amount + FROM item_entry_out WHERE %s + %s + ) t + GROUP BY item_id, dt + ) t + LEFT JOIN Articles a ON a.Id_Article = t.item_id + LEFT JOIN Origen o ON o.id = a.id_origen + LEFT JOIN item_travel w ON w.wh = o.warehouse_id + WHERE IFNULL(dt < w.landing OR Id_Article > 170000, TRUE) + GROUP BY t.item_id + ) t + GROUP BY t.item_id HAVING available != 0 + ON DUPLICATE KEY UPDATE + available = IFNULL(available,0) + VALUES(available)' + , DATE(v_date) + 0, expr1, expr1, expr1, expr2 + ); + -- JGF 22/10/14 - WHERE IFNULL(dt <= w.landing OR Id_Article > 170000, TRUE) + -- JGF 2015-03-31 ANTES WHERE IFNULL(dt <= w.landing OR Id_Article > 170000, TRUE) + CALL sql_query (query); + -- si el v_wh es pare + IF (direccion > 0) THEN + + -- crea una taula TEMPORAL per al fill + SELECT CONCAT(son,'virtual') A INTO _son FROM warehouse_tree_bidi WHERE father = v_wh LIMIT 1; + CALL hedera.sql_query (sql_printf('CREATE TEMPORARY TABLE IF NOT EXISTS vn2008.%t + ( + item_id INT(11), + dat DATE, + amount DOUBLE(8,2), + PRIMARY KEY(item_id,dat) + ) + ENGINE = MEMORY;',_son)); + IF (direccion >= 2) THEN + CALL sql_query (query); + SET query = sql_printf ( -- REPLACE en lugar de INSERT INTO PAK 20/11/14 + 'REPLACE vn2008.%t (item_id,dat,amount) + SELECT item_id,landing,available FROM tmp_item,travel + WHERE shipment = DATE(%v) AND warehouse_id_out = %v AND available > 0 + AND warehouse_id = (SELECT son FROM warehouse_tree_bidi WHERE father = %v + LIMIT 1) GROUP BY warehouse_id + ',_son,v_date,v_wh,v_wh); + + CALL sql_query (query); + + TRUNCATE TABLE tmp_item; + END IF; + OPEN cur1; + FETCH cur1 INTO _auxshipment,_auxlanding; + WHILE !done DO + SET expr4 = sql_printf ('dat BETWEEN %v AND %v' + ,TIMESTAMP(DATE(_auxshipment), '00:00:00') + ,TIMESTAMP(TIMESTAMPADD(DAY, 15, v_date), '23:59:59') + ); + IF id_single IS NOT NULL THEN + SET expr4 = sql_printf('%s AND item_id = %v' + ,expr4 + ,id_single + ); + END IF; + + SET expr5 = sql_printf ('%s AND warehouse_id = %v' + ,expr4 + ,v_wh + ); + -- afegir entrades menys eixides desde l'ultim dia.. + SET query = sql_printf ( + 'INSERT INTO vn2008.%t (item_id,dat,amount) + SELECT item_id, %v, SUM(amount) AS available FROM ( + SELECT t.item_id, minacum(dt, amount, %v) amount FROM ( + SELECT item_id, DATE(dat) dt, SUM(amount) amount FROM ( + SELECT item_id, dat, amount + FROM item_out WHERE %s + UNION ALL + SELECT item_id, dat, amount + FROM item_entry_in WHERE %s + UNION ALL + SELECT item_id, dat, amount + FROM item_entry_out WHERE %s + UNION ALL + SELECT item_id, dat, amount + FROM %t WHERE %s + ) t + GROUP BY item_id, dt + ) t + LEFT JOIN Articles a ON a.Id_Article = t.item_id + LEFT JOIN Origen o ON o.id = a.id_origen + LEFT JOIN item_travel w ON w.wh = o.warehouse_id + WHERE IFNULL(dt < w.landing OR Id_Article > 170000, TRUE) + GROUP BY t.item_id + ) t GROUP BY t.item_id HAVING available > 0 + ON DUPLICATE KEY UPDATE + amount = IFNULL(amount,0) + VALUES(amount) + ',_son,DATE(_auxlanding)+0,DATE(_auxshipment)+0,expr5, expr5, expr5,_self,expr4); + -- JGF 07/07/14 - WHERE IFNULL(dt < w.landing , TRUE) + CALL sql_query (query); + FETCH cur1 INTO _auxshipment,_auxlanding; + END WHILE; + + CLOSE cur1; + END IF; + CALL sql_query (sql_printf('DROP TEMPORARY TABLE IF EXISTS %t;',_self)); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_stock_avail_new` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_stock_avail_new`(IN v_wh TINYINT, IN v_date DATETIME, IN id_single INT,IN direccion TINYINT) +BEGIN + DECLARE done INT DEFAULT 0; + DECLARE expr,expr1,expr2,expr3,expr4,expr5 TEXT; + DECLARE query TEXT; + DECLARE _son,_self TEXT; + DECLARE _auxshipment, _auxlanding,fut DATE; + + -- Selecciona tots els viajes cap als fill ens els próxims 15 dies + + DECLARE cur1 CURSOR FOR + SELECT shipment,landing FROM travel + WHERE warehouse_id_out = v_wh + AND shipment BETWEEN TIMESTAMPADD(day,1,v_date) + AND TIMESTAMPADD(day,15,v_date) + AND warehouse_id = (SELECT son FROM warehouse_tree_bidi WHERE father = v_wh LIMIT 1) + ORDER BY shipment; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + + -- Selecciona els primers viajes que arrivaran després de la v_date de cada almacen + + CALL item_travel (v_wh, v_date); + + SET expr = sql_printf ('dat BETWEEN DATE(%v) AND DATE(%v)' + ,TIMESTAMP(v_date, '00:00:00') + ,TIMESTAMP(TIMESTAMPADD(DAY, 15, v_date), '23:59:59') + ); + + IF id_single IS NOT NULL + THEN + SET expr = sql_printf('%s AND item_id = %v' + ,expr + ,id_single + ); + END IF; + + SET expr1 = sql_printf ('%s AND warehouse_id = %v ' + ,expr + ,v_wh + ); + SET expr2 = ''; + SET _self = CONCAT(v_wh, 'virtual'); + + -- Crea una taula amb el nom del almacen virtual + + CALL hedera.sql_query (sql_printf('CREATE TEMPORARY TABLE IF NOT EXISTS vn2008.%t + ( + item_id INT(11), + dat DATE, + amount DOUBLE(8,2), + PRIMARY KEY(item_id,dat) + ) + ENGINE = MEMORY',_self)); + + -- Si esta mirant els pares li añadeix el virtual que pot arrivar a conseguir + + IF direccion >= 0 + THEN + SET expr2 = sql_printf (' UNION ALL + SELECT item_id, dat, amount + FROM vn2008.%t WHERE %s' + ,_self + ,expr + ); + END IF; + + ALTER TABLE tmp_item ADD future DATE; + + -- Calcula el mínim disponible fins a la próxima arrivada de mercancia + + SET query = sql_printf ( + 'INSERT INTO tmp_item (item_id, available, future) + SELECT item_id, SUM(amount) AS available,landing as future FROM ( + SELECT t.item_id, minacum(dt, amount, %v) amount,w.landing FROM ( + SELECT item_id, DATE(dat) dt, SUM(amount) amount FROM ( + SELECT item_id, dat, amount + FROM item_out WHERE %s + UNION ALL + SELECT item_id, dat, amount + FROM item_entry_in WHERE %s + UNION ALL + SELECT item_id, dat, amount + FROM item_entry_out WHERE %s + %s + ) t + GROUP BY item_id, dt + ) t + LEFT JOIN Articles a ON a.Id_Article = t.item_id + LEFT JOIN Origen o ON o.id = a.id_origen + LEFT JOIN item_travel w ON w.wh = o.warehouse_id + WHERE IFNULL(dt <= w.landing OR Id_Article > 170000, TRUE) + GROUP BY t.item_id + ) t + GROUP BY t.item_id HAVING available != 0 + ON DUPLICATE KEY UPDATE + available = IFNULL(available,0) + VALUES(available)' + ,DATE(v_date)+0 + ,expr1 + ,expr1 + ,expr1 + ,expr2 + ); + CALL sql_query (query); + + -- Si es el almacen padre + + IF (direccion > 0) + THEN + -- Crea una tabla temporar pare el hijo + SELECT CONCAT(son,'virtual') A INTO _son FROM warehouse_tree_bidi WHERE father = v_wh LIMIT 1; + + CALL hedera.sql_query (sql_printf( + 'CREATE TEMPORARY TABLE IF NOT EXISTS vn2008.%t + ( + item_id INT(11), + dat DATE, + amount DOUBLE(8,2), + PRIMARY KEY(item_id,dat) + ) + ENGINE = MEMORY;', + _son + )); + + IF (direccion >= 2) + THEN + CALL sql_query (query); + CALL sql_query (sql_printf ( + 'REPLACE vn2008.%t (item_id,dat,amount) + SELECT item_id, landing, available FROM tmp_item, travel + WHERE shipment = DATE(%v) AND warehouse_id_out = %v AND available > 0 + AND warehouse_id = (SELECT son FROM warehouse_tree_bidi WHERE father = %v LIMIT 1) + GROUP BY warehouse_id' + ,_son + ,v_date + ,v_wh + ,v_wh + )); + TRUNCATE TABLE tmp_item; + END IF; + + OPEN cur1; + FETCH cur1 INTO _auxshipment,_auxlanding; + + WHILE !done + DO + SET expr4 = sql_printf ('dat BETWEEN %v AND %v' + ,TIMESTAMP(DATE(_auxshipment), '00:00:00') + ,TIMESTAMP(TIMESTAMPADD(DAY, 15, v_date), '23:59:59') + ); + + IF id_single IS NOT NULL + THEN + SET expr4 = sql_printf('%s AND item_id = %v' + ,expr4 + ,id_single + ); + END IF; + + SET expr5 = sql_printf ('%s AND warehouse_id = %v' + ,expr4 + ,v_wh + ); + + -- Afegir entrades menys eixides desde l'ultim dia + + CALL sql_query (sql_printf ( + 'INSERT INTO vn2008.%t (item_id,dat,amount) + SELECT item_id, %v, SUM(amount) AS available FROM ( + SELECT t.item_id, minacum(dt, amount, %v) amount FROM ( + SELECT item_id, DATE(dat) dt, SUM(amount) amount FROM ( + SELECT item_id, dat, amount + FROM item_out WHERE %s + UNION ALL + SELECT item_id, dat, amount + FROM item_entry_in WHERE %s + UNION ALL + SELECT item_id, dat, amount + FROM item_entry_out WHERE %s + UNION ALL + SELECT item_id, dat, amount + FROM %t WHERE %s + ) t + GROUP BY item_id, dt + ) t + LEFT JOIN Articles a ON a.Id_Article = t.item_id + LEFT JOIN Origen o ON o.id = a.id_origen + LEFT JOIN item_travel w ON w.wh = o.warehouse_id + WHERE IFNULL(dt < w.landing OR Id_Article > 170000, TRUE) + GROUP BY t.item_id + ) t GROUP BY t.item_id HAVING available > 0 + ON DUPLICATE KEY UPDATE + amount = IFNULL(amount,0) + VALUES(amount)' + ,_son + ,DATE(_auxlanding)+0 + ,DATE(_auxshipment)+0 + ,expr5 + ,expr5 + ,expr5 + ,_self + ,expr4 + )); + + FETCH cur1 INTO _auxshipment,_auxlanding; + END WHILE; + + CLOSE cur1; + END IF; + + CALL sql_query (sql_printf('DROP TEMPORARY TABLE IF EXISTS %t', _self)); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_stock_visible` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_stock_visible`(v_wh SMALLINT, v_item INT) +BEGIN + DECLARE v_curdate DATETIME DEFAULT TIMESTAMP(CURDATE(), '00:00:00'); + DECLARE v_tomorrow DATETIME DEFAULT TIMESTAMPADD(HOUR, 24, CURDATE()); + + INSERT INTO tmp_item (item_id, visible) + SELECT item_id, SUM(amount) amount FROM ( + SELECT item_id, amount FROM item_out + WHERE dat >= v_curdate + AND warehouse_id = v_wh + AND (alertLevel > 1 + OR + ok != FALSE + /* AND (((ok != FALSE OR ready != FALSE OR invoice IS NOT NULL) + AND dat < v_tomorrow) + */ + OR Reservado != FALSE ) + UNION ALL + SELECT item_id, amount FROM item_entry_in + WHERE received != FALSE + AND dat >= v_curdate AND dat < v_tomorrow + AND warehouse_id = v_wh + AND (v_item IS NULL OR item_id = v_item) + UNION ALL + SELECT item_id, amount FROM item_entry_out + WHERE delivered != FALSE + AND dat >= v_curdate AND dat < v_tomorrow + AND warehouse_id = v_wh + AND (v_item IS NULL OR item_id = v_item) + ) t + GROUP BY item_id + ON DUPLICATE KEY UPDATE + visible = IFNULL(stock,0) + VALUES(visible); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_travel` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_travel`(v_wh TINYINT, v_date DATETIME) +BEGIN + DECLARE v_travel INT; + DECLARE v_wh_out INT; + DECLARE v_shipment DATETIME; + DECLARE v_campaign DATETIME; + DECLARE v_date_start DATETIME; + + DROP TEMPORARY TABLE IF EXISTS travel_top; + DROP TEMPORARY TABLE IF EXISTS item_travel; + + -- Crea una taula buida travel_top + + CREATE TEMPORARY TABLE travel_top + (PRIMARY KEY (wh_in,wh_out,landing,shipment)) -- 28/1/15 JGF & PAK cuelgue dia 26 + ENGINE = MEMORY + SELECT 0 id, v_wh wh_in, v_wh wh_out, FALSE ok, v_date landing, v_date shipment; + + REPEAT + SET v_travel = NULL; + + -- Va seleccionant registres un a un + + SELECT id, wh_out, shipment, landing + INTO v_travel, v_wh_out, v_shipment, v_date_start + FROM travel_top WHERE ok = FALSE LIMIT 1; + + -- Marca el registre per a saber que esta revistat + + UPDATE travel_top SET ok = TRUE WHERE id = v_travel; + + -- Concatena travels + + + INSERT IGNORE INTO travel_top + SELECT id, v_wh, warehouse_id_out, FALSE, IF(v_travel, v_date_start, landing), shipment + FROM travel + WHERE warehouse_id = v_wh_out + -- Canvia Javi 08/04/13 error que pasaba a les 06:00 del mati + -- AND IF(v_travel, landing <= v_shipment, landing > v_shipment) + AND IF(v_travel, landing <= v_shipment, landing >= v_shipment) + AND shipment >= CURDATE() + AND delivered = FALSE; + + UNTIL v_travel IS NULL + END REPEAT;/* + select max_count; + SELECT * FROM travel_top;*/ + + DELETE FROM travel_top WHERE id = 0; +/* + SELECT TIMESTAMPADD(DAY, -campaign_life, campaign), campaign + INTO v_date_start, v_campaign FROM tblContadores;*/ + + -- Agafa el travel que arriva primer per a cada warehouse + + CREATE TEMPORARY TABLE item_travel + (KEY (wh)) + ENGINE = MEMORY + SELECT * FROM ( + SELECT wh_out wh,/* IF( + v_date BETWEEN v_date_start AND v_campaign + AND landing BETWEEN v_date_start AND v_campaign + ,TIMESTAMPADD(DAY, 1, v_campaign) + ,landing + ) */ landing + FROM travel_top + WHERE wh_out <> v_wh + ORDER BY landing + ) t + GROUP BY wh; +-- SELECT * FROM item_travel; + DROP TEMPORARY TABLE travel_top; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_travel_fixed` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_travel_fixed`(v_wh TINYINT, v_date DATETIME) +BEGIN + DECLARE v_travel INT; + DECLARE v_wh_out INT; + DECLARE v_shipment DATETIME; + DECLARE v_campaign DATETIME; + DECLARE v_date_start DATETIME; + + DROP TEMPORARY TABLE IF EXISTS travel_top; + DROP TEMPORARY TABLE IF EXISTS item_travel_fixed; + + CREATE TEMPORARY TABLE travel_top + (KEY (id)) + ENGINE = MEMORY + SELECT 0 id, v_wh wh_out, v_date shipment; + + REPEAT + SET v_travel = NULL; + + SELECT t.id, wh_out, shipment + INTO v_travel, v_wh_out, v_shipment + FROM travel_top t + JOIN warehouse w ON w.id = wh_out AND fuente = 0 + LIMIT 1; + + INSERT INTO travel_top + SELECT t.id, warehouse_id_out, shipment/*, FALSE*/ + FROM travel t + WHERE warehouse_id = v_wh_out + AND landing <= v_shipment + AND shipment >= CURDATE() + AND NOT delivered; + + DELETE t + FROM travel_top t + JOIN warehouse w ON w.id = wh_out + WHERE t.id = v_travel AND fuente = 0; + UNTIL v_travel IS NULL + END REPEAT; + + + SELECT TIMESTAMPADD(DAY, -campaign_life, campaign), campaign + INTO v_date_start, v_campaign FROM tblContadores; + + CREATE TEMPORARY TABLE item_travel_fixed + (KEY (wh)) + ENGINE = MEMORY + SELECT * FROM + ( + SELECT wh_out wh + FROM travel_top + WHERE wh_out <> v_wh + ) t + GROUP BY wh; + + DROP TEMPORARY TABLE travel_top; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_travel_select` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_travel_select`(v_wh TINYINT, v_date DATETIME) +BEGIN + DECLARE v_travel INT; + DECLARE v_wh_out INT; + DECLARE v_shipment DATETIME; + DECLARE v_campaign DATETIME; + DECLARE v_date_start DATETIME; + + DROP TEMPORARY TABLE IF EXISTS travel_top; + DROP TEMPORARY TABLE IF EXISTS item_travel; + + -- Crea una taula buida travel_top + + CREATE TEMPORARY TABLE travel_top + (PRIMARY KEY (id)) + ENGINE = MEMORY + SELECT 0 id, v_wh wh_in, v_wh wh_out, FALSE ok, v_date landing, v_date shipment; + + REPEAT + SET v_travel = NULL; + + -- Va seleccionant registres un a un + + SELECT id, wh_out, shipment, landing + INTO v_travel, v_wh_out, v_shipment, v_date_start + FROM travel_top WHERE ok = FALSE LIMIT 1; + + -- Marca el registre per a saber que esta revistat + + UPDATE travel_top SET ok = TRUE WHERE id = v_travel; + + -- Concatena travels cap al pasat + + INSERT IGNORE INTO travel_top + SELECT id, v_wh, warehouse_id_out, FALSE, IF(v_travel, v_date_start, landing), shipment + FROM travel + WHERE warehouse_id = v_wh_out + AND IF(v_travel, landing <= v_shipment, landing > v_shipment) + AND shipment >= CURDATE() + AND delivered = FALSE; + + UNTIL v_travel IS NULL + END REPEAT; + + DELETE FROM travel_top WHERE id = 0; + + SELECT TIMESTAMPADD(DAY, -campaign_life, campaign), campaign + INTO v_date_start, v_campaign FROM tblContadores; + + -- Agafa el travel que arriva primer per a cada warehouse + + CREATE TEMPORARY TABLE item_travel + (KEY (wh)) + ENGINE = MEMORY + SELECT * FROM ( + SELECT wh_out wh, IF( + v_date BETWEEN v_date_start AND v_campaign + AND landing BETWEEN v_date_start AND v_campaign + ,TIMESTAMPADD(DAY, 1, v_campaign) + ,landing + ) landing + FROM travel_top + WHERE wh_out <> v_wh + ORDER BY landing + ) t + GROUP BY wh; + + SELECT * FROM item_travel; + DROP TEMPORARY TABLE travel_top; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_travel_testing` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_travel_testing`(v_wh TINYINT, v_date DATETIME) +BEGIN + DECLARE v_travel INT; + DECLARE v_wh_out INT; + DECLARE v_shipment DATETIME; + DECLARE v_campaign DATETIME; + DECLARE v_date_start DATETIME; + + + + DROP TEMPORARY TABLE IF EXISTS travel_top; + DROP TEMPORARY TABLE IF EXISTS item_travel; + + -- Crea una taula buida travel_top + + drop temporary table if exists travels_list; + create temporary table travels_list + (id integer, shipment date, landing date, warehouse_id int, warehouse_id_out int); + + CREATE TEMPORARY TABLE travel_top + -- (PRIMARY KEY (wh_in,wh_out,landing,shipment) ) + ENGINE = MEMORY + SELECT 0 RODA, 0 ORDRE, 0 son_id, 0 id, v_wh wh_in, v_wh wh_out, FALSE ok, v_date landing, v_date shipment; + + SET @rodaeta:= 0; + + REPEAT + SET v_travel = -1; + + + -- Va seleccionant registres un a un + + SELECT id, wh_out, shipment, landing + INTO v_travel, v_wh_out, v_shipment, v_date_start + FROM travel_top WHERE ok = FALSE + LIMIT 1; + + -- Marca el registre per a saber que esta revistat + + UPDATE travel_top SET ok = TRUE WHERE id = v_travel; + + -- Concatena travels + SET @ordre := 0; + + INSERT INTO travel_top + SELECT -7 , @ordre:= @ordre + 1 , v_travel ,id, v_wh, warehouse_id_out, FALSE, IF(v_travel>0, v_date_start, landing), shipment + FROM travel + WHERE warehouse_id = v_wh_out + AND IF(v_travel>0, landing <= v_shipment, landing >= v_shipment) + AND shipment >= '2005-01-26' and shipment < '2005-02-28' + AND delivered = FALSE; + + IF (SELECT Count(*) FROM travel_top WHERE RODA = -7) THEN + SET @rodaeta:= @rodaeta + 1; + update travel_top set RODA = @rodaeta where RODA = -7; + end if; + + INSERT INTO travels_list + SELECT id, shipment, landing, warehouse_id, warehouse_id_out + FROM travel + WHERE warehouse_id = v_wh_out + AND IF(v_travel>0, landing <= v_shipment, landing >= v_shipment) + AND shipment >= '2005-01-26' and shipment < '2005-02-28' + AND delivered = FALSE; + + +UNTIL v_travel = -1 END REPEAT; + + + + /* + select max_count; + SELECT * FROM travel_top;*/ + + /*DELETE FROM travel_top WHERE id = 0;*/ +/* + SELECT TIMESTAMPADD(DAY, -campaign_life, campaign), campaign + INTO v_date_start, v_campaign FROM tblContadores;*/ + + -- Agafa el travel que arriva primer per a cada warehouse + + CREATE TEMPORARY TABLE item_travel + (KEY (wh)) + ENGINE = MEMORY + SELECT * FROM ( + SELECT wh_out wh,/* IF( + v_date BETWEEN v_date_start AND v_campaign + AND landing BETWEEN v_date_start AND v_campaign + ,TIMESTAMPADD(DAY, 1, v_campaign) + ,landing + ) */ landing + FROM travel_top + WHERE wh_out <> v_wh + ORDER BY landing + ) t + GROUP BY wh; + +SELECT * FROM item_travel; +SELECT * FROM travel_top order by RODA, ORDRE; + + DROP TEMPORARY TABLE travel_top; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ListaTicketsEncajados` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ListaTicketsEncajados`(IN intId_Trabajador int) +BEGIN + +SELECT Agencia,Consignatario, ti.Id_Ticket, ts.worker Id_Trabajador,IFNULL(ncajas,0) AS ncajas, +IFNULL(nbultos,0) AS nbultos,IFNULL(notros,0) AS notros,code AS Estado +FROM Tickets ti +INNER JOIN Consignatarios ON ti.Id_Consigna = Consignatarios.Id_consigna +INNER JOIN Agencias ON ti.Id_Agencia = Agencias.Id_Agencia +LEFT JOIN (select Ticket_Id,count(*) as ncajas from expeditions where Id_Article=94 group by ticket_id) sub1 on ti.Id_Ticket=sub1.Ticket_Id +LEFT JOIN (select Ticket_Id,count(*) as nbultos from expeditions where Id_Article is null group by ticket_id) sub2 on ti.Id_Ticket=sub2.Ticket_Id +LEFT JOIN (select Ticket_Id,count(*) as notros from expeditions where Id_Article >0 group by ticket_id) sub3 on ti.Id_Ticket=sub3.Ticket_Id +INNER JOIN vn.ticketState ts ON ti.Id_ticket = ts.ticket +WHERE ti.Fecha=curdate() and +ts.worker=intId_Trabajador +group by ti.Id_Ticket; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `malpagantes` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `malpagantes`() +BEGIN + +set @cliente := 0; +set @saldo := 0; + +Select Id_Cliente, Cliente from +Clientes +join +(select distinct Id_Cliente +from Facturas +where Fecha > '2015-01-01') cli using(Id_Cliente) +left join +( +select distinct Id_Cliente +from +( +select Fecha + , @saldo := IF(@cliente = Id_Cliente, @saldo + Importe, Importe) Saldo + , @cliente := Id_Cliente as Id_Cliente +from +( +select Id_Cliente, Fecha, Importe from + +( +select Id_Cliente, -1 * Importe Importe, Fecha +from Facturas +union all +select Id_Cliente, Entregado, Fechacobro +from Recibos +) sub +order by Id_Cliente, Fecha +) sub2 +) sub3 +where Saldo > -1 +and Fecha > '2015-01-01' + +) sub4 using(Id_Cliente) +where sub4.Id_Cliente is null; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mana_list` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `mana_list`(IN str VARCHAR(3)) +BEGIN + +DECLARE idT INT; + +IF ASCII(str) between 48 and 57 THEN -- el chr(48) es el 0 y el chr(57) es el 9. De ese modo se comprueba si es un numero o un carácter de texto + + SET idT = cast(str as signed); + +ELSE + + SELECT Id_Trabajador INTO idT + FROM Trabajadores + WHERE CodigoTrabajador = str; + +END IF; + + +SELECT * FROM +( +SELECT Id_Ticket + , Alias + , t.Fecha as FechaTicket + , m.odbc_date as FechaAccion + , Id_Article + , CONCAT(IF(Id_Componente = 39, 'Auto: ',''),Concepte) Concepte + , Cantidad + , round(Valor,2) as Valor + , round(Cantidad * Valor,2) as MANA + FROM Movimientos_componentes mc + JOIN Movimientos m using(Id_Movimiento) + JOIN Tickets t using(Id_Ticket) + JOIN Consignatarios cs using(Id_Consigna) + JOIN Clientes c on c.Id_Cliente = cs.Id_Cliente + WHERE c.Id_Trabajador = idT + AND Id_Componente IN (39, 37) + and t.Fecha > TIMESTAMPADD(WEEK,-1,CURDATE()) + + UNION ALL + +SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL + + UNION ALL + +SELECT c.Id_Cliente, Cliente, r.FechaCobro, r.odbc_date, NULL, 'cobro', NULL, NULL, - Entregado + FROM Recibos r + JOIN Clientes c using(Id_Cliente) + WHERE Id_Banco = 66 -- Caja de maná + AND c.Id_Trabajador = idT + + UNION ALL + +SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL + + UNION ALL + +SELECT c.Id_Cliente, Cliente, g.Fecha, g.odbc_date, NULL, Comentario, NULL, NULL, g.Importe + FROM Greuges g + JOIN Clientes c using(Id_Cliente) + WHERE Greuges_type_id = 3 -- Maná + AND c.Id_Trabajador = idT + ) t1 +ORDER BY FechaAccion DESC; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mana_requery` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `mana_requery`() +BEGIN + +DECLARE MyFechaDesde DATE; + +SELECT max(dated) INTO MyFechaDesde +FROM bs.manaCustomer; + + +UPDATE bs.mana_spellers + +LEFT JOIN + +( + + SELECT Id_Trabajador, sum(mana) as mana FROM + + ( + SELECT c.Id_Trabajador, Cantidad * Valor as mana + FROM Tickets t + JOIN Consignatarios cs using(Id_Consigna) + JOIN Clientes c on c.Id_Cliente = cs.Id_Cliente + JOIN Movimientos m using(Id_Ticket) + JOIN Movimientos_componentes mc using(Id_Movimiento) + WHERE Id_Componente IN (39, 37) -- maná auto y maná + AND Fecha > MyFechaDesde + + UNION ALL + + SELECT c.Id_Trabajador, - Entregado + FROM Recibos r + JOIN Clientes c using(Id_Cliente) + WHERE Id_Banco = 66 + AND Fechacobro > MyFechaDesde + + UNION ALL + + SELECT c.Id_Trabajador, g.Importe + FROM Greuges g + JOIN Clientes c using(Id_Cliente) + WHERE Greuges_type_id = 3 -- Maná + AND Fecha > MyFechaDesde + + UNION ALL + + SELECT c.Id_Trabajador, mana + FROM bs.manaCustomer mc + JOIN vn2008.Clientes c ON c.Id_Cliente = mc.Id_Cliente + WHERE dated = MyFechaDesde + ) sub + + GROUP BY Id_Trabajador + +) m using(Id_Trabajador) + +SET used = IFNULL(m.mana,0); + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `massiveTicket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `massiveTicket`( + IN dateFrom DATE, IN dateTo DATE, IN customerId INT, OUT newTicketId INT) +BEGIN +/** + * Genera un nuevo ticket con los movimientos correspondientes a los parámetros + * + * @param dateFrom Fecha mínima para los tickets + * @param dateTo Fecha máxima para los tickets + * @param customerId Cliente + * + * @return newTicketId Nuevo numero de ticket + **/ + + DECLARE inventoryWarehouse INT DEFAULT 13; + DECLARE defaultCompany INT DEFAULT 442; + DECLARE defaultWorker INT DEFAULT 20; + + CALL vn.ticketCreate ( customerId + , CURDATE() + , inventoryWarehouse + , defaultCompany + , NULL + , NULL + , NULL + , CURDATE() + , newTicketId); + + INSERT INTO Movimientos( Id_Ticket + , Id_Article + , Concepte + , Preu + , Descuento + , Cantidad) + + SELECT newTicketId + , Id_Article + , Concepte + , Preu + , Descuento + , Cantidad + FROM Movimientos m + JOIN Tickets t ON m.Id_Ticket = t.Id_Ticket + WHERE Id_Cliente = customerId + AND t.Fecha BETWEEN dateFROM AND DAYEND(dateTO); + + SELECT newTicketId; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mensaje` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `mensaje`(IN idREM INT, IN idDES INT, IN strMSG LONGTEXT) +BEGIN + +/*DECLARE lngLASTID BIGINT;*/ + +-- Caso sencillo + +INSERT INTO Mensajes(Mensaje, Fecha, Remitente, Destinatario) +VALUES(strMSG, NOW(), idREM, idDES); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `monitoring_calls` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `monitoring_calls`(IN datFEC DATE) +BEGIN + +SELECT Id_Trabajador, AVG(billsec) as Duracion, days.Fecha, Hora, SUM(Recibidas) as Entrantes, SUM(Emitidas) as Salientes +FROM +( +SELECT Id_Trabajador, billsec, 1 as Recibidas, NULL as Emitidas, date(calldate) as Fecha, hour(calldate) as Hora +FROM Trabajadores T +INNER JOIN cdr C ON C.dstchannel LIKE CONCAT('%', T.extension, '%') +LEFT JOIN v_phonebook A ON A.Telefono = C.src +WHERE calldate >= datFEC +UNION ALL +SELECT Id_Trabajador, billsec, NULL as Recibidas, 1 as Emitidas, date(calldate), hour(calldate) +FROM Trabajadores T +INNER JOIN cdr C ON C.src = T.extension +LEFT JOIN v_phonebook A ON A.Telefono = C.dst +WHERE calldate >= datFEC +) llamadas +INNER JOIN Permisos USING(Id_Trabajador) +INNER JOIN +( +SELECT DISTINCT Fecha FROM Tickets WHERE Fecha >= datFEC +) days USING(Fecha) +WHERE Id_Grupo = 6 +GROUP BY Id_Trabajador, Fecha, Hora; + +/* +SELECT Id_Trabajador, SUM(dur_in) dur_in, SUM(dur_out) dur_out, llamadas.Fecha,YEAR(llamadas.Fecha) `year`, +MONTH(llamadas.Fecha) `month`,WEEK(llamadas.Fecha,7) `week`, Hora, SUM(Recibidas) as Entrantes, SUM(Emitidas) as Salientes +FROM +( +SELECT Id_Trabajador, billsec dur_in, NULL dur_out, 1 as Recibidas, NULL as Emitidas, date(calldate) as Fecha, hour(calldate) as Hora +FROM Trabajadores T +INNER JOIN cdr C ON C.dstchannel LIKE CONCAT('%', T.extension, '%') +WHERE calldate >= CURDATE() +UNION ALL +SELECT Id_Trabajador,NULL dur_in, billsec dur_out, NULL as Recibidas, 1 as Emitidas, date(calldate), hour(calldate) +FROM Trabajadores T +INNER JOIN cdr C ON C.src = T.extension +WHERE calldate >= CURDATE() +) llamadas +INNER JOIN Permisos USING(Id_Trabajador) +WHERE Id_Grupo = 6 +GROUP BY Id_Trabajador, Fecha, Hora; +*/ +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Movimiento_rechazo` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Movimiento_rechazo`(IN idMOV BIGINT) +BEGIN + + DECLARE idC INT; + DECLARE newFEC DATE; + DECLARE intWarehouse INT; + DECLARE userNUM INT; + DECLARE intEmpresa INT; + DECLARE IdConsignatario INT; + DECLARE intIdAgencia INT; + DECLARE Id_NEWTICKET BIGINT; + DECLARE Id_NEWMOVIMIENTO BIGINT; + DECLARE datLanding DATE; + DECLARE v_start DATETIME; + DECLARE v_end DATETIME; + DECLARE intTicketActual INT; + DECLARE SYSTEM_WORKER INT DEFAULT 20; + + SELECT Id_Trabajador INTO userNUM + FROM Trabajadores + WHERE user_id = account.userGetId(); + + IF userNUM IS NULL THEN + SET userNUM = 33; + end IF; + + SELECT Id_Cliente + , Fecha + , warehouse_id + , empresa_id + , Id_Consigna + , Id_Agencia + , Landing + , Id_Ticket + + INTO idC + , newFEC + , intWarehouse + , intEmpresa + , IdConsignatario + , intIdAgencia + , datLanding + , intTicketActual + FROM Tickets t + JOIN Movimientos m using(Id_Ticket) + WHERE Id_Movimiento = idMOV; + + -- Busca un ticket existente que coincida con los parametros del nuevo pedido + + SET v_start = TIMESTAMP(newFEC); + SET v_end = TIMESTAMP(newFEC, '23:59:59'); + + SELECT Id_Ticket INTO Id_NEWTICKET + FROM vn2008.Tickets t + WHERE IdConsignatario = t.Id_Consigna + AND intWarehouse = t.warehouse_id + AND intIdAgencia = t.Id_Agencia + AND IFNULL(datLanding,-1) = IFNULL(t.Landing,-1) + AND t.Fecha BETWEEN v_start AND v_end -- uso BETWEEN para aprovechar el indice + AND t.Factura IS NULL + AND t.Localizacion = 'RECHAZO' + AND t.PedidoImpreso = 0 + AND t.Etiquetasemitidas = 0 + AND vn2008.is_bionic(t.Id_Ticket) + AND t.Id_Cliente <> 1118 + AND t.Id_Ticket <> intTicketActual + LIMIT 1; + + IF Id_NEWTICKET IS NULL + THEN + Call vn.ticketCreate( idC + , newFEC + , intWarehouse + , intEmpresa + , IdConsignatario + , intIdAgencia + , NULL + , newFEC + , Id_NEWTICKET); + + CALL bionic_calc_ticket(Id_NEWTICKET); + END IF; + + INSERT INTO vncontrol.inter(Id_Ticket, Id_Trabajador, state_id) + SELECT Id_NEWTICKET, SYSTEM_WORKER, s.id + FROM vn2008.state s + WHERE s.code = 'FIXING'; + + UPDATE Tickets SET landing = datLanding WHERE Id_Ticket = Id_NEWTICKET; + + INSERT INTO Movimientos(Id_Ticket, Id_Article, Concepte, Cantidad, Preu, Descuento) + SELECT Id_NEWTICKET, Id_Article, Concepte, Cantidad, Preu, Descuento + FROM Movimientos + WHERE Id_Movimiento = idMOV; + + SELECT LAST_INSERT_ID() INTO Id_NEWMOVIMIENTO; + + INSERT INTO Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) + SELECT Id_NEWMOVIMIENTO, Id_Componente, Valor + FROM Movimientos_componentes + WHERE Id_Movimiento = idMOV; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `msg` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `msg`(IN memTXT VARCHAR(255), IN idREM INTEGER, idDES INTEGER) +BEGIN + DECLARE last_ID INTEGER; + DECLARE codDES CHAR(3); + + SELECT CodigoTrabajador INTO codDES FROM Trabajadores WHERE Id_Trabajador = idDES; + + INSERT INTO Mensajes(Mensaje,Fecha,Remitente,Destinatario) + VALUES(memTXT, NOW(),idREM, idDES); + + SELECT LAST_INSERT_ID() INTO last_ID; + + + INSERT INTO Incidencias(Incidencia,Id_Trabajador,Destino,Fecha,Fecha_Mod) + VALUES (CONCAT('@@ ',last_ID),idREM,codDES,NOW(),NOW()); + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nest_brother_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nest_brother_add`(IN strTABLE VARCHAR(45) + ,IN strBROTHER_NEW VARCHAR(45) + ,IN idBROTHER_OLD INT + ) +BEGIN + + +DECLARE v_sql TEXT; +DECLARE myRight INT; + +DROP TEMPORARY TABLE IF EXISTS aux; +CREATE TEMPORARY TABLE aux +SELECT 0 as rgt; + + + + + SET v_sql = sql_printf ( + ' + UPDATE aux SET rgt = (SELECT rgt FROM %t WHERE id = %v); + ', + strTABLE, + idBROTHER_OLD); + +CALL sql_query (v_sql); + +SELECT rgt INTO myRight FROM aux; + +DROP TEMPORARY TABLE IF EXISTS aux; + + + + +SET v_sql = sql_printf ( + ' + UPDATE %t SET rgt = rgt + 2 WHERE rgt > %v ORDER BY rgt DESC; + ', + strTABLE, myRight); + +CALL sql_query (v_sql); + +SET v_sql = sql_printf ( + ' + UPDATE %t SET lft = lft + 2 WHERE lft > %v ORDER BY lft DESC; + ',strTABLE, myRight); +CALL sql_query (v_sql); + +SET v_sql = sql_printf ( + ' + INSERT INTO %t(name, lft, rgt) VALUES(%v, %v + 1, %v + 2); + ',strTABLE + ,strBROTHER_NEW + ,myRight + ,myRight); + +CALL sql_query (v_sql); + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nest_child_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nest_child_add`(IN strTABLE VARCHAR(45) + ,IN strCHILD VARCHAR(45) + ,IN idFATHER INT + ) +BEGIN + + +DECLARE v_sql TEXT; +DECLARE myLeft INT; + +DROP TEMPORARY TABLE IF EXISTS aux; +CREATE TEMPORARY TABLE aux +SELECT 0 as lft; + + + + SET v_sql = sql_printf ( + ' + UPDATE aux SET lft = (SELECT lft FROM %t WHERE id = %v); + ', + strTABLE, + idFATHER); + +CALL sql_query (v_sql); + +SELECT lft INTO myLeft FROM aux; + +DROP TEMPORARY TABLE IF EXISTS aux; + + + + +SET v_sql = sql_printf ( + ' + UPDATE %t SET rgt = rgt + 2 WHERE rgt > %v ORDER BY rgt DESC; + ', + strTABLE, myLeft); + +CALL sql_query (v_sql); + +SET v_sql = sql_printf ( + ' + UPDATE %t SET lft = lft + 2 WHERE lft > %v ORDER BY lft DESC; + ',strTABLE, myLeft); +CALL sql_query (v_sql); + +SET v_sql = sql_printf ( + ' + INSERT INTO %t(name, lft, rgt) VALUES(%v, %v + 1, %v + 2); + ',strTABLE + ,strCHILD + ,myLeft + ,myLeft); + +CALL sql_query (v_sql); + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nest_delete` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nest_delete`(IN strTABLE VARCHAR(45) ,IN idNODE INT) +BEGIN + + +DECLARE v_sql TEXT; +DECLARE myRight INT; +DECLARE myLeft INT; +DECLARE myWidth INT; + +DROP TEMPORARY TABLE IF EXISTS aux; +CREATE TEMPORARY TABLE aux +SELECT 0 as rgt, 0 as lft, 0 as wdt; + + + SET v_sql = sql_printf ( + ' + UPDATE aux a JOIN %t t SET a.rgt = t.rgt, a.lft = t.lft, a.wdt = t.rgt - t.lft + 1 + WHERE t.id = %v; + ', + strTABLE, + idNODE); + +CALL sql_query (v_sql); + +SELECT rgt, lft, wdt INTO myRight, myLeft, myWidth FROM aux; + +DROP TEMPORARY TABLE IF EXISTS aux; + +SET v_sql = sql_printf ( + ' + DELETE FROM %t WHERE lft BETWEEN %v AND %v + ',strTABLE + ,myLeft + ,myRight); + +CALL sql_query (v_sql); + + + +SET v_sql = sql_printf ( + ' + UPDATE %t SET rgt = rgt - %v WHERE rgt > %v ORDER BY rgt; + ',strTABLE + ,myWidth + ,myRight); + +CALL sql_query (v_sql); + +SET v_sql = sql_printf ( + ' + UPDATE %t SET lft = lft - %v WHERE lft > %v ORDER BY lft; + ',strTABLE + ,myWidth + ,myRight); + +CALL sql_query (v_sql); + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nest_leaves` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nest_leaves`(IN strTABLE VARCHAR(20), IN strTABLE_LINES VARCHAR(40), IN strNEST_ID VARCHAR(40), IN intGAP INTEGER, IN bolSHOW BOOLEAN) +BEGIN + +DECLARE v_sql TEXT; + + +DROP TEMPORARY TABLE IF EXISTS tmp.nest; + +-- Se llama al procedimiento que genera el arbol +CALL nest_tree(strTABLE, intGAP, FALSE); + +-- Se añade un campo para el conteo de hojas +ALTER TABLE tmp.nest +ADD leaves INT, +ADD time DATETIME; + +-- Añadimos la hora +SET v_sql = sql_printf ( + ' + update tmp.nest n + join vn2008.%t s using(id) + set n.time = s.odbc_date ; + ', strTABLE + ); + + +CALL sql_query (v_sql); + + +-- Actualizamos el campo leaves para los nodos que tienen asociados +SET v_sql = sql_printf ( + ' + update tmp.nest n + join + ( + select %t as id, count(*) as leaves + from vn2008.%t + group by %t + ) s using(id) + set n.leaves = s.leaves + ; + ', strNEST_ID + , strTABLE_LINES + , strNEST_ID + ); + + +CALL sql_query (v_sql); + +-- Actualizamos todos los nodos con la suma de las hojas de los hijos +drop temporary table if exists tmp.nest2; + +create temporary table tmp.nest2 +select * from tmp.nest; + +drop temporary table if exists tmp.nest3; + +create temporary table tmp.nest3 +select * from tmp.nest; + +update tmp.nest +join +( +select n.id, sum(n2.leaves) leaves +from tmp.nest3 n +join tmp.nest2 n2 on n2.lft between n.lft and n.rgt +group by n.id +) sub on sub.id = nest.id +set nest.leaves = ifnull(sub.leaves,0); + + +drop temporary table tmp.nest2; + +IF bolSHOW THEN + SELECT * FROM tmp.nest; +END IF; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nest_move` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nest_move`(IN strTABLE VARCHAR(45) ,IN idNODE INT, IN idFATHER INT) +BEGIN + + +DECLARE v_sql TEXT; +DECLARE myRight INT; +DECLARE myLeft INT; +DECLARE myWidth INT; +DECLARE fatherRight INT; +DECLARE fatherLeft INT; +DECLARE gap INT; + +DROP TEMPORARY TABLE IF EXISTS aux; +CREATE TEMPORARY TABLE aux +SELECT 0 as rgt, 0 as lft, 0 as wdt, 0 as frg, 0 as flf; + + + + -- Averiguamos el ancho de la rama + SET v_sql = sql_printf ( + ' + UPDATE aux a JOIN %t t SET a.wdt = t.rgt - t.lft +1 + WHERE t.id = %v; + ', + strTABLE, + idNODE); + +CALL sql_query (v_sql); + +-- Averiguamos la posicion del nuevo padre + SET v_sql = sql_printf ( + ' + UPDATE aux a JOIN %t t SET a.frg = t.rgt, a.flf = t.lft + WHERE t.id = %v; + ', + strTABLE, + idFATHER); + +CALL sql_query (v_sql); + +SELECT wdt, frg, flf INTO myWidth, fatherRight, fatherLeft FROM aux; + + +-- 1º Incrementamos los valores de todos los nodos a la derecha del punto de inserción (fatherRight) , para hacer sitio + + +SET v_sql = sql_printf ( + ' + UPDATE %t SET rgt = rgt + %v WHERE rgt >= %v ORDER BY rgt DESC; + ',strTABLE + ,myWidth + ,fatherRight); + +CALL sql_query (v_sql); + +SET v_sql = sql_printf ( + ' + UPDATE %t SET lft = lft + %v WHERE lft >= %v ORDER BY lft DESC; + ',strTABLE + ,myWidth + ,fatherRight); + +CALL sql_query (v_sql); + +-- Es preciso recalcular los valores del nodo en el caso de que estuviera a la derecha del nuevo padre + +SET v_sql = sql_printf ( + ' + UPDATE aux a JOIN %t t SET a.rgt = t.rgt, a.lft = t.lft + WHERE t.id = %v; + ', + strTABLE, + idNODE); + +CALL sql_query (v_sql); + +SELECT lft, rgt, frg - lft INTO myLeft, myRight, gap FROM aux; + + +-- 2º Incrementamos el valor de todos los nodos a trasladar hasta alcanzar su nueva posicion + + +SET v_sql = sql_printf ( + ' + UPDATE %t SET lft = lft + %v WHERE lft BETWEEN %v AND %v ORDER BY lft DESC; + ',strTABLE + ,gap + ,myLeft + ,myRight); + +CALL sql_query (v_sql); + +SET v_sql = sql_printf ( + ' + UPDATE %t SET rgt = rgt + %v WHERE rgt BETWEEN %v AND %v ORDER BY rgt DESC; + ',strTABLE + ,gap + ,myLeft + ,myRight); + +CALL sql_query (v_sql); + +-- 3º Restaremos a todos los nodos resultantes, a la derecha de la posicion arrancada el ancho de la rama escindida +SET v_sql = sql_printf ( + ' + UPDATE %t SET lft = lft - %v WHERE lft > %v ORDER BY lft; + ',strTABLE + ,myWidth + ,myLeft); + +CALL sql_query (v_sql); + + +SET v_sql = sql_printf ( + ' + UPDATE %t SET rgt = rgt - %v WHERE rgt > %v ORDER BY rgt; + ',strTABLE + ,myWidth + ,myRight); + +CALL sql_query (v_sql); + + +DROP TEMPORARY TABLE IF EXISTS aux; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nest_query` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nest_query`(IN strTABLE VARCHAR(45)) +BEGIN + + +DECLARE v_sql TEXT; +DECLARE v_max_depth INT; +DECLARE v_current_depth INT; + +DROP TEMPORARY TABLE IF EXISTS tmp.nest_depth; +DROP TEMPORARY TABLE IF EXISTS tmp.nest_depth_aux; + + +-- Calculamos el nivel de profundidad para cada item +SET v_sql = sql_printf ( + ' + CREATE TEMPORARY TABLE tmp.nest_depth + + SELECT node.id node_id, COUNT(parent.id) - 1 as depth + FROM %t AS node, + %t AS parent + WHERE node.lft BETWEEN parent.lft AND parent.rgt + GROUP BY node.id + ORDER BY node.lft + ; + ', + strTABLE, + strTABLE + ); + + +CALL sql_query (v_sql); + +SELECT max(depth) FROM tmp.nest_depth INTO v_max_depth; +SET v_current_depth = 2; + +CREATE TEMPORARY TABLE tmp.nest_depth_aux +SELECT * FROM tmp.nest_depth; + + +-- Vamos a hacer consultas anidadas para obtener una consulta de dos entradas + +DROP TEMPORARY TABLE IF EXISTS tmp.nest; +DROP TEMPORARY TABLE IF EXISTS tmp.nest_aux; + + +-- Primera tabla, con el nivel 0 +SET v_sql = sql_printf ( + ' + CREATE TEMPORARY TABLE tmp.nest + SELECT child.id nest_id + ,child.lft + ,child.rgt + ,parent.id as ID0 + ,parent.name as PARENT0 + ,child.id as ID1 + ,child.name as PARENT1 + FROM %t AS parent + JOIN tmp.nest_depth nd ON nd.node_id = parent.id AND nd.depth = 0, + %t AS child + JOIN tmp.nest_depth_aux ndc ON ndc.node_id = child.id AND ndc.depth = 1 + WHERE child.lft BETWEEN parent.lft + 1 AND parent.rgt + ORDER BY parent.lft; + ', + strTABLE, + strTABLE + ); + +CALL sql_query (v_sql); + +CREATE TEMPORARY TABLE tmp.nest_aux +SELECT * FROM tmp.nest; + + + +-- Bucle +WHILE v_current_depth <= v_max_depth DO + + + DROP TEMPORARY TABLE IF EXISTS tmp.nest; + + SET v_sql = sql_printf ( + ' + CREATE TEMPORARY TABLE tmp.nest + SELECT parent.* + ,child.id as %v + ,child.name as %v + ,child.id as ID + FROM tmp.nest_aux AS parent + LEFT JOIN %t AS child ON child.lft BETWEEN parent.lft + 1 AND parent.rgt + LEFT JOIN tmp.nest_depth_aux ndc ON ndc.node_id = child.id + WHERE IFNULL(ndc.depth,%v) = %v + ORDER BY parent.lft; + ' + ,CONCAT('ID',v_current_depth) + ,CONCAT('PARENT',v_current_depth) + ,strTABLE + ,v_current_depth + ,v_current_depth + ); + + CALL sql_query (v_sql); + +-- Actualizamos lft y rgt +SET v_sql = sql_printf ( + ' + UPDATE tmp.nest + JOIN %t AS child ON child.id = nest.ID + SET nest.lft = child.lft, nest.rgt = child.rgt, nest_id = nest.ID' + ,strTABLE + ); + +CALL sql_query (v_sql); + + + + ALTER TABLE tmp.nest DROP COLUMN ID; + + DROP TEMPORARY TABLE IF EXISTS tmp.nest_aux; + CREATE TEMPORARY TABLE tmp.nest_aux + SELECT * FROM tmp.nest; + + + + SET v_current_depth = v_current_depth + 1; + +END WHILE; + + + +-- Eliminamos los campos duplicados +SET v_current_depth = 0; + +WHILE v_current_depth <= v_max_depth DO + + SET @id = 0; + + SET v_sql = sql_printf ( + ' + UPDATE tmp.nest_aux + SET %t = IF(@id = %t, NULL, %t), + ID0 = IF(@id := %t, ID0, ID0), + %t = IF(length(%t), %t,NULL) + ' + ,CONCAT('PARENT',v_current_depth) + ,CONCAT('ID',v_current_depth) + ,CONCAT('PARENT',v_current_depth) + ,CONCAT('ID',v_current_depth) + ,CONCAT('ID',v_current_depth) + ,CONCAT('PARENT',v_current_depth) + ,CONCAT('ID',v_current_depth) + ); + + CALL sql_query (v_sql); + + SET v_current_depth = v_current_depth + 1; + +END WHILE; + + + + +SELECT * FROM tmp.nest_aux; + + +-- Limpieza +DROP TEMPORARY TABLE IF EXISTS tmp.nest_aux; +DROP TEMPORARY TABLE IF EXISTS tmp.nest; +DROP TEMPORARY TABLE IF EXISTS tmp.nest_depth_aux; +DROP TEMPORARY TABLE IF EXISTS tmp.nest_depth; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nest_sons_list` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nest_sons_list`(IN intID INT, IN strTABLE VARCHAR(45), IN bolSHOW BOOLEAN) +BEGIN + + +/* + +Esta función devuelve un recordset con los ID de todos los nodos que cuelgan del nodo que se pasa como parámetro + +*/ + + +DECLARE v_sql TEXT; + +DROP TEMPORARY TABLE IF EXISTS tmp.nest_sons; + + +SET v_sql = sql_printf ( + ' + CREATE TEMPORARY TABLE tmp.nest_sons + + SELECT DISTINCT node.id node_id + FROM %t AS node + JOIN %t AS parent ON node.lft between parent.lft and parent.rgt + WHERE parent.id = %v + ORDER BY node.lft + ; + ', + strTABLE, + strTABLE, + intID + ); + + +CALL sql_query (v_sql); + +IF bolSHOW THEN + + SELECT * FROM tmp.nest_sons; + +END IF; + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nest_tree` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nest_tree`(IN strTABLE VARCHAR(20), IN intGAP INTEGER, IN bolSHOW BOOLEAN) +BEGIN + +DECLARE v_sql TEXT; + + +DROP TEMPORARY TABLE IF EXISTS tmp.nest; + +SET v_sql = sql_printf ( + ' + CREATE TEMPORARY TABLE tmp.nest + SELECT node.id + , CONCAT( REPEAT(REPEAT(" ",%v), COUNT(parent.id) - 1), node.name) AS name + , node.lft + , node.rgt + , COUNT(parent.id) - 1 as depth + , cast((node.rgt - node.lft - 1) / 2 as DECIMAL) as sons + FROM %t AS node, + %t AS parent + WHERE node.lft BETWEEN parent.lft AND parent.rgt + GROUP BY node.id + ORDER BY node.lft; + ', + intGAP, + strTABLE, + strTABLE + ); + + +CALL sql_query (v_sql); + +IF bolSHOW THEN + SELECT * FROM tmp.nest; +END IF; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `newItem` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `newItem`(IN vTicket INTEGER, IN vVolume INTEGER, IN vQuantity INTEGER) +BEGIN + + DECLARE vLandingWarehouse INT; + DECLARE vLandingDate DATE; + DECLARE vShipmentDate DATE; + DECLARE vTravel INT; + DECLARE vEntry INT; + + SELECT warehouse_id, Fecha, landing INTO vLandingWarehouse, vShipmentDate, vLandingDate FROM Tickets WHERE Id_Ticket = vTicket; + + -- seleccionamos travel + SELECT id, Id_Entrada INTO vTravel, vEntry + FROM travel t LEFT JOIN Entradas e ON t.id = e.travel_id + WHERE t.landing = vLandingDate AND t.shipment = vShipmentDate AND t.warehouse_id_out = vLandingWarehouse AND t.warehouse_id = vWarehouse + AND t.delivered = FALSE ; -- agency ?? + + -- creamos el travel si es necesario + IF NOT vTravel THEN + INSERT INTO travel (shipment, landing, warehouse_id, warehouse_id_out, agency_id) + VALUES (vShipmentDate, vLandingDate, vLandingWarehouse, vShipmentWarehouse, a); + SELECT LAST_INSERT_ID() INTO vTravel; + END IF; + + -- creamos la Entrada si es necesario + IF NOT vEntry THEN + INSERT INTO Entradas (Id_Proveedor, travel_id) + VALUES (13, vTravel); -- proveedor 'MOVIMIENTO ALMACEN' + SELECT LAST_INSERT_ID() INTO vEntry; + END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `niching` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `niching`(IN i_ini INT, IN i_end INT +, IN i_bal INT, IN i_col INT ) +BEGIN + +DECLARE i INT(5); +DECLARE j INT(5); + +DROP TEMPORARY TABLE IF EXISTS labels; + +CREATE TEMPORARY TABLE `labels` + (`label` VARCHAR(15) NULL) +ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + +WHILE i_ini <= i_end DO + + SET i = i_bal; + + WHILE i > 0 DO + + + + SET j = i_col; + IF j = 0 THEN + INSERT INTO labels(label) + VALUES (CONCAT(i_ini,IF(i=0,' ',char(64 + i)))); + ELSE + + WHILE j > 0 DO + + INSERT INTO labels(label) + VALUES (CONCAT(i_ini,char(64 + i), j)); + + SET j = j - 1; + + END WHILE; + END IF; + SET i = i - 1; + + END WHILE; + +SET i_ini = i_ini + 1; + +END WHILE; + +SELECT CONCAT('*',label,'*') as label, label as id FROM labels; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nightly_tasks` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nightly_tasks`() +BEGIN + +DECLARE AUX INT; + +DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN + GET DIAGNOSTICS CONDITION 2 @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SELECT CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto')); + INSERT INTO vn2008.mail (`to`,`subject`,`text`) VALUES ('jgallego@verdnatura.es', 'error nightly tasks' ,CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto'))); + INSERT INTO vn2008.mail (`to`,`subject`,`text`) VALUES ('pako@verdnatura.es', 'error nightly tasks' ,CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto'))); + +END; + + INSERT INTO vn2008.daily_task_log(consulta) VALUES('arranca el event vn2008.nightly_tasks'); + + + SELECT SLEEP(1) INTO AUX; + CALL vn2008.emailYesterdayPurchasesLauncher(); + INSERT INTO vn2008.daily_task_log(consulta) VALUES('emailYesterdayPurchasesLauncher END'); + + SELECT SLEEP(1) INTO AUX; + CALL vn2008.inventory_refresh(); + INSERT INTO vn2008.daily_task_log(consulta) VALUES('inventory refresh END'); + + SELECT SLEEP(1) INTO AUX; + CALL bi.last_buy_id_add; + INSERT INTO vn2008.daily_task_log(consulta) VALUES('last buy id END'); + + /* JGF 2016-09-06 Quitado a peticion de AGS + SELECT SLEEP(1) INTO AUX; + CALL vn2008.comercial_caducado; + INSERT INTO vn2008.daily_task_log(consulta) VALUES('Comercial Caducado END'); + */ + SELECT SLEEP(1) INTO AUX; + CALL bi.defaulting(curdate()); + INSERT INTO vn2008.daily_task_log(consulta) VALUES('defaulting END'); + + INSERT INTO vn2008.Colas(Id_Informe,Id_Trabajador) VALUES (11,57); + + -- Desactivacion de usuarios con contrato terminado + INSERT INTO vn2008.Colas(Id_Informe) VALUES (16); + + SELECT SLEEP(1) INTO AUX; + CALL `bi`.`Ultima_Accion`; + INSERT INTO vn2008.daily_task_log(consulta) VALUES('ultima accion END'); + + SELECT SLEEP(1) INTO AUX; + CALL `bi`.`facturacion_media_anual_update`(); + INSERT INTO vn2008.daily_task_log(consulta) VALUES('facturacion media anual END'); + + SELECT SLEEP(1) INTO AUX; + CALL vn2008.Clientes_calidad; + INSERT INTO vn2008.daily_task_log(consulta) VALUES('clientes calidad END'); + + SELECT SLEEP(1) INTO AUX; + CALL bi.rotacion_update; + INSERT INTO vn2008.daily_task_log(consulta) VALUES('rotation update END'); + + SELECT SLEEP(1) INTO AUX; + CALL bi.rutas_m3_add; + INSERT INTO vn2008.daily_task_log(consulta) VALUES('rutas_m3 END'); + + SELECT SLEEP(1) INTO AUX; + CALL vn2008.tarjetas_credito_0; + INSERT INTO vn2008.daily_task_log(consulta) VALUES('tarjetas credito 0 END'); + + SELECT SLEEP(1) INTO AUX; + CALL bi.comparativa_add(); + INSERT INTO vn2008.daily_task_log(consulta) VALUES('comparativa add END'); + + SELECT SLEEP(1) INTO AUX; + call vn2008.recobro_credito(); -- PAK 12/01/2016 + INSERT INTO vn2008.daily_task_log(consulta) VALUES('recobro_credito END'); + + SELECT SLEEP(1) INTO AUX; + CALL vn2008.accumulatorsReadingDateUpdate(); + INSERT INTO vn2008.daily_task_log(consulta) VALUES('accumulatorsReadingDateUpdate END'); + + SELECT SLEEP(1) INTO AUX; + call vn2008.itemTagArrangedUpdate(0); + INSERT INTO vn2008.daily_task_log(consulta) VALUES('itemTagFormatUpdate END'); + + SELECT SLEEP(1) INTO AUX; + CALL vn.itemTagUpdatePriority(0); + INSERT INTO vn2008.daily_task_log(consulta) VALUES('articleTagUpdatePriority END'); + + /* + CALL vn.invoiceOutAgainDateRange(util.yesterday(),util.yesterday()); + INSERT INTO vn2008.daily_task_log(consulta) VALUES('invoiceOutAgainDateRange END'); + */ + + /* jgf posar quan estiga arreglat + SELECT SLEEP(1) INTO AUX; + CALL bi.primer_pedido_add; + INSERT INTO vn2008.daily_task_log(consulta) VALUES('primer_pedido_add END'); +*/ + SELECT SLEEP(1) INTO AUX; + INSERT INTO vn2008.daily_task_log(consulta) VALUES('finalitza el event vn2008.nightly_tasks'); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `notify_passport` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `notify_passport`(IN idA INT, IN idEti SMALLINT, IN idPacking SMALLINT, IN idCompra INT) +BEGIN + INSERT INTO vn2008.mail(`subject`,`text`,`to`) + SELECT 'Solicitar pasaporte', + CONCAT('Etiquetas: ',ifnull(idEti,0),', Packing: ',ifnull(idPacking,0),', Nombre: ',ifnull(a.Article,0),', buy_edi: ',ifnull(be.id,0),', Nombre botánico: ', + IFNULL(g.latin_genus_name,''),' ',IFNULL(s.latin_species_name,''),' , Productor: ',IFNULL(es.company_name,IFNULL(p.`name`,''))) + ,'ekt@verdnatura.es' + FROM vn2008.Articles a + LEFT JOIN vn2008.Articles_botanical ab ON ab.Id_Article = a.Id_Article + LEFT JOIN edi.genus g ON g.genus_id = ab.genus_id + LEFT JOIN edi.specie s ON IFNULL(s.specie_id,ab.specie_id) = ab.specie_id + LEFT JOIN vn2008.producer p ON p.producer_id = a.producer_id + LEFT JOIN vn2008.Compres c ON c.Id_Compra = idCompra + LEFT JOIN vn2008.buy_edi be ON c.buy_edi_id = be.id + LEFT JOIN edi.supplier es ON es.supplier_id = be.pro + WHERE a.Id_Article = idA; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `pay` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `pay`(IN datFEC DATE + , IN idPROV INT + , IN dblIMPORTE DOUBLE + , IN idMONEDA INT + , IN dblDIVISA DOUBLE + , IN idCAJA INT + , IN idPAYMET INT + , IN dblGASTOS DOUBLE + , IN strCONCEPTO VARCHAR(40) + , IN idEMP INT) +BEGIN + + +-- Registro en la tabla Cajas +INSERT INTO Cajas ( Concepto + , Serie + , Numero + , Salida + , Cajafecha + , Partida + , Id_Banco + , Id_Trabajador + ,empresa_id + ,conciliado) + +SELECT CONCAT('n/pago a ', Proveedor) + , 'R' + , idPROV + , dblIMPORTE + , datFEC + , 1 + , idCAJA + , 20 + , idEMP + , 1 +FROM Proveedores +WHERE Id_Proveedor = idPROV; + + +-- Registro en la tabla pago +INSERT INTO pago(fecha + , id_proveedor + , importe + , id_moneda + , divisa + , id_banco + , pay_met_id + , g_bancarios + , concepte + , empresa_id) + + VALUES(datFEC + , idPROV + , dblIMPORTE + , idMONEDA + , IF(dblDIVISA = 0, NULL, dblDIVISA) + , idCAJA + , idPAYMET + , dblGASTOS + , strCONCEPTO + , idEMP); + +SELECT LAST_INSERT_ID() as pago_id; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `percentil` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `percentil`() +BEGIN + +DECLARE max_range INT; + +DROP TEMPORARY TABLE IF EXISTS previa; + +CREATE TEMPORARY TABLE previa +SELECT @posicion:= @posicion +1 as Posicion, Id_Cliente, Total FROM ( +SELECT Id_Cliente, Total FROM ( +SELECT Id_Cliente, SUM(Importe) as Total +FROM Facturas +INNER JOIN Clientes USING(Id_Cliente) +INNER JOIN (SELECT @posicion := 0) sub_pos +WHERE invoice +AND YEAR(Fecha) = YEAR(CURDATE()) +GROUP BY Id_Cliente) sub +ORDER BY Total +) sub2; + +SELECT COUNT(*) INTO max_range FROM previa; + +UPDATE Clientes SET percentil = 0; + +UPDATE Clientes INNER JOIN previa USING(Id_Cliente) +SET Clientes.percentil = ROUND(Posicion *100 / max_range,0); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `portekk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `portekk`(IN intId_Ticket INT,IN intbultos INT, IN intId_Article INT) +BEGIN + + -- Deprecated!! Usar la funcion porte en lugar de este procedure + DECLARE intId_Agencia INT; + DECLARE int_agency_id SMALLINT; + DECLARE int_province_id SMALLINT; + DECLARE bolCOD71 TINYINT(1); + DECLARE intPorte DOUBLE DEFAULT -1; + DECLARE dayofweek TINYINT(1) default 0; + DECLARE suplemento DOUBLE DEFAULT 9.41; + DECLARE strCodPostal VARCHAR(5); + DECLARE intWarehouse_id SMALLINT; + DECLARE dbldescuento DOUBLE DEFAULT 0; + DECLARE intVista TINYINT(1); + DECLARE dblvolumen DOUBLE; + DECLARE intPROVINCIA INT; + + SET @porte := 0; + SELECT c.province_id, a.agency_id, t.Id_Agencia, cod71, Porte,c.CODPOSTAL,t.warehouse_id,c.province_id,cli.Descuento,IFNULL(ag.Vista,a.Vista), por_volumen + INTO intPROVINCIA, int_agency_id,intId_Agencia, bolCOD71,intPorte,strCodPostal,intWarehouse_id,int_province_id,dbldescuento,intVista,dblvolumen + FROM Tickets t + JOIN Consignatarios c USING(Id_Consigna) + JOIN Agencias a ON t.Id_Agencia = a.Id_Agencia + JOIN agency agn ON agn.agency_id = a.agency_id + JOIN Clientes cli on c.Id_Cliente=cli.Id_Cliente + LEFT JOIN agency_warehouse ag ON ag.agency_id = a.agency_id + WHERE Id_Ticket = intId_Ticket limit 1; +-- Fusionar con lo de arriba +/*SELECT IFNULL(MAX(counter),0) +1 INTO intcounter FROM expeditions e + INNER JOIN Tickets t1 ON e.ticket_id = t1.Id_Ticket + INNER JOIN Tickets t2 ON t2.Id_Consigna = t1.Id_Consigna AND DATE(t2.Fecha) = DATE(t1.Fecha) + WHERE t2.Id_Ticket = NEW.ticket_id AND t1.Etiquetasemitidas = FALSE AND t1.empresa_id = t2.empresa_id;*/ + + + IF (intPorte >= 0 or dbldescuento BETWEEN 0 AND 1 ) THEN + IF intPorte or base_ticket(intId_Ticket) < 50 THEN + SELECT IFNULL(intPorte,10)/intbultos price;/*en el cas dels tarifa 1 els cobren 10€ de ports*/ + ELSE + SELECT 0 price; + END IF; + ELSE + IF NOT dblvolumen THEN + IF bolCOD71 THEN + IF intVista = 2 AND intbultos BETWEEN 1 AND 2 THEN + SELECT IF(price * intbultos < 10 AND porte_minimo, 10 / intbultos, price) price FROM Agencias_zonas az + WHERE zona = 1 AND Id_Agencia = intId_Agencia AND az.warehouse_id = intWarehouse_id; + ELSE + IF intId_Agencia = 47 THEN -- Si es viaxpress + SELECT price price FROM Agencias_zonas az INNER JOIN viaxpress USING(zona) + WHERE Id_Agencia = 47 AND codigo_postal = strCodPostal AND az.warehouse_id = intWarehouse_id; + ELSE + CALL sql_query (sql_printf (' + SELECT price FROM Agencias_zonas az + WHERE Id_Agencia = %v AND %v = Id_Article AND az.warehouse_id = %v + AND zona = (SELECT zona FROM Agencias_province + WHERE warehouse_id = %v AND agency_id = %v and province_id = %v)' + ,intId_Agencia,intId_Article,intWarehouse_id,intWarehouse_id,int_agency_id,int_province_id)); + END IF; + END IF; + ELSE + SELECT 0 price; + END IF; + ELSE -- Si es una agency con la columna por_volumen <> 0 calcula el porte por Volumen + + CALL ticket_volumen(intId_Ticket); + SELECT MAX(Porte_total)/intbultos price FROM ticket_volumen; + DROP TEMPORARY TABLE IF EXISTS ticket_volumen; + END IF; + END IF; + + + SET @porte = price; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `PortesDesdeTicketkk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `PortesDesdeTicketkk`( intTicket INTEGER) +BEGIN + -- DEPRECATED! con el bionic esto ya no se usa + DECLARE done BIT DEFAULT 0; + DECLARE v_date_ini,v_date_end DATE; + -- JGF 21/08/14 A partir de un intTicket se calcula lo que se ha cobrado en concepto de portes + -- restando la tarifa dos en esa fecha al valor del ticket + DROP TEMPORARY TABLE IF EXISTS portes; + IF (SELECT Descuento FROM Clientes c JOIN Tickets t ON t.Id_Cliente = c.Id_Cliente WHERE t.Id_Ticket = intTicket) BETWEEN 0 AND 1 THEN + SELECT TIMESTAMPADD(MONTH,-12,Fecha),Fecha INTO v_date_ini,v_date_end FROM Tickets WHERE Id_Ticket = intTicket LIMIT 1; + + + CREATE TEMPORARY TABLE portes (KEY (Id_Article)) ENGINE = MEMORY + SELECT Id_Article,round(SUM(Preu * (1 - (Descuento / 100)) * Cantidad)/ SUM(Cantidad),2) price, round(SUM(Preu * (1 - (Descuento / 100)) * Cantidad),2) importe, + round((SUM(Preu * (1 - (Descuento / 100)) * Cantidad) / SUM(Cantidad) - Tarifa2) * SUM(Cantidad),2) diferencia,Tarifa2, + v_date_end Fecha,SUM(Cantidad) Cantidad + FROM + (SELECT * FROM ( + SELECT m.Id_Article, Tarifa2,m.Preu,m.Descuento,m.Cantidad,t.Fecha,t.warehouse_id,Id_Movimiento + FROM Compres c + JOIN Movimientos m ON m.Id_Article = c.Id_Article + JOIN Articles a ON a.Id_Article = c.Id_Article + JOIN Tipos tp ON tp.tipo_id = a.tipo_id + JOIN Tickets t ON t.Id_Ticket = m.Id_Ticket + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel tr ON tr.id = e.travel_id + WHERE t.Id_Ticket = intTicket AND Novincular = FALSE AND Tarifa2 > 0 + AND t.warehouse_id = tr.warehouse_id AND tr.landing BETWEEN v_date_ini AND v_date_end + AND reino_id <> 6 ORDER BY tr.landing DESC) t + GROUP BY t.Id_Movimiento) t + GROUP BY Id_Article, warehouse_id + UNION all + SELECT Id_Article,Preu * (1 - (Descuento / 100)) ,Preu * (1 - (Descuento / 100)) * Cantidad , + Preu * (1 - (Descuento / 100)) * Cantidad ,0 ,v_date_end, Cantidad FROM Movimientos + WHERE Id_Ticket= intTicket AND Id_Article = 71; + + UPDATE portes p JOIN price_fixed pf ON p.Id_Article = pf.item_id AND Fecha BETWEEN date_start AND date_end AND pf.rate_2 + SET diferencia = (price - rate_2) * Cantidad,Tarifa2 = rate_2; + ELSE + CREATE TEMPORARY TABLE portes (KEY (Id_Article)) ENGINE = MEMORY + SELECT Id_Article,Preu * (1 - (Descuento / 100)) price,Preu * (1 - (Descuento / 100)) * Cantidad importe, + Preu * (1 - (Descuento / 100)) * Cantidad diferencia,0 Tarifa2, Cantidad FROM Movimientos + WHERE Id_Ticket= intTicket AND Id_Article = 71; + END IF; + -- SELECT * FROM vn2008.portes; + + -- SELECT NULL, NULL, NULL, sum(diferencia) as Porte, NULL FROM portes p; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `precio` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `precio`( IN id_cli INT, id_art INT, id_wh INT ) +BEGIN +DECLARE tarifa,descompte, packin,groupin,caj,minimo, id_compra INT DEFAULT 0; +DECLARE importe_min, importe,bonus FLOAT DEFAULT NULL; + +SELECT PrecioEspecial INTO importe FROM PreciosEspeciales WHERE Id_Cliente = id_cli AND Id_Article = id_art; + +IF importe IS NULL THEN + SELECT `Min`, PVP INTO minimo, importe_min FROM `Articles` WHERE Id_Article = id_art; + SELECT Descuento + INTO tarifa + FROM Clientes + WHERE Id_Cliente = id_cli; + + SELECT CASE + WHEN tarifa =0 THEN IF(minimo AND IFNULL(fp.rate_0,C.PVP) < importe_min, importe_min, IFNULL(fp.rate_0,C.PVP)) + WHEN tarifa =1 THEN IF(minimo AND IFNULL(fp.rate_1,C.Tarifa1) < importe_min, importe_min, IFNULL(fp.rate_1,C.Tarifa1)) + WHEN tarifa =2 THEN IF(minimo AND IFNULL(fp.rate_2,C.Tarifa2) < importe_min, importe_min, IFNULL(fp.rate_2,C.Tarifa2)) + WHEN tarifa =3 THEN IF(minimo AND IFNULL(fp.rate_3,C.Tarifa3) < importe_min, importe_min, IFNULL(fp.rate_3,C.Tarifa3)) + WHEN tarifa BETWEEN 4 AND 100 THEN Tarifa1 + WHEN tarifa >100 THEN IF(minimo AND IFNULL(fp.rate_3,C.Tarifa3) * ( ( 200 - tarifa ) /100 ) < importe_min, importe_min,IFNULL(fp.rate_3,C.Tarifa3) * ( ( 200 - tarifa ) /100 )) + END, IFNULL(fp.Packing,C.Packing) Packing, C.Id_Compra,IFNULL(fp.grouping,C.grouping) grouping,IFNULL(fp.caja,C.caja) caja,fp.bonus INTO importe, packin, id_compra,groupin,caj,bonus + FROM Compres C + INNER JOIN Entradas E ON E.Id_Entrada = C.Id_Entrada + INNER JOIN travel T ON T.id = E.travel_id + LEFT JOIN price_fixed fp ON fp.item_id = id_art AND CURDATE() BETWEEN fp.date_start AND fp.date_end AND fp.warehouse_id IN (0,id_wh) + WHERE Id_Article = id_art + AND C.Novincular = FALSE + AND T.landing BETWEEN date_inv() AND CURDATE( ) + AND T.warehouse_id = id_wh + ORDER BY T.landing DESC + LIMIT 1; + + IF tarifa BETWEEN 4 AND 100 THEN SET descompte = tarifa; +END IF; + +IF minimo <> FALSE THEN + IF importe < importe_min THEN + SET importe = importe_min; +END IF; + +END IF; + +END IF; +SELECT importe, descompte, tarifa, packin, id_compra,groupin,caj,bonus +FROM DUAL; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `preOrdenarRuta` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `preOrdenarRuta`(IN vRutaId INT) +BEGIN + +UPDATE Tickets mt +JOIN ( + SELECT tt.Id_Consigna, round(ifnull(avg(t.Prioridad),0),0) as Prioridad + from Tickets t + JOIN Tickets tt on tt.Id_Consigna = t.Id_Consigna + where t.Fecha > TIMESTAMPADD(YEAR,-1,CURDATE()) + AND tt.Id_Ruta = vRutaId + GROUP BY Id_Consigna + ) sub ON sub.Id_Consigna = mt.Id_Consigna + SET mt.Prioridad = sub.Prioridad + WHERE mt.Id_Ruta = vRutaId; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `prepare_client_list` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `prepare_client_list`() +BEGIN + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; + CREATE TEMPORARY TABLE tmp.client_list + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT DISTINCT Id_Cliente + FROM tmp.ticket_list; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `prepare_ticket_list` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `prepare_ticket_list`(vStartingDate DATETIME, vEndingDate DATETIME) +BEGIN + DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; + CREATE TEMPORARY TABLE tmp.ticket_list + (PRIMARY KEY (Id_Ticket)) + ENGINE = MEMORY + SELECT t.Id_Ticket, c.Id_Cliente + FROM Tickets t + LEFT JOIN vn.ticketState ts ON ts.ticket = t.Id_Ticket + JOIN Clientes c ON c.Id_Cliente = t.Id_Cliente + JOIN clientes_tipo ct ON ct.clientes_tipo_id = c.clientes_tipo_id + WHERE ct.code IN ('normal','handMaking') + AND ( + Fecha BETWEEN util.today() AND vEndingDate + OR ( + ts.alertLevel < 3 + AND t.Fecha >= vStartingDate + AND t.Fecha < util.today() + ) + ); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `price_detail` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `price_detail`(IN idART INT, IN datLanding DATE) +BEGIN + CALL item_last_buy_(NULL,datLanding); + + SELECT 'Ultimas compras',NULL as Entrada, NULL as Almacen, NULL as Tarifa3, NULL as Tarifa2 + UNION ALL + SELECT NULL, Id_Entrada, w.name, Tarifa3, Tarifa2 + FROM Compres c + JOIN t_item_last_buy b ON c.Id_Compra = b.buy_id + JOIN warehouse w on w.id = b.warehouse_id + WHERE b.item_id = idART + UNION all + SELECT 'Precios fijados',NULL, NULL as Almacen, NULL as Tarifa3, NULL as Tarifa2 + UNION ALL + SELECT NULL, CONCAT('de ', date_start, ' a ',date_end) , w.name, rate_3,rate_2 + FROM price_fixed + JOIN warehouse w on w.id = warehouse_id + WHERE item_id = idART + AND datLanding BETWEEN date_start AND date_end; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `proc_end` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `proc_end`() +BEGIN + +UPDATE stat SET `end` = NOW() +WHERE id = (SELECT id FROM lastid); + +DROP TEMPORARY TABLE IF EXISTS lastid; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `proc_start` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `proc_start`(IN v_proc_id INT) +BEGIN + +INSERT INTO stat(proc_id) VALUES(v_proc_id); + + +DROP TEMPORARY TABLE IF EXISTS lastid; +CREATE TEMPORARY TABLE lastid +SELECT last_insert_id() id; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `production_buffer_problems` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `production_buffer_problems`() +BEGIN +/** + * Necesita la tabla tmp.ticket_list + */ + DECLARE vToday DATETIME; + DECLARE vTomorrowMidnight DATETIME ; + DECLARE vWarehouse INT; + DECLARE vDate DATE; + DECLARE vAvailableCache INT; + DECLARE vVisibleCache INT; + DECLARE vDone BOOL; + + DECLARE vCursor CURSOR FOR + SELECT DISTINCT warehouse_id, DATE(Fecha) + FROM tmp.ticket_list tt + JOIN Tickets t on tt.Id_Ticket = t.Id_Ticket + AND DATE(t.Fecha) BETWEEN CURDATE() AND TIMESTAMPADD(DAY,1.9,CURDATE()); + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + DROP TEMPORARY TABLE IF EXISTS tmp.buffer_problems; + CREATE TEMPORARY TABLE tmp.buffer_problems ( + Id_Ticket INT(11), + problem VARCHAR(50), + INDEX (Id_Ticket) + ) + ENGINE = MEMORY; + + SET vToday = CURDATE(); + SET vTomorrowMidnight = TIMESTAMP(TIMESTAMPADD(DAY, 1, CURDATE()), '23:59:59'); + + OPEN vCursor; + + l: LOOP + SET vDone = FALSE; + FETCH vCursor INTO vWarehouse, vDate; + + IF vDone THEN + LEAVE l; + END IF; + + CALL cache.visible_refresh (vVisibleCache, FALSE, vWarehouse); + CALL cache.available_refresh (vAvailableCache, FALSE, vWarehouse, vDate); + + -- El disponible es menor que 0 + + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) + SELECT tt.Id_Ticket, Article + FROM tmp.ticket_list tt + JOIN Tickets t on t.Id_Ticket = tt.Id_Ticket + LEFT JOIN vn2008.Movimientos M ON M.Id_Ticket = t.Id_Ticket + JOIN vn2008.Articles A ON A.Id_Article = M.Id_Article + JOIN vn2008.Tipos tp on tp.tipo_id = A.tipo_id + LEFT JOIN cache.visible v ON A.Id_Article = v.item_id AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = A.Id_Article AND av.calc_id = vAvailableCache + WHERE date(t.Fecha) = vDate + AND reino_id NOT IN (8,6) + AND M.Cantidad > IFNULL(v.visible,0) + AND M.Cantidad > 0 + AND IFNULL(av.available,0) < 0 + AND M.OK = FALSE + AND NOT generic + AND vWarehouse = t.warehouse_id; + + -- El disponible es mayor que cero y la cantidad supera el visible, estando aun sin preparar + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) + SELECT tt.Id_Ticket, CONCAT('RETRASO (', A.Id_Article, ') ', Article) + FROM tmp.ticket_list tt + JOIN Tickets t on t.Id_Ticket = tt.Id_Ticket + LEFT JOIN vn2008.Movimientos M ON M.Id_Ticket = t.Id_Ticket + JOIN vn2008.Articles A ON A.Id_Article = M.Id_Article + JOIN vn2008.Tipos tp on tp.tipo_id = A.tipo_id + LEFT JOIN cache.visible v ON A.Id_Article = v.item_id AND v.calc_id = vVisibleCache + LEFT JOIN ( + SELECT Id_Article FROM Articles_nicho + WHERE DATE(modificationDate) = CURDATE() AND warehouse_id = vWarehouse + ) nicho ON nicho.Id_Article = A.Id_Article + LEFT JOIN cache.available av ON av.item_id = A.Id_Article AND av.calc_id = vAvailableCache + WHERE IFNULL(av.available,0) >= 0 + AND M.Cantidad > IFNULL(v.visible,0) + AND M.OK = FALSE + AND M.Reservado = FALSE + AND reino_id NOT IN (8,6) + AND date(t.Fecha) = vDate + AND NOT generic + AND CURDATE() = vDate + AND t.warehouse_id = vWarehouse + AND nicho.Id_Article IS NULL; + END LOOP; + + CLOSE vCursor; + + -- Código 100 + + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) + SELECT DISTINCT tt.Id_Ticket, 'COD 100' + FROM tmp.ticket_list tt + JOIN Movimientos m on m.Id_Ticket = tt.Id_Ticket + WHERE Id_Article = 100; + + -- Congelado + + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) + SELECT DISTINCT tt.Id_Ticket, 'CONGELADO' + FROM tmp.ticket_list tt + JOIN Tickets t on t.Id_Ticket = tt.Id_Ticket + JOIN Clientes c on c.Id_Cliente = t.Id_Cliente + WHERE c.Congelado; + + -- Riesgo + + CALL risk_vs_client_list(CURDATE()); + + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) + SELECT DISTINCT tt.Id_Ticket, 'RIESGO' + FROM tmp.ticket_list tt + JOIN Tickets t on t.Id_Ticket = tt.Id_Ticket + JOIN Agencias a on t.Id_Agencia = a.Id_Agencia + JOIN tmp.risk r on r.Id_Cliente = t.Id_Cliente + JOIN Clientes c on c.Id_Cliente = t.Id_Cliente + WHERE r.risk > c.Credito + 10 + AND Vista != 3; -- para que las recogidas se preparen + /* + -- Saldo vencido + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) + SELECT DISTINCT tt.Id_Ticket, 'SALDO VENCIDO' + FROM tmp.ticket_list tt + JOIN Tickets t on t.Id_Ticket = tt.Id_Ticket + JOIN Agencias a on t.Id_Agencia = a.Id_Agencia + JOIN bi.defaulters d ON d.client = t.Id_Cliente + WHERE d.amount > 200 AND d.date = CURDATE() + AND Vista != 3; -- para que las recogidas se preparen + */ +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `production_buffer_problemsOptimizado` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `production_buffer_problemsOptimizado`() +BEGIN +/* + * Necesita la tabla tmp.ticket_list + * + */ + DECLARE vWarehouse INT; + DECLARE vDate DATE; + DECLARE vAvailableCache INT; + DECLARE vVisibleCache INT; + DECLARE vDone INT DEFAULT 0; + + DECLARE vCursor CURSOR FOR + SELECT DISTINCT warehouse_id, date(Fecha) + FROM tmp.ticket_list tt + JOIN Tickets t on tt.Id_Ticket = t.Id_Ticket + AND DATE(t.Fecha) BETWEEN CURDATE() AND TIMESTAMPADD(DAY,1.9,CURDATE()); + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = 1; + + DROP TEMPORARY TABLE IF EXISTS tmp.buffer_problems; + CREATE TEMPORARY TABLE tmp.buffer_problems ( + Id_Ticket INT(11), + problem VARCHAR(50), + INDEX (Id_Ticket) + ) + ENGINE = MEMORY; + + + -- CONGELADO + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) + SELECT DISTINCT tt.Id_Ticket, 'CONGELADO' + FROM tmp.ticket_list tt + JOIN Clientes c on c.Id_Cliente = tt.Id_Cliente + WHERE c.Congelado; + + -- eliminamos tickets con problemas para no volverlos a mirar + DROP TEMPORARY TABLE IF EXISTS tmp.ticketListFiltered; + + CREATE TEMPORARY TABLE tmp.ticketListFiltered + (PRIMARY KEY (Id_Ticket)) + ENGINE = MEMORY + SELECT tt.Id_Ticket, c.Id_Cliente + FROM tmp.ticket_list tt + JOIN Clientes c on c.Id_Cliente = tt.Id_Cliente + WHERE c.Congelado = 0; + + -- RIESGO + CALL risk_vs_client_list(CURDATE()); + + + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) + SELECT DISTINCT tt.Id_Ticket, 'RIESGO' + FROM tmp.ticketListFiltered tt + JOIN Tickets t on t.Id_Ticket = tt.Id_Ticket + JOIN Agencias a on t.Id_Agencia = a.Id_Agencia + JOIN tmp.risk r on r.Id_Cliente = t.Id_Cliente + JOIN Clientes c on c.Id_Cliente = t.Id_Cliente + WHERE r.risk > c.Credito + 10 + AND Vista != 3; -- para que las recogidas se preparen + + -- eliminamos tickets con problemas para no volverlos a mirar + DELETE tlf FROM tmp.ticketListFiltered tlf + JOIN tmp.buffer_problems bf ON tlf.Id_Ticket = bf.Id_Ticket; + + -- CODIGO 100 + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) + SELECT DISTINCT tt.Id_Ticket, 'COD 100' + FROM tmp.ticket_list tt + JOIN Movimientos m on m.Id_Ticket = tt.Id_Ticket + WHERE Id_Article = 100; + + -- eliminamos tickets con problemas para no volverlos a mirar + DELETE tlf FROM tmp.ticketListFiltered tlf + JOIN tmp.buffer_problems bf ON tlf.Id_Ticket = bf.Id_Ticket; + + OPEN vCursor; + + WHILE NOT vDone + DO + FETCH vCursor INTO vWarehouse, vDate ; + + CALL cache.visible_refresh(vVisibleCache,FALSE,vWarehouse); + CALL cache.available_refresh(vAvailableCache,FALSE,vWarehouse,vDate); + + -- El disponible es menor que 0 + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) + SELECT tt.Id_Ticket, Article + -- CONCAT(IF( M.Cantidad < IFNULL(v.visible,0) , 'NO HAY ','FALTARÁ ' ), Article) + FROM tmp.ticket_list tt + JOIN Tickets t on t.Id_Ticket = tt.Id_Ticket + LEFT JOIN vn2008.Movimientos M ON M.Id_Ticket = t.Id_Ticket + JOIN vn2008.Articles A ON A.Id_Article = M.Id_Article + JOIN vn2008.Tipos tp on tp.tipo_id = A.tipo_id + LEFT JOIN cache.visible v ON A.Id_Article = v.item_id AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = A.Id_Article AND av.calc_id = vAvailableCache + WHERE date(t.Fecha) = vDate + AND reino_id != 6 + AND M.Cantidad > IFNULL(v.visible,0) + AND IFNULL(av.available,0) < 0 + AND M.OK = FALSE + AND NOT generic + AND vWarehouse = t.warehouse_id; + + -- eliminamos tickets con problemas para no volverlos a mirar + DELETE tlf FROM tmp.ticketListFiltered tlf + JOIN tmp.buffer_problems bf ON tlf.Id_Ticket = bf.Id_Ticket; + + -- Amarillo: El disponible es mayor que cero y la cantidad supera el visible, estando aun sin preparar + INSERT INTO tmp.buffer_problems(Id_Ticket, problem) + SELECT tt.Id_Ticket, CONCAT('RETRASO ', Article) + FROM tmp.ticket_list tt + JOIN Tickets t on t.Id_Ticket = tt.Id_Ticket + LEFT JOIN vn2008.Movimientos M ON M.Id_Ticket = t.Id_Ticket + JOIN vn2008.Articles A ON A.Id_Article = M.Id_Article + JOIN vn2008.Tipos tp on tp.tipo_id = A.tipo_id + LEFT JOIN cache.visible v ON A.Id_Article = v.item_id AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = A.Id_Article AND av.calc_id = vAvailableCache + WHERE IFNULL(av.available,0) >= 0 + AND M.Cantidad > IFNULL(v.visible,0) + AND M.OK = FALSE + AND M.Reservado = FALSE + AND reino_id != 6 + AND date(t.Fecha) = vDate + AND NOT generic + AND CURDATE() = vDate + AND t.warehouse_id = vWarehouse; + END WHILE; + + CLOSE vCursor; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `production_buffer_set_priority` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `production_buffer_set_priority`() +BEGIN + +DECLARE currentDayOfWeek INT; + +SET currentDayOfWeek = weekday(curdate()); + +-- Sin provincia ni dia de envio +UPDATE tmp.production_buffer pb +LEFT JOIN +( + SELECT agency_id + , warehouse_id + , max_hour + FROM agency_hour ah + WHERE subtract_day < 225 + AND week_day is null + AND province_id is null + +) t on t.agency_id = pb.agency_id + and t.warehouse_id = pb.warehouse_id + +SET pb.Hora = IF(pb.Hora is null or pb.Hora = 0 or pb.Hora = 24,IFNULL(t.max_hour,24), pb.Hora) + ,pb.Departure =IFNULL(t.max_hour,0); + + +-- Agencias sin provincia, machacan lo anterior si coinciden +UPDATE tmp.production_buffer pb +JOIN +( + SELECT agency_id + , warehouse_id + , shipmentDay(week_day, subtract_day) as shipmentDay + , max_hour + FROM agency_hour ah + WHERE subtract_day < 225 + AND agency_id is not null + AND week_day is not null + AND max_hour is not null + AND province_id is null + HAVING shipmentDay = currentDayOfWeek + +) t on t.agency_id = pb.agency_id + and t.warehouse_id = pb.warehouse_id + +SET pb.Hora = IF(pb.Hora is null or pb.Hora = 0 or pb.Hora = 24,t.max_hour, pb.Hora) +,pb.Departure = t.max_hour +; + + +-- Agencias con provincia, se ejecuta para machacar lo anterior, si procede. +UPDATE tmp.production_buffer pb +JOIN +( + SELECT agency_id + , warehouse_id + , shipmentDay(week_day, subtract_day) as shipmentDay + , max_hour + , province_id + FROM agency_hour ah + WHERE subtract_day < 225 + AND agency_id is not null + AND week_day is not null + AND max_hour is not null + AND province_id is not null + HAVING shipmentDay = currentDayOfWeek + +) t on t.agency_id = pb.agency_id + and t.warehouse_id = pb.warehouse_id + and t.province_id = pb.province_id + +SET pb.Hora = IF(pb.Hora is null or pb.Hora = 0 or pb.Hora = 24,t.max_hour, pb.Hora) +,pb.Departure = t.max_hour +; + +-- Pedidos del dia anterior son prioritarios +/* +UPDATE tmp.production_buffer pb +JOIN Tickets t ON t.Id_Ticket = pb.ticket +SET pb.Hora = 1 +WHERE t.Fecha < CURDATE(); +*/ +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `production_control_source` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `production_control_source`(vWarehouseId INT, vScopeDays TINYINT) +BEGIN + DECLARE vMidnight DATETIME DEFAULT TIMESTAMP(CURDATE(),'23:59:59'); + DECLARE vEndingDate DATETIME DEFAULT TIMESTAMPADD(DAY,vScopeDays,vMidnight); + DECLARE SAFE_ALERT_LEVEL INT DEFAULT 3; + + CALL prepare_ticket_list(TIMESTAMPADD(DAY,-1,CURDATE()), vEndingDate); + CALL prepare_client_list; + CALL production_buffer_problems; + + DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; + CREATE TEMPORARY TABLE tmp.production_buffer + (PRIMARY KEY(Id_Ticket)) + ENGINE = MEMORY + SELECT t.Id_Ticket + , t.Id_Cliente + , t.warehouse_id + , t.Alias + , t.Bultos + , HOUR(t.Fecha) as Hora + , HOUR(t.Fecha) as Departure + , t.Id_Ruta + , IF(a.Vista = 2,ap.zona,0) as zona + , CS.Consignatario + , CS.CODPOSTAL + , CS.POBLACION + , p.name PROVINCIA + , IF(a.Vista= 2, CONCAT('ZONA ',ap.zona), a.Agencia) Agencia + , a.agency_id + , 0 AS `lines` + , CAST( 0 AS DECIMAL(5,2)) AS m3 + , 0 AS problems + , " " as problem + , IFNULL(tls.state,2) AS state + , w.Codigotrabajador + , DATE(t.Fecha) AS Fecha + , Averiguar_ComercialCliente_IdTicket(t.Id_Ticket) AS Comercial + , p.province_id + , tls.productionOrder as state_order + , ifnull(tls.alertLevel,0) alert_level + , t.boxed as palletized + FROM tmp.ticket_list tt + JOIN Tickets t on tt.Id_Ticket = t.Id_Ticket + JOIN Consignatarios CS on CS.Id_Consigna = t.Id_Consigna + JOIN province p on p.province_id = CS.province_id + JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia + LEFT JOIN Agencias_province ap on ap.province_id = CS.province_id AND ap.warehouse_id = t.warehouse_id AND ap.agency_id = a.agency_id + LEFT JOIN vn.ticketState tls on tls.ticket = tt.Id_Ticket + LEFT JOIN Trabajadores w on w.Id_Trabajador = tls.worker + WHERE t.warehouse_id = vWarehouseId + AND a.Vista IN (1,2,3); + + + -- Líneas y volumen por ticket + + UPDATE tmp.production_buffer pb + JOIN ( + SELECT m.Id_Ticket, COUNT(Id_Movimiento) as `lines`, cast( sum( m.Cantidad * r.cm3 / 1000000 ) as decimal(10,2)) as m3 + FROM tmp.ticket_list tt + JOIN Movimientos m on tt.Id_Ticket = m.Id_Ticket + JOIN bi.rotacion r on m.Id_Article = r.Id_Article + WHERE r.warehouse_id = vWarehouseId + GROUP BY m.Id_Ticket + ) m on m.Id_Ticket = pb.Id_Ticket + SET pb.`lines` = m.`lines`, + pb.m3 = m.m3; + + DELETE FROM tmp.production_buffer + WHERE `lines`= 0; + + -- Cajas + + ALTER TABLE tmp.production_buffer + ADD Cajas DOUBLE DEFAULT NULL; + + UPDATE tmp.production_buffer pb + JOIN ( + SELECT t.Id_Ticket, sum(floor(m.Cantidad / c.Packing) * bultoCubico) as Cajas + FROM tmp.ticket_list tt + JOIN Tickets t on tt.Id_Ticket = t.Id_Ticket + JOIN Movimientos m on m.Id_Ticket = t.Id_Ticket + JOIN cache.last_buy lb on lb.warehouse_id = t.warehouse_id AND lb.item_id = m.Id_Article + JOIN Compres c on c.Id_Compra = lb.buy_id + JOIN Cubos cb on cb.Id_Cubo = c.Id_Cubo + WHERE m.Cantidad > c.Packing + GROUP BY t.Id_Ticket + HAVING Cajas >= 1 + ) sub ON sub.Id_Ticket = pb.Id_Ticket + SET pb.Cajas = sub.Cajas; + + -- Artificial, Seco y Preservado: Reino 4 + + ALTER TABLE tmp.production_buffer + ADD lineasArtificial INT DEFAULT NULL; + + UPDATE tmp.production_buffer pb + JOIN ( + SELECT tt.Id_Ticket, COUNT(m.Id_Movimiento) as Lineas + FROM tmp.ticket_list tt + JOIN Movimientos m ON m.Id_Ticket = tt.Id_Ticket + JOIN Articles a ON a.Id_Article = m.Id_Article + JOIN Tipos tp ON tp.tipo_id = a.tipo_id + JOIN reinos r ON r.id = tp.reino_id + WHERE reino = 'Artificial' + GROUP BY tt.Id_Ticket + HAVING Lineas >= 1 + ) sub ON sub.Id_Ticket = pb.Id_Ticket + SET pb.lineasArtificial = sub.Lineas; + + + -- Problemas por ticket + + UPDATE tmp.production_buffer pb + JOIN ( + SELECT Id_Ticket, COUNT(Id_Ticket) as problems, GROUP_CONCAT(problem) problem + FROM tmp.buffer_problems + GROUP BY Id_Ticket + ) p on p.Id_Ticket = pb.Id_Ticket + SET pb.problems = p.problems, + pb.problem = p.problem; + + -- Hora limite de preparación + + CALL production_buffer_set_priority; + + -- Entradas + + INSERT INTO tmp.production_buffer( + Fecha + , Id_Ticket + , Agencia + , Id_Cliente + , Consignatario + , state + , CodigoTrabajador + , m3 + , `lines` + ) + SELECT DISTINCT c.shipment AS Fecha + , c.Id_Entrada AS Id_Ticket + , warehouse.name + , c.Id_Proveedor + , c.ref AS Consignatario + , IF(BIT_OR(controlado.Id_Compra),6,IF(BIT_OR(preparado.Id_Compra),5,3)) AS state + , c.Id_Trabajador AS CodigoTrabajador + , round(sum(cm3) / 1000000,2) AS m3 + , count(c.Id_Compra) as `lines` + FROM v_compres c + INNER JOIN warehouse ON c.warehouse_id = warehouse.id + LEFT JOIN Compres_ok preparado ON c.Id_Compra = preparado.Id_Compra AND preparado.valor = 1 + LEFT JOIN Compres_ok controlado ON c.Id_Compra = controlado.Id_Compra AND controlado.valor = 2 + WHERE warehouse_id_out = vWarehouseId AND IFNULL(c.Confirmada,FALSE) = FALSE + AND c.shipment >= CURDATE() + GROUP BY Id_Entrada; + + -- Refresca la caché para el cierre dinámico de agencias + + CALL cache.departure_timing; + + -- Tickets de recogida + + REPLACE tmp.production_buffer( + Fecha + , Id_Ticket + , Agencia + , Id_Cliente + , Consignatario + , state + , CodigoTrabajador + , alert_level + , warehouse_id + ) + SELECT + DATE(t.Fecha) AS Fecha + , t.Id_Ticket + , a.Agencia + , t.Id_Cliente + , CS.Consignatario + , s.id as state + , w.Codigotrabajador + , ifnull(tls.alertLevel,0) alert_level + , vWarehouseId + FROM vn2008.Tickets t + JOIN vn2008.Consignatarios CS on CS.Id_Consigna = t.Id_Consigna + JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia + LEFT JOIN vn2008.warehouse_pickup wp ON wp.agency_id = a.Id_Agencia + LEFT JOIN vn.ticketState tls on tls.ticket = t.Id_Ticket + LEFT JOIN vn.state s ON s.id = tls.state + LEFT JOIN vn2008.Trabajadores w on w.Id_Trabajador = tls.worker + WHERE t.Fecha between TIMESTAMPADD(WEEK,-1,CURDATE()) AND dayend(TIMESTAMPADD(DAY,-1,CURDATE())) + AND wp.warehouse_id = vWarehouseId; + + -- DROP TEMPORARY TABLE tmp.ticket_list; + -- DROP TEMPORARY TABLE IF EXISTS tmp.risk; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `proveedores_extracto` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `proveedores_extracto`(IN idPROV INT, IN idMONEDA INT, IN idEMP INT) +BEGIN + + +SET @saldo_eur:= 0; +SET @saldo_div:= 0; + +SELECT + *, + @saldo_eur:= round(@saldo_eur + IFNULL(Pago_Euros, 0) - IFNULL(Fac_Euros, 0) ,2 ) AS saldo_eur, + @saldo_div:= round(@saldo_div + IFNULL(Pago_Divisas, 0) - IFNULL(Fac_Divisas, 0) ,2 ) AS saldo_div +FROM + (SELECT + * + FROM + (SELECT + 'R', + NULL as banco_id, + r.empresa_id, + r.serie, + r.id, + r.fecha, + CONCAT('S/Fra ', r.sref) sref, + if(r.moneda_id > 1,round(sum(divisa) / sum(cantidad),3),NULL) val_cambio, + CAST(sum(cantidad) as DECIMAL(10,2)) as Fac_Euros, + CAST(sum(divisa) as DECIMAL(10,2)) as Fac_Divisas, + NULL AS Pago_Euros, + NULL AS Pago_Divisas, + r.moneda_id, + r.contabilizada, + Moneda, + NULL as pago_sdc_id + FROM + recibida r + JOIN recibida_vencimiento rv on rv.recibida_id = r.id + JOIN Monedas m on m.Id_Moneda = r.moneda_id + WHERE + r.fecha > '2014-12-31' + AND r.proveedor_id = idPROV + AND idMONEDA IN (r.moneda_id, 0) + AND idEMP IN (r.empresa_id,0) + GROUP BY r.id + + + + UNION ALL SELECT + + 'P', + p.id_banco, + p.empresa_id, + NULL, + p.id, + Fecha, + CONCAT(IFNULL(name, ''), IF(pre.concepto <> '', CONCAT(' : ', pre.concepto), '')), + if(p.id_moneda > 1, p.divisa / importe, NULL) tip_cambio, + NULL, + NULL, + p.importe, + p.divisa, + p.id_moneda, + IFNULL(conciliado, 0), + Moneda, + pago_sdc_id + FROM + pago p + LEFT JOIN Monedas ON Monedas.Id_Moneda = p.id_moneda + LEFT JOIN Bancos ON p.id_banco = Bancos.Id_banco + LEFT JOIN pay_met pm ON p.pay_met_id = pm.id + LEFT JOIN Pagares pre ON pre.pago_id = p.id + WHERE + Fecha > '2014-12-31' + AND p.Id_Proveedor = idPROV + AND idMONEDA IN (p.id_moneda,0) + AND idEMP IN (p.empresa_id,0) + ) AS SUB + ORDER BY fecha) t; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `proveedores_extracto_vtos` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `proveedores_extracto_vtos`(IN idPROV INT, IN idMONEDA INT, IN idEMP INT) +BEGIN + + +SET @saldo_eur:= 0; +SET @saldo_div:= 0; + +SELECT + *, + @saldo_eur:= round(@saldo_eur + IFNULL(Pago_Euros, 0) - IFNULL(Fac_Euros, 0) ,2 ) AS saldo_eur, + @saldo_div:= round(@saldo_div + IFNULL(Pago_Divisas, 0) - IFNULL(Fac_Divisas, 0) ,2 ) AS saldo_div +FROM + (SELECT + * + FROM + (SELECT + 'V', + NULL as banco_id, + r.empresa_id, + r.serie, + r.id, + rv.fecha, + CONCAT('S/Fra ', r.sref) sref, + if(r.moneda_id > 1,round(sum(divisa) / sum(cantidad),3),NULL) val_cambio, + CAST(sum(cantidad) as DECIMAL(10,2)) as Fac_Euros, + CAST(sum(divisa) as DECIMAL(10,2)) as Fac_Divisas, + NULL AS Pago_Euros, + NULL AS Pago_Divisas, + r.moneda_id, + r.contabilizada, + Moneda, + NULL as pago_sdc_id + FROM + recibida r + JOIN recibida_vencimiento rv on rv.recibida_id = r.id + JOIN Monedas m on m.Id_Moneda = r.moneda_id + WHERE + r.fecha > '2014-12-31' + AND r.proveedor_id = idPROV + AND idMONEDA IN (r.moneda_id, 0) + AND idEMP IN (r.empresa_id,0) + GROUP BY rv.id + + + + UNION ALL SELECT + + 'P', + p.id_banco, + p.empresa_id, + NULL, + p.id, + Fecha, + CONCAT(IFNULL(name, ''), IF(pre.concepto <> '', CONCAT(' : ', pre.concepto), '')), + if(p.id_moneda > 1, p.divisa / importe, NULL) tip_cambio, + NULL, + NULL, + p.importe, + p.divisa, + p.id_moneda, + IFNULL(conciliado, 0), + Moneda, + pago_sdc_id + FROM + pago p + LEFT JOIN Monedas ON Monedas.Id_Moneda = p.id_moneda + LEFT JOIN Bancos ON p.id_banco = Bancos.Id_banco + LEFT JOIN pay_met pm ON p.pay_met_id = pm.id + LEFT JOIN Pagares pre ON pre.pago_id = p.id + WHERE + Fecha > '2014-12-31' + AND p.Id_Proveedor = idPROV + AND idMONEDA IN (p.id_moneda,0) + AND idEMP IN (p.empresa_id,0) + ) AS SUB + ORDER BY fecha, id) t; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `proveedores_saldo` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `proveedores_saldo`(IN datFEC DATE) +BEGIN + +SET datFEC = IF(datfec < CURDATE(), CURDATE(), datfec); + +SELECT P.Id_Proveedor + , P.Proveedor + , P.empresa_id + , P.pay_met_id + , P.cuenta + , RED(IFNULL(sub_tot.Saldo,0) + IFNULL(sub_fut.Saldo,0) + IFNULL(sub_hoy.Saldo,0)) Total + , RED(IFNULL(sub_hoy.Saldo,0) + IFNULL(sub_fut.Saldo,0)) Inmediato + , RED(IFNULL(sub_hoy.Saldo,0)) Vencido +FROM +(SELECT Id_Proveedor, Proveedor, id as empresa_id, pay_met_id, P.cuenta FROM Proveedores P INNER JOIN empresa) P + +LEFT JOIN +( +SELECT Id_Proveedor, empresa_id, SUM(Sald) as Saldo +FROM +( +SELECT RV.Fecha, SUM(-1* ROUND(IFNULL(cantidad,0) / IF(p.cuenta LIKE '___4______',rr.rate,1),2)) as Sald, proveedor_id as Id_Proveedor, empresa_id +FROM recibida_vencimiento RV +INNER JOIN recibida R ON RV.recibida_id = R.id +INNER JOIN Proveedores p ON p.Id_Proveedor = R.proveedor_id +INNER JOIN reference_rate rr ON rr.date=R.fecha +WHERE RV.fecha > datFEC + AND R.contabilizada +GROUP BY proveedor_id, empresa_id +UNION ALL +SELECT fecha, red(SUM(IFNULL(importe,0))), id_proveedor, empresa_id +FROM pago +WHERE fecha > datFEC +GROUP BY id_proveedor, empresa_id +) sub +GROUP BY Id_Proveedor, empresa_id +) sub_tot USING(Id_Proveedor, empresa_id) + +-- Saldo inmediato + +LEFT JOIN +( +SELECT Id_Proveedor, empresa_id, SUM(Sald) as Saldo +FROM +( +SELECT RV.Fecha, SUM(-1* ROUND(IFNULL(cantidad,0)/ IF(p.cuenta LIKE '___4______',rr.rate,1),2)) as Sald, proveedor_id as Id_Proveedor, empresa_id +FROM recibida_vencimiento RV +INNER JOIN recibida R ON RV.recibida_id = R.id +INNER JOIN Proveedores p ON p.Id_Proveedor = R.proveedor_id +INNER JOIN reference_rate rr ON rr.date = R.fecha +WHERE RV.fecha BETWEEN CURDATE() AND datFEC +AND R.contabilizada +GROUP BY proveedor_id, empresa_id +UNION ALL +SELECT fecha, ROUND(SUM(IFNULL(importe,0)),2), id_proveedor, empresa_id +FROM pago +WHERE fecha BETWEEN CURDATE() AND datFEC +GROUP BY id_proveedor, empresa_id +) sub3 +GROUP BY Id_Proveedor, empresa_id +) sub_fut USING(Id_Proveedor, empresa_id) + + + +LEFT JOIN +( +SELECT Id_Proveedor, empresa_id, SUM(Sald) as Saldo +FROM +( +SELECT RV.Fecha, SUM(-1* ROUND(IFNULL(cantidad,0)/ IF(p.cuenta LIKE '___4______',rr.rate,1),2)) as Sald, proveedor_id as Id_Proveedor, empresa_id +FROM recibida_vencimiento RV +INNER JOIN recibida R ON RV.recibida_id = R.id +INNER JOIN Proveedores p ON p.Id_Proveedor = R.proveedor_id +INNER JOIN reference_rate rr ON rr.date = R.fecha +WHERE RV.fecha > '2014-12-31' AND RV.fecha < CURDATE() +AND R.contabilizada +GROUP BY proveedor_id, empresa_id +UNION ALL +SELECT fecha, red(SUM(IFNULL(importe,0))), id_proveedor, empresa_id +FROM pago +WHERE fecha > '2014-12-31' AND fecha < CURDATE() +GROUP BY id_proveedor, empresa_id +) sub5 +GROUP BY Id_Proveedor, empresa_id +) sub_hoy USING(Id_Proveedor, empresa_id) +WHERE abs(sub_tot.Saldo) >0.2 + OR ABS(sub_fut.Saldo) >0.2 + OR ABS(sub_hoy.Saldo) >0.2 +; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `proveedores_saldos` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `proveedores_saldos`() +BEGIN + + DECLARE startingDate DATETIME DEFAULT TIMESTAMPADD(MONTH,-3,CURDATE()); + + DROP TEMPORARY TABLE IF EXISTS saldos_iniciales; + + CREATE TEMPORARY TABLE saldos_iniciales + + (proveedor_id INT NOT NULL + , empresa_id INT NOT NULL + , saldo_inicial double NOT NULL + , saldo_final DOUBLE NOT NULL + , moneda_id INT NOT NULL + , PRIMARY KEY(proveedor_id, empresa_id, moneda_id)) + ENGINE = MEMORY; + + -- Calcula el saldo inicial y final de cada proveedor + INSERT INTO saldos_iniciales + SELECT id_proveedor, empresa_id, sum(importe * isBeforeStarting) as saldo_inicial,sum(importe) saldo_final, moneda_id + FROM ( + SELECT + p.id_proveedor, + p.empresa_id, + if(p.id_moneda = 1, p.importe, p.divisa) as importe, + if( p.fecha < startingDate,1,0) isBeforeStarting, + p.id_moneda moneda_id + FROM pago p + WHERE p.fecha > '2014-12-31' + AND p.empresa_id = 442 + AND p.id_proveedor <> 567 + + UNION ALL + + SELECT + r.proveedor_id, + r.empresa_id, + - if(r.moneda_id = 1, rv.cantidad, rv.divisa) AS Total, + if(rv.fecha < startingDate,1,0) isBeforeStarting, + r.moneda_id + FROM + recibida r + INNER JOIN recibida_vencimiento rv ON r.id = rv.recibida_id + WHERE r.fecha > '2014-12-31' + AND r.contabilizada AND r.empresa_id = 442 + AND r.proveedor_id <> 567 + ) sub + GROUP BY empresa_id, id_proveedor, moneda_id; + + DROP TEMPORARY TABLE IF EXISTS vencimientos_pendientes; + + CREATE TEMPORARY TABLE vencimientos_pendientes + (vencimiento_id INT, id INT auto_increment + ,fecha DATE + ,proveedor_id INT NOT NULL + ,empresa_id INT NOT NULL + ,importe DECIMAL(10,2) NOT NULL + ,moneda_id INT NOT NULL + ,pendiente DECIMAL(10,2) DEFAULT 0 + ,saldo DECIMAL(10,2) DEFAULT 0 + ,saldoFinal DECIMAL(10,2) DEFAULT 0 + ,isPago BOOLEAN + ,conciliado BOOLEAN + ,PRIMARY KEY(id), + INDEX(proveedor_id,empresa_id,moneda_id)) + ENGINE = MEMORY; + + INSERT INTO vencimientos_pendientes(vencimiento_id + , fecha + , proveedor_id + , empresa_id + , importe + , moneda_id + , isPago + , conciliado) + SELECT p.id, + p.fecha, + p.id_proveedor, + p.empresa_id, + if(p.id_moneda = 1, p.importe, p.divisa) as importe, + p.id_moneda, + TRUE isPago, + p.conciliado + FROM pago p + WHERE p.fecha >= startingDate AND p.empresa_id = 442 + AND p.id_proveedor <> 567 + UNION ALL + SELECT rv.id + , rv.fecha + , r.proveedor_id + , r.empresa_id + , -if(r.moneda_id = 1, rv.cantidad, rv.divisa) as importe + , r.moneda_id + , FALSE + , TRUE + FROM recibida r + LEFT JOIN saldos_iniciales si ON r.empresa_id = si.empresa_id AND r.proveedor_id = si.proveedor_id AND r.moneda_id = si.moneda_id + INNER JOIN recibida_vencimiento rv ON r.id = rv.recibida_id + WHERE rv.fecha >= startingDate AND IFNULL(saldo_final,TRUE) <> 0 + and r.contabilizada AND r.empresa_id = 442 + AND r.proveedor_id <> 567 + ORDER BY id_proveedor, empresa_id, id_moneda, fecha, isPago DESC,id; + + -- Ahora, calculamos el importe pendiente para cada recibo en orden descendente + SET @saldo:= 0.0; + SET @prov := 0.0; + SET @emp := 0.0; + set @moneda := 0.0; + SET @pendiente := 0.0; + SET @day := CURDATE(); + + UPDATE vencimientos_pendientes vp LEFT JOIN saldos_iniciales si ON + vp.empresa_id = si.empresa_id AND vp.proveedor_id = si.proveedor_id AND vp.moneda_id = si.moneda_id + SET vp.saldo = @saldo:= (IF(@emp <> vp.empresa_id OR @prov <> vp.proveedor_id OR @moneda <> vp.moneda_id, IFNULL(si.saldo_inicial,0),@saldo) + vp.importe) -- si hay cambio de empresa o proveedor o moneda, el saldo se reinicia + , vp.pendiente = @pendiente:= IF(@emp <> vp.empresa_id OR @prov <> vp.proveedor_id OR @moneda <> vp.moneda_id OR @day <> vp.fecha, vp.importe * (NOT isPago) , @pendiente + vp.importe) + , vp.empresa_id = @emp:= vp.empresa_id + , vp.proveedor_id = @prov:= vp.proveedor_id + , vp.moneda_id = @moneda:= vp.moneda_id + , vp.fecha = @day:= vp.fecha + , vp.saldo = @saldo + , vp.pendiente = @pendiente; + + CREATE TEMPORARY TABLE rowsToDelete + ENGINE = MEMORY + SELECT fecha,proveedor_id,empresa_id,moneda_id + FROM vencimientos_pendientes + WHERE saldo < 0.5 AND saldo > -0.5; + + DELETE vp.* FROM vencimientos_pendientes vp JOIN rowsToDelete rd + ON vp.fecha <= rd.fecha AND vp.proveedor_id = rd.proveedor_id AND vp.empresa_id = rd.empresa_id AND vp.moneda_id = rd.moneda_id + WHERE isPago = FALSE; + + SELECT vp.vencimiento_id + , vp.fecha + , vp.proveedor_id + , vp.empresa_id + , vp.moneda_id + , vp.importe + , vp.pendiente + , vp.saldo + , p.pay_met_id + , vp.isPago + , vp.conciliado + , vp.saldoFinal + FROM vencimientos_pendientes vp + LEFT JOIN Proveedores p ON p.Id_Proveedor = vp.proveedor_id; + + DROP TEMPORARY TABLE vencimientos_pendientes; + DROP TEMPORARY TABLE saldos_iniciales; + DROP TEMPORARY TABLE rowsToDelete; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `proveedores_saldoskk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `proveedores_saldoskk`() +BEGIN + + + +DROP TEMPORARY TABLE IF EXISTS proveedores_pendientes; + +CREATE TEMPORARY TABLE proveedores_pendientes +( proveedor_id INT NOT NULL +, empresa_id INT NOT NULL +, saldo double NOT NULL +, moneda_id INT NOT NULL +, PRIMARY KEY(proveedor_id, empresa_id, moneda_id)); + +INSERT INTO proveedores_pendientes +SELECT id_proveedor, empresa_id, sum(importe) as saldo, id_moneda as moneda_id + FROM + ( + SELECT + p.id_proveedor, + p.empresa_id, + - if(p.id_moneda = 1, p.importe, p.divisa) as importe, + p.id_moneda + + FROM + pago p + + WHERE + + p.fecha > '2014-12-31' + + UNION ALL + + SELECT + r.proveedor_id, + r.empresa_id, + if(r.moneda_id = 1, rv.cantidad, rv.divisa) AS Total, + r.moneda_id + + FROM + recibida r + INNER JOIN recibida_vencimiento rv ON r.id = rv.recibida_id + WHERE r.fecha > '2014-12-31' AND r.contabilizada + ) sub + GROUP BY empresa_id, id_proveedor, moneda_id + having saldo > 0; + + + + DROP TEMPORARY TABLE IF EXISTS vencimientos_pendientes_aux; + + CREATE TEMPORARY TABLE vencimientos_pendientes_aux + (vencimiento_id INT, id INT auto_increment + ,fecha DATE + ,proveedor_id INT NOT NULL + ,empresa_id INT NOT NULL + ,importe double NOT NULL + ,moneda_id INT NOT NULL + ,pendiente DOUBLE DEFAULT 0 + ,PRIMARY KEY(id)); + + SET @imp:= 0; + + INSERT INTO vencimientos_pendientes_aux(vencimiento_id + , fecha + , proveedor_id + , empresa_id + , importe + , moneda_id + , pendiente) + + + + SELECT rv.id + , rv.fecha + , r.proveedor_id + , r.empresa_id + , @imp:= if(r.moneda_id = 1, rv.cantidad, rv.divisa) as importe + , r.moneda_id + , pp.saldo + FROM recibida r + INNER JOIN recibida_vencimiento rv ON r.id = rv.recibida_id + JOIN proveedores_pendientes pp ON pp.proveedor_id = r.proveedor_id AND pp.empresa_id = r.empresa_id AND pp.moneda_id = r.moneda_id + WHERE r.fecha > '2010-12-31' + and rv.fecha > TIMESTAMPADD(MONTH,-3,CURDATE()) + and r.contabilizada; + + + DROP TEMPORARY TABLE IF EXISTS vencimientos_pendientes; + + CREATE TEMPORARY TABLE vencimientos_pendientes + (vencimiento_id INT, id INT , id2 INT auto_increment + ,fecha DATE + ,proveedor_id INT NOT NULL + ,empresa_id INT NOT NULL + ,importe double NOT NULL + ,moneda_id INT NOT NULL + ,pendiente DOUBLE DEFAULT 0 + ,saldo DOUBLE + ,PRIMARY KEY(id2)); + + + + INSERT INTO vencimientos_pendientes(vencimiento_id + , id + , fecha + , proveedor_id + , empresa_id + , importe + , moneda_id + , pendiente + , saldo) + + + + SELECT vencimiento_id, id, fecha, proveedor_id, empresa_id, importe, moneda_id, 0, pp.saldo + FROM vencimientos_pendientes_aux vp + JOIN proveedores_pendientes pp USING(proveedor_id, empresa_id, moneda_id) + ORDER BY proveedor_id, empresa_id, moneda_id, fecha DESC, importe; + + DROP TEMPORARY TABLE vencimientos_pendientes_aux; + + + -- Ahora, al fin, calculamos el importe pendiente para cada recibo en orden descendente + + -- Cogemos los valores del primer registro como semilla + SELECT proveedor_id, empresa_id, saldo, moneda_id, 0 + INTO @prov, @emp, @saldo, @moneda, @pend + FROM vencimientos_pendientes WHERE id2 = 1; + + + UPDATE vencimientos_pendientes + SET saldo = @saldo:= IF(@emp <> empresa_id OR @prov <>proveedor_id OR @moneda <> moneda_id,saldo,@saldo) -- si hay cambio de empresa o proveedor o moneda, el saldo se reinicia + , pendiente = @pend:= IF(saldo >= importe AND saldo > 0, importe, saldo) + , saldo = @saldo:= @saldo - @pend + , empresa_id = @emp:= empresa_id + , proveedor_id = @prov:= proveedor_id + , moneda_id = @moneda:= moneda_id; + + SELECT vp.vencimiento_id + , vp.fecha + , vp.proveedor_id + , vp.empresa_id + , vp.moneda_id + , vp.importe + , vp.pendiente + , pp.saldo + FROM vencimientos_pendientes vp + JOIN proveedores_pendientes pp USING(proveedor_id, empresa_id, moneda_id) + WHERE pendiente > 0; + + DROP TEMPORARY TABLE vencimientos_pendientes; + DROP TEMPORARY TABLE proveedores_pendientes; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `prueba_miguel` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `prueba_miguel`() +BEGIN +select 1; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `quadre_clientes` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `quadre_clientes`(IN datFEC DATETIME) +BEGIN + + + DECLARE datSTART DATE; + SET datFEC = TIMESTAMP(datFEC,'23:59:59'); + SELECT FIRSTDAYOFYEAR(datFEC) INTO datSTART; + + SELECT P2.Alias, C.Id_Cliente, C.Cuenta, Gestion, Contaplus, Gestion - Contaplus as Diferencia, empresa_id, Cliente + + FROM Clientes C + + JOIN pay_met pm ON pm.id = C.pay_met_id + + JOIN + + ( + + SELECT empresa_id, Id_Cliente, round(sum(Gestion),2) as Gestion, round(sum(Contaplus),2) as Contaplus + + FROM + + ( + SELECT empresa_id, Id_Cliente, Gestion, 0 as Contaplus + + FROM + + ( + SELECT empresa_id, Id_Cliente, -1 * Importe as Gestion + FROM Facturas + WHERE Fecha BETWEEN datSTART AND datFEC + UNION ALL + SELECT empresa_id, Id_Cliente, Entregado + FROM Recibos + WHERE Fechacobro BETWEEN datSTART AND datFEC + ) G + + WHERE empresa_id <> 965 + + UNION ALL + + SELECT empresa_id, Id_Cliente, 0, round(nz(Eurohaber) - nz(Eurodebe),2) as Contaplus + + FROM bi.XDiario_ALL XD + + JOIN Clientes C ON C.Cuenta = XD.SUBCTA + + WHERE Fecha BETWEEN datSTART AND datFEC + + ) sub1 + + GROUP BY empresa_id, Id_Cliente + + ) sub2 USING(Id_Cliente) + + JOIN Proveedores P2 ON P2.Id_Proveedor = sub2.empresa_id + + WHERE pm.deudaviva -- Cliente de perdidas no vale la pena revisarlo + + HAVING ABS(Diferencia) > 0.05 + + ORDER BY Cliente; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `quadre_clientes_detalle` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `quadre_clientes_detalle`(IN idC INT, IN idE INT, IN datFEC DATETIME) +BEGIN + +DECLARE datSTART DATE; + +SET datSTART = FIRSTDAYOFYEAR(datFEC); +SET datFEC = TIMESTAMP(datFEC,'23:59:59'); + +-- Creamos una tabla para almacenar las facturas del cliente, junto con el numero de veces que se repite. +DROP TEMPORARY TABLE IF EXISTS qFACTURAS; + +CREATE TEMPORARY TABLE qFACTURAS +(Fecha DATETIME, + TPVcount INT, + Factura DECIMAL(10,2) SIGNED, + Recibo DECIMAL(10,2) SIGNED, + CPcount INT, + Debe DECIMAL(10,2) SIGNED, + Haber DECIMAL(10,2) SIGNED, + Control INT DEFAULT 0, + PRIMARY KEY(Fecha, TPVcount, Factura, Recibo, CPcount, Debe, Haber)) + ENGINE = InnoDB +; + +-- Insertamos las facturas y los recibos de gestion. +INSERT INTO qFACTURAS + + SELECT Fecha, COUNT(*) as TPVcount, round(Importe,2) as Factura, 0 as Recibo, COUNT(*)as CPcount,round(Importe,2) as Debe, 0 as Haber, 1 as Control + FROM Facturas + WHERE Id_Cliente = idC AND empresa_id = idE AND Fecha BETWEEN datSTART AND datFEC + GROUP BY Fecha, round(Importe,2) + UNION ALL + SELECT Fechacobro as Fecha, COUNT(*) as TPVcount, 0 as Factura, round(Entregado,2) as Recibo,COUNT(*) as CPCount, 0 as Debe, round(Entregado,2) as Haber, 3 as Control + FROM Recibos + WHERE Id_Cliente = idC AND empresa_id = idE AND Fechacobro BETWEEN datSTART AND datFEC + GROUP BY Fechacobro, round(Entregado,2); + +-- Insertamos los asientos de contabilidad, marcando con control = -1 las repetidas. +INSERT INTO qFACTURAS + SELECT * + FROM ( + SELECT Fecha, COUNT(*) as TPVcount, round(Eurodebe,2) as Factura, round(Eurohaber,2) as Recibo, COUNT(*) as CPcount, round(Eurodebe,2) as Debe, round(Eurohaber,2) as Haber, 2 as Control + FROM bi.XDiario_ALL XD + JOIN Clientes C ON C.Cuenta = XD.SUBCTA + WHERE Id_Cliente = idC AND empresa_id = idE AND Fecha BETWEEN datSTART AND datFEC + AND (Eurodebe <> 0 OR Eurohaber <>0) + GROUP BY Fecha, round(Eurodebe,2), round(Eurohaber,2) + ) sub + + ON DUPLICATE KEY UPDATE Control = -1; + + + +-- Eliminamos las repetidas +-- DELETE FROM qFACTURAS WHERE Control = -1; + +-- Arreglamos las buenas +UPDATE qFACTURAS SET TPVcount = 0, Factura = 0, Recibo = 0 WHERE Control = 2; +UPDATE qFACTURAS SET CPcount = 0, Debe = 0, Haber = 0 WHERE Control IN (1,3); + +-- Mostramos el resultado +SELECT *, @saldo := @saldo + TPVcount * (Factura + Recibo) - CPCount * ( Debe + Haber ) as Saldo +FROM qFACTURAS +JOIN (SELECT @saldo := 0) truqui ; +DROP TEMPORARY TABLE IF EXISTS qFACTURAS; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `quadre_proveedores` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `quadre_proveedores`(IN datFEC DATETIME) +BEGIN + + DECLARE datSTART DATE; + SET datFEC = TIMESTAMP(datFEC,'23:59:59'); + + SELECT FIRSTDAYOFYEAR(datFEC) INTO datSTART; + + SELECT P2.Alias, P.Id_Proveedor, P.Cuenta, Gestion, Contaplus, Gestion - Contaplus as Diferencia, empresa_id, P.Proveedor + + FROM Proveedores P + + JOIN + + ( + + SELECT empresa_id, Id_Proveedor, round(sum(Gestion),2) as Gestion, round(sum(Contaplus),2) as Contaplus + + FROM + + ( + SELECT empresa_id, proveedor_id as Id_Proveedor, Gestion, 0 as Contaplus + + FROM + + ( + SELECT empresa_id, proveedor_id, -1 * sum(cantidad) as Gestion + FROM recibida_vencimiento rv + INNER JOIN recibida r ON r.id = rv.recibida_id + WHERE IFNULL(r.dateBooking,r.fecha) BETWEEN datSTART AND datFEC + AND r.contabilizada + GROUP BY r.id + + UNION ALL + + SELECT empresa_id, id_proveedor, importe + FROM pago + WHERE Fecha BETWEEN datSTART AND datFEC + AND conciliado + AND pay_met_id <> 18 -- Saldos iniciales + ) G + + UNION ALL + + SELECT empresa_id, Id_Proveedor, 0, round(nz(Eurodebe) - nz(Eurohaber),2) as Contaplus + + FROM bi.XDiario_ALL XD + + JOIN Proveedores P ON P.cuenta = XD.SUBCTA + + WHERE Fecha BETWEEN datSTART AND datFEC + + + ) sub1 + + + GROUP BY empresa_id, Id_Proveedor + + ) sub2 USING(Id_Proveedor) + + JOIN Proveedores P2 ON P2.Id_Proveedor = sub2.empresa_id + + HAVING ABS(Diferencia) > 0.05 + + ORDER BY P.Proveedor; + + + + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `quadre_proveedores_detalle` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `quadre_proveedores_detalle`(IN idP INT, IN idE INT, IN datFEC DATETIME) +BEGIN + +DECLARE datSTART DATE; +SET datFEC = TIMESTAMP(datFEC,'23:59:59'); + +SET datSTART = FIRSTDAYOFYEAR(datFEC); + +-- Creamos una tabla para almacenar las facturas del proveedor, junto con el numero de veces que se repite. +DROP TEMPORARY TABLE IF EXISTS qFACTURAS; + +CREATE TEMPORARY TABLE qFACTURAS +(Fecha DATE, + TPVcount INT, + Factura DECIMAL(10,2) SIGNED, + Recibo DECIMAL(10,2) SIGNED, + CPcount INT, + Debe DECIMAL(10,2) SIGNED, + Haber DECIMAL(10,2) SIGNED, + Control INT DEFAULT 0, + PRIMARY KEY(Fecha, TPVcount, Factura, Recibo, CPcount, Debe, Haber)) + ENGINE = InnoDB +; + +-- Insertamos las facturas y los pagos de gestion. +INSERT INTO qFACTURAS + + SELECT Fecha, COUNT(*) as TPVcount, round(Importe,2) as Factura + , 0 as Recibo, COUNT(*)as CPcount,round(Importe,2) as Debe, 0 as Haber, 1 as Control + FROM (SELECT IFNULL(r.dateBooking,r.Fecha) as Fecha, sum(rv.cantidad) as Importe + FROM recibida_vencimiento rv + JOIN recibida r ON r.id = rv.recibida_id + WHERE proveedor_id = idP + AND empresa_id = idE + AND IFNULL(r.dateBooking,r.Fecha) BETWEEN datSTART AND datFEC + AND (r.contabilizada OR r.dateBooking) + GROUP BY r.id) F + GROUP BY Fecha, round(Importe,2) + UNION ALL + SELECT Fecha, COUNT(*) as TPVcount, 0 as Factura, round(importe,2) as Recibo,COUNT(*) as CPCount, 0 as Debe, round(importe,2) as Haber, 3 as Control + FROM pago + WHERE Id_Proveedor = idP AND empresa_id = idE AND Fecha BETWEEN datSTART AND datFEC + AND conciliado + GROUP BY Fecha, round(importe,2); + +-- Insertamos los asientos de contabilidad, marcando con control = -1 las repetidas +INSERT INTO qFACTURAS + SELECT * + FROM ( + SELECT Fecha, COUNT(*) as TPVcount, round(Eurohaber,2) as Factura, round(Eurodebe,2) as Recibo, COUNT(*) as CPcount, round(Eurohaber,2) as Debe, round(Eurodebe,2) as Haber, 2 as Control + FROM bi.XDiario_ALL XD + JOIN Proveedores P ON P.cuenta = XD.SUBCTA + WHERE Id_Proveedor = idP AND empresa_id = idE AND Fecha BETWEEN datSTART AND datFEC + AND (Eurodebe <> 0 OR Eurohaber <>0) + GROUP BY Fecha, round(Eurohaber,2), round(Eurodebe,2) + ) sub + + ON DUPLICATE KEY UPDATE Control = -1; + + + +-- Eliminamos las repetidas +DELETE FROM qFACTURAS WHERE Control = -1; + +-- Arreglamos las buenas +UPDATE qFACTURAS SET TPVcount = 0, Factura = 0, Recibo = 0 WHERE Control = 2; +UPDATE qFACTURAS SET CPcount = 0, Debe = 0, Haber = 0 WHERE Control IN (1,3); + +-- Mostramos el resultado +SELECT *, @saldo := @saldo + TPVcount * (Factura + Recibo) - CPcount * (Debe + Haber) as Saldo +FROM qFACTURAS +JOIN (SELECT @saldo := 0) truqui ; + +DROP TEMPORARY TABLE IF EXISTS qFACTURAS; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `quadre_proveedores_test` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `quadre_proveedores_test`(IN datFEC DATETIME) +BEGIN + + DECLARE datSTART DATE; + SET datFEC = TIMESTAMP(datFEC,'23:59:59'); + + SELECT FIRSTDAYOFYEAR(datFEC) INTO datSTART; + + SELECT P2.Alias, P.Id_Proveedor, P.Cuenta, Gestion, Contaplus, Gestion - Contaplus as Diferencia, empresa_id, P.Proveedor + + FROM Proveedores P + + JOIN + + ( + + SELECT empresa_id, Id_Proveedor, round(sum(Gestion),2) as Gestion, round(sum(Contaplus),2) as Contaplus + + FROM + + ( + SELECT empresa_id, proveedor_id as Id_Proveedor, Gestion, 0 as Contaplus + + FROM + + ( + SELECT empresa_id, proveedor_id, -1 * sum(cantidad) as Gestion + FROM recibida_vencimiento rv + INNER JOIN recibida r ON r.id = rv.recibida_id + WHERE r.Fecha BETWEEN datSTART AND datFEC + AND r.contabilizada + GROUP BY r.id + + UNION ALL + + SELECT empresa_id, id_proveedor, importe + FROM pago + WHERE Fecha BETWEEN datSTART AND datFEC + AND conciliado + AND pay_met_id <> 18 -- Saldos iniciales + ) G + + UNION ALL + + SELECT empresa_id, Id_Proveedor, 0, round(nz(Eurodebe) - nz(Eurohaber),2) as Contaplus + + FROM bi.XDiario_ALL XD + + JOIN Proveedores P ON P.cuenta = XD.SUBCTA + + WHERE Fecha BETWEEN datSTART AND datFEC + + + ) sub1 + + + GROUP BY empresa_id, Id_Proveedor + + ) sub2 USING(Id_Proveedor) + + JOIN Proveedores P2 ON P2.Id_Proveedor = sub2.empresa_id + + HAVING ABS(Diferencia) > 0.05 + + ORDER BY P.Proveedor; + + + + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `radar` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `radar`(IN today DATETIME, IN worker INTEGER, IN scopeDays SMALLINT) +BEGIN + + DECLARE todayMidnight DATE DEFAULT TIMESTAMP(today,'23:59:59'); + DECLARE yesterday DATETIME; + DECLARE maxDate DATETIME; + DECLARE datBUF DATETIME; + DECLARE warehouse INTEGER; + DECLARE done BIT DEFAULT 0; + DECLARE visible_calc INTEGER; + DECLARE available_calc INTEGER; + DECLARE dateStart DATE; + + SET dateStart = TIMESTAMPADD(MONTH, -2, CURDATE()); + SELECT TIMESTAMPADD(DAY, -1, today) INTO yesterday; + -- lo quitamos despues de campañaA + SELECT TIMESTAMP(TIMESTAMPADD(DAY, scopeDays, yesterday),'23:59:59') INTO maxDate; + -- SELECT TIMESTAMP(TIMESTAMPADD(DAY, 14, yesterday),'23:59:59') INTO maxDate; + -- Creamos una tabla con los Comerciales de los que se mostraran los tickets + CALL subordinate(worker,TRUE); + + -- Se genera una tabla con los tickets representados + DROP TEMPORARY TABLE IF EXISTS ticketRange; + + CREATE TEMPORARY TABLE ticketRange + SELECT T.Id_Ticket, T.Id_Cliente, C.Id_Trabajador + FROM Tickets T + LEFT JOIN vn.ticketState tls on tls.ticket = T.Id_Ticket + INNER JOIN Clientes C on C.Id_Cliente = T.Id_Cliente + INNER JOIN subordinate s1 ON C.Id_Trabajador = s1.Id_Trabajador + WHERE Fecha >= yesterday + AND Fecha <= maxDate AND T.Factura Is NULL + AND IFNULL(tls.alertLevel,0) < 3 + + UNION DISTINCT + + SELECT Id_Ticket, s.Id_Cliente, s.Id_Trabajador + FROM sharingclient s + INNER JOIN Tickets T USING(Id_Cliente) + LEFT JOIN vn.ticketState tls on tls.ticket = T.Id_Ticket + INNER JOIN subordinate s2 ON s.Id_Trabajador = s2.Id_Trabajador + WHERE maxDate >= datSTART + AND datEND >= yesterday + AND date(Fecha) >= IF(yesterday > datSTART, yesterday, datSTART) + AND date(Fecha) <= IF(datEND > maxDate, maxDate, datEND) + AND IFNULL(tls.alertLevel,0) < 3 + + UNION DISTINCT + + SELECT Id_Ticket, C.Id_Cliente, s.Id_Suplente + FROM Clientes C + INNER JOIN Tickets T USING(Id_Cliente) + LEFT JOIN vn.ticketState tls on tls.ticket = T.Id_Ticket + INNER JOIN sharingcart s ON s.Id_Trabajador = C.Id_Trabajador + INNER JOIN subordinate su on su.Id_Trabajador=Id_Suplente + WHERE maxDate >= datSTART + AND datEND >= yesterday + AND date(Fecha) >= IF(yesterday > datSTART, yesterday, datSTART) + AND date(Fecha) <= IF(datEND > maxDate, maxDate, datEND) + AND IFNULL(tls.alertLevel,0) < 3 + + UNION DISTINCT + + SELECT Id_Ticket, C.Id_Cliente, C.Id_Trabajador + FROM Clientes C + INNER JOIN Tickets T USING(Id_Cliente) + LEFT JOIN vn.ticketState tls on tls.ticket = T.Id_Ticket + INNER JOIN workerTeamCollegues w ON w.collegueId = C.Id_Trabajador + /* + (SELECT Id_Trabajador + FROM Trabajadores t + JOIN account.user u ON u.id = t.user_id + JOIN workerTeam w on w.user = u.id + JOIN (SELECT team FROM workerTeam wt JOIN Trabajadores tr on tr.user_id = wt.user WHERE Id_Trabajador = worker) sub on sub.team = w.team + ) sub2 ON sub2.Id_Trabajador = C.Id_Trabajador + */ + WHERE Fecha >= yesterday + AND Fecha <= maxDate AND T.Factura Is NULL + AND IFNULL(tls.alertLevel,0) < 3 + AND w.workerId = worker; + + IF (SELECT COUNT(*) FROM ticketRange) THEN + + -- Generamos varias auxiliares (ya podian los de mysql haber solucionado esto) + + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; + CREATE TEMPORARY TABLE tmp.client_list + (INDEX (Id_Cliente)) + ENGINE = MEMORY + SELECT DISTINCT Id_Cliente FROM ticketRange; + + DROP TEMPORARY TABLE IF EXISTS cr5; + CREATE TEMPORARY TABLE cr5 + (INDEX (Id_Cliente)) + ENGINE = MEMORY + SELECT Id_Cliente FROM tmp.client_list; + + -- usar ticket_total crear ticket_tmp(ticket_id) + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; + CREATE TEMPORARY TABLE `ticket_tmp` + ENGINE = MEMORY + SELECT t.Id_Ticket ticket_id FROM Tickets t + STRAIGHT_JOIN tmp.client_list c ON t.Id_Cliente = c.Id_Cliente + WHERE Fecha BETWEEN dateStart AND maxDate + AND Factura Is NULL; + + CALL ticket_total(); + + -- Generamos otra tabla temporal con los Tickets_iva + + DROP TEMPORARY TABLE IF EXISTS tt3; + CREATE TEMPORARY TABLE tt3 + ENGINE = MEMORY + SELECT * FROM ticket_total tt + JOIN ticketRange tr ON tr.Id_Ticket = tt.ticket_id; + + + -- Generamos la lista de tickets y sus datos + + DROP TEMPORARY TABLE IF EXISTS Radartest; + + CREATE TEMPORARY TABLE Radartest + + SELECT IF(C.Id_Trabajador = worker, 1, 0) as Propio, + Credito, + Riesgo, + -- Greuge, + T.Id_Ticket, + T.warehouse_id as wh, + T.Fecha, + T.Alias, + -- T.Vista, + REPEAT(' ',50) as problem, + T.Agencia Tipo, + -- C.Id_Trabajador, + T.workerId AS Id_Trabajador, + T.Solucion, + T.Localizacion, + IFNULL(state,'LIBRE') as Estado, + alertLevel, + alertCode, + Date(T.Fecha) as Fecha_Simple, + T.Importe, + C.Descuento, + C.calidad, + C.Id_Cliente, + p.`name` provincia + FROM Clientes C + INNER JOIN + + ( + + SELECT T.* , A.Vista, A.Agencia, s.`name` as state, alertLevel, s.`code` AS alertCode, tt3.Id_Trabajador AS workerId, + + tt3.total as Importe, + + 0 AS inacabable + + -- (-1 < ifnull(order_id,-1)) as isbionic + + FROM Tickets T + LEFT JOIN vn.ticketState ts on ts.ticket = T.Id_Ticket + LEFT JOIN vn2008.state s on s.id = ts.state + + INNER JOIN tt3 ON tt3.ticket_id = T.Id_Ticket + + -- LEFT JOIN (SELECT DISTINCT 1 as order_id, Id_Ticket FROM order_Tickets) o on o.Id_Ticket = T.Id_Ticket + + INNER JOIN Agencias A ON A.Id_Agencia = T.Id_Agencia + + -- WHERE T.Etiquetasemitidas = FALSE + GROUP BY T.Id_Ticket + + ) AS T ON T.Id_Cliente = C.Id_Cliente + + LEFT JOIN Consignatarios co ON co.Id_Consigna = T.Id_Consigna + LEFT JOIN province p ON p.province_id = co.province_id + + LEFT JOIN + + ( + + SELECT TOTAL.Id_Cliente, ROUND(SUM(amount),2) as Riesgo FROM + + (SELECT cl.Id_Cliente, amount FROM bi.customer_risk cr + INNER JOIN tmp.client_list cl ON cr.customer_id = cl.Id_Cliente + + UNION ALL + + SELECT t.Id_Cliente, tt.total FROM ticket_total tt + INNER JOIN Tickets t ON t.Id_Ticket = tt.ticket_id + INNER JOIN cr5 C ON C.Id_Cliente = t.Id_Cliente + WHERE t.Fecha BETWEEN dateStart AND maxDate + AND t.Factura is null + + ) as TOTAL GROUP BY TOTAL.Id_Cliente + + + ) AS Peligros ON Peligros.Id_Cliente = C.Id_Cliente + ; + -- Actualizamos el Riesgo con los tickets futuros + set @cliente:= 0; + SET @riesgo := 0; + + UPDATE Radartest SET Riesgo = + IF(@cliente <> @cliente:= Id_Cliente , - Importe + @riesgo:= - Riesgo + Importe , - Importe + @riesgo:= @riesgo + Importe) + order by Id_Cliente, Fecha_Simple DESC; + + + + DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; + + CREATE TEMPORARY TABLE tmp.ticket_list + SELECT Id_Ticket, Id_Cliente FROM Radartest; + + CALL prepare_client_list(); + CALL production_buffer_problems; + + UPDATE Radartest r + JOIN ( + SELECT Id_Ticket, GROUP_CONCAT(problem) problem + FROM tmp.buffer_problems + GROUP BY Id_Ticket + ) p on p.Id_Ticket = r.Id_Ticket + SET r.problem = p.problem; + + + + SELECT R.*, Riesgo + Credito as Risk , CodigoTrabajador + FROM Radartest R + INNER JOIN vn2008.Trabajadores trab on R.Id_Trabajador=trab.Id_Trabajador; + + END IF; + + DROP TEMPORARY TABLE IF EXISTS ticketRange; + DROP TABLE IF EXISTS subordinate; + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; + DROP TEMPORARY TABLE IF EXISTS cr5; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `radartest` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `radartest`(IN today DATETIME, IN worker INTEGER, IN scopeDays SMALLINT) +BEGIN + + DECLARE todayMidnight DATE DEFAULT TIMESTAMP(today,'23:59:59'); + DECLARE yesterday DATETIME; + DECLARE maxDate DATETIME; + DECLARE datBUF DATETIME; + DECLARE warehouse INTEGER; + DECLARE done BIT DEFAULT 0; + DECLARE visible_calc INTEGER; + DECLARE available_calc INTEGER; + DECLARE dateStart DATE; + + SET dateStart = TIMESTAMPADD(MONTH, -2, CURDATE()); + SELECT TIMESTAMPADD(DAY, -1, today) INTO yesterday; + -- lo quitamos despues de campañaA + SELECT TIMESTAMP(TIMESTAMPADD(DAY, scopeDays, yesterday),'23:59:59') INTO maxDate; + -- SELECT TIMESTAMP(TIMESTAMPADD(DAY, 14, yesterday),'23:59:59') INTO maxDate; + -- Creamos una tabla con los Comerciales de los que se mostraran los tickets + CALL subordinate(worker,TRUE); + + + -- Se genera una tabla con los tickets representados + DROP TEMPORARY TABLE IF EXISTS ticketRange; + + CREATE TEMPORARY TABLE ticketRange + SELECT T.Id_Ticket, T.Id_Cliente, C.Id_Trabajador + FROM Tickets T + LEFT JOIN vn.ticketState tls on tls.ticket = T.Id_Ticket + INNER JOIN Clientes C on C.Id_Cliente = T.Id_Cliente + INNER JOIN subordinate s1 ON C.Id_Trabajador = s1.Id_Trabajador + WHERE Fecha >= yesterday + AND Fecha <= maxDate AND T.Factura Is NULL + AND IFNULL(tls.alertLevel,0) < 3 + + UNION DISTINCT + + SELECT Id_Ticket, s.Id_Cliente, s.Id_Trabajador + FROM sharingclient s + INNER JOIN Tickets T USING(Id_Cliente) + LEFT JOIN vn.ticketState tls on tls.ticket = T.Id_Ticket + INNER JOIN subordinate s2 ON s.Id_Trabajador = s2.Id_Trabajador + WHERE maxDate >= datSTART + AND datEND >= yesterday + AND date(Fecha) >= IF(yesterday > datSTART, yesterday, datSTART) + AND date(Fecha) <= IF(datEND > maxDate, maxDate, datEND) + AND IFNULL(tls.alertLevel,0) < 3 + + UNION DISTINCT + + SELECT Id_Ticket, C.Id_Cliente, s.Id_Suplente + FROM Clientes C + INNER JOIN Tickets T USING(Id_Cliente) + LEFT JOIN vn.ticketState tls on tls.ticket = T.Id_Ticket + INNER JOIN sharingcart s ON s.Id_Trabajador = C.Id_Trabajador + INNER JOIN subordinate su on su.Id_Trabajador=Id_Suplente + WHERE maxDate >= datSTART + AND datEND >= yesterday + AND date(Fecha) >= IF(yesterday > datSTART, yesterday, datSTART) + AND date(Fecha) <= IF(datEND > maxDate, maxDate, datEND) + AND IFNULL(tls.alertLevel,0) < 3; + + IF (SELECT COUNT(*) FROM ticketRange) THEN + + -- Generamos varias auxiliares (ya podian los de mysql haber solucionado esto) + + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; + CREATE TEMPORARY TABLE tmp.client_list + (INDEX (Id_Cliente)) + ENGINE = MEMORY + SELECT DISTINCT Id_Cliente FROM ticketRange; + + DROP TEMPORARY TABLE IF EXISTS cr5; + CREATE TEMPORARY TABLE cr5 + (INDEX (Id_Cliente)) + ENGINE = MEMORY + SELECT Id_Cliente FROM tmp.client_list; + + -- usar ticket_total crear ticket_tmp(ticket_id) + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; + CREATE TEMPORARY TABLE `ticket_tmp` + ENGINE = MEMORY + SELECT t.Id_Ticket ticket_id FROM Tickets t + STRAIGHT_JOIN tmp.client_list c ON t.Id_Cliente = c.Id_Cliente + WHERE Fecha BETWEEN dateStart AND maxDate + AND Factura Is NULL; + + CALL ticket_total(); + + + -- Generamos otra tabla temporal con los Tickets_iva + + DROP TEMPORARY TABLE IF EXISTS tt3; + CREATE TEMPORARY TABLE tt3 + ENGINE = MEMORY + SELECT * FROM ticket_total tt + JOIN ticketRange tr ON tr.Id_Ticket = tt.ticket_id; + + + -- Generamos la lista de tickets y sus datos + + DROP TEMPORARY TABLE IF EXISTS Radartest; + + CREATE TEMPORARY TABLE Radartest + + SELECT IF(C.Id_Trabajador = worker, 1, 0) as Propio, + Credito, + Riesgo, + -- Greuge, + T.Id_Ticket, + T.warehouse_id as wh, + T.Fecha, + T.Alias, + -- T.Vista, + REPEAT(' ',50) as problem, + T.Agencia Tipo, + -- C.Id_Trabajador, + T.workerId AS Id_Trabajador, + T.Solucion, + T.Localizacion, + IFNULL(state,'LIBRE') as Estado, + alertLevel, + Date(T.Fecha) as Fecha_Simple, + T.Importe, + C.Descuento, + C.calidad, + C.Id_Cliente, + p.`name` provincia + FROM Clientes C + INNER JOIN + + ( + + SELECT T.* , A.Vista, A.Agencia, s.`name` as state, alertLevel, tt3.Id_Trabajador AS workerId, + + tt3.total as Importe, + + 0 AS inacabable + + -- (-1 < ifnull(order_id,-1)) as isbionic + + FROM Tickets T + LEFT JOIN vn.ticketState ts on ts.ticket = T.Id_Ticket + LEFT JOIN vn2008.state s on s.id = ts.state + + INNER JOIN tt3 ON tt3.ticket_id = T.Id_Ticket + + -- LEFT JOIN (SELECT DISTINCT 1 as order_id, Id_Ticket FROM order_Tickets) o on o.Id_Ticket = T.Id_Ticket + + INNER JOIN Agencias A ON A.Id_Agencia = T.Id_Agencia + + -- WHERE T.Etiquetasemitidas = FALSE + GROUP BY T.Id_Ticket + + ) AS T ON T.Id_Cliente = C.Id_Cliente + + LEFT JOIN Consignatarios co ON co.Id_Consigna = T.Id_Consigna + LEFT JOIN province p ON p.province_id = co.province_id + + LEFT JOIN + + ( + + SELECT TOTAL.Id_Cliente, ROUND(SUM(amount),2) as Riesgo FROM + + (SELECT cl.Id_Cliente, amount FROM bi.customer_risk cr + INNER JOIN tmp.client_list cl ON cr.customer_id = cl.Id_Cliente + + UNION ALL + + SELECT t.Id_Cliente, tt.total FROM ticket_total tt + INNER JOIN Tickets t ON t.Id_Ticket = tt.ticket_id + INNER JOIN cr5 C ON C.Id_Cliente = t.Id_Cliente + WHERE t.Fecha BETWEEN dateStart AND maxDate + AND t.Factura is null + + ) as TOTAL GROUP BY TOTAL.Id_Cliente + + + ) AS Peligros ON Peligros.Id_Cliente = C.Id_Cliente + + + ; + + -- Actualizamos el Riesgo con los tickets futuros + set @cliente:= 0; + SET @riesgo := 0; + + UPDATE Radartest SET Riesgo = + IF(@cliente <> @cliente:= Id_Cliente , - Importe + @riesgo:= - Riesgo + Importe , - Importe + @riesgo:= @riesgo + Importe) + order by Id_Cliente, Fecha_Simple DESC; + + + + DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; + + CREATE TEMPORARY TABLE tmp.ticket_list + SELECT Id_Ticket, Id_Cliente FROM Radartest; + + CALL prepare_client_list(); + CALL production_buffer_problems; + + UPDATE Radartest r + JOIN ( + SELECT Id_Ticket, GROUP_CONCAT(problem) problem + FROM tmp.buffer_problems + GROUP BY Id_Ticket + ) p on p.Id_Ticket = r.Id_Ticket + SET r.problem = p.problem; + + + + SELECT R.*, Riesgo + Credito as Risk , CodigoTrabajador + FROM Radartest R + INNER JOIN vn2008.Trabajadores trab on R.Id_Trabajador=trab.Id_Trabajador; + + END IF; + + DROP TEMPORARY TABLE IF EXISTS ticketRange; + DROP TABLE IF EXISTS subordinate; + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; + DROP TEMPORARY TABLE IF EXISTS cr5; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `radar_lostcalls` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `radar_lostcalls`() +BEGIN + +SELECT Averiguar_ComercialCliente(C.Id_Cliente, calldate) as Comercial, C.Cliente AS Cliente, A2.Telefono +, A.Nombre as Destino, t3.* FROM + +( SELECT * FROM + (SELECT * FROM + ( SELECT dstchannel, disposition, calldate,src,dst,1 as missed, TIMESTAMPADD(SECOND,duration,calldate) as hangupdate, + TIMESTAMPADD(SECOND, (-billsec),TIMESTAMPADD(SECOND,duration,calldate) ) as answerdate, + duration, billsec FROM + (SELECT * FROM + (SELECT * FROM cdr WHERE calldate > timestampadd(day, -4,curdate()) ORDER BY calldate DESC ) t + GROUP BY src + ) cdr_sub + WHERE (dstchannel = '' or disposition <> 'ANSWERED' or lastapp = 'Playback') AND dstchannel <> 'killed' + AND src > 6000 + AND calldate > TIMESTAMPADD(DAY,-4,CURDATE()) + UNION ALL + SELECT dstchannel, disposition, calldate,dst, 0,0,calldate,calldate,0,0 + FROM cdr + WHERE dst > 6000 + AND calldate > TIMESTAMPADD(WEEK,-4,CURDATE()) + ) t + ORDER BY calldate DESC + ) t2 GROUP BY src + HAVING missed + ORDER BY calldate DESC +) t3 + +LEFT JOIN v_Agenda2 A2 ON CAST(A2.Telefono AS SIGNED) = t3.src +LEFT JOIN v_Agenda2 A ON CAST(A.Telefono AS SIGNED) = t3.dst +LEFT JOIN Clientes C ON C.Id_Cliente = A2.Id AND A2.Tipo = 'C' +; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `radar_negativos` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `radar_negativos`(IN v_force BOOLEAN, IN intRANGE INT) +BEGIN + +/** + * Calcula una tabla con el máximo negativo visible para cada producto y almacen + * + * @param v_force Fuerza el recalculo del stock + * @param intRANGE Numero de dias a considerar +**/ + + CALL `cache`.stock_refresh(v_force); + SET @aid = NULL; + call article_minacum(NULL,CURDATE(),intRANGE); + + SELECT a.Id_Article, a.Article, sub.warehouse_id, p.`name` producer, a.Medida, a.Categoria + , w.name as Almacen, sum(IFNULL(amount,0)) as Negativo + FROM (SELECT item_id, warehouse_id, amount + FROM cache.stock + WHERE amount > 0 + UNION ALL + SELECT article_id, warehouse_id, amount + FROM article_minacum + ) sub + JOIN warehouse w on w.id = warehouse_id + JOIN Articles a on a.Id_Article = item_id + LEFT JOIN producer p on p.producer_id = a.producer_id + JOIN Tipos t on t.tipo_id = a.tipo_id + JOIN reinos r on r.id = t.reino_id + WHERE w.tpv + AND t.tipo_id NOT IN (61,101,100,99, 180, 7, 21) + AND r.display <> 0 + AND a.Id_Article NOT IN (95,98) + GROUP BY item_id, warehouse_id + HAVING negativo < 0; + + DROP TEMPORARY TABLE IF EXISTS article_minacum; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `recalculator` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `recalculator`(vTicketId INT) +BEGIN + DECLARE vWh INT; + DECLARE vDate DATE; + DECLARE vCustomerId INT; + DECLARE vServiFac INT; + + SELECT warehouse_id, Fecha, Id_Cliente, IFNULL(Factura, 0) != 0 OR Etiquetasemitidas != 0 + INTO vWh, vDate, vCustomerId, vServiFac + FROM Tickets + WHERE Id_Ticket = vTicketId; + + IF NOT vServiFac + THEN + DROP TEMPORARY TABLE IF EXISTS item; + + CREATE TEMPORARY TABLE item + (INDEX (id)) + ENGINE = MEMORY + SELECT Id_Article id, Id_Movimiento + FROM Movimientos + WHERE Preciofijado = FALSE + AND Id_Ticket = vTicketId + AND (Id_Article < 82 OR Id_Article > 100); + + CALL item_buy (vWh, vDate); + CALL item_buy_price (vCustomerId, vDate, vWh); + + UPDATE Movimientos + JOIN item USING (Id_Movimiento) + SET Preu = price, + Descuento = discount; + + SELECT * FROM item; + + DROP TEMPORARY TABLE item; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `recalculator_plus` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `recalculator_plus`(vTicketId INT) +BEGIN + CALL recalculator (vTicketId); + + CREATE TEMPORARY TABLE movement + ENGINE = MEMORY + SELECT Id_Movimiento, Id_Article, Preu, Descuento, Cantidad, ABS(Preciofijado) AS PrecioFijado + FROM Movimientos + WHERE Id_Ticket = vTicketId + AND Reservado = FALSE + AND Id_Article NOT BETWEEN 85 AND 100 + AND Id_Movimiento NOT IN + ( + SELECT Id_Movimiento FROM Movimientos + WHERE Id_Ticket = vTicketId + AND Reservado = FALSE + AND Id_Article NOT BETWEEN 71 AND 100 + GROUP BY Id_Article, Preu, Descuento, ABS(PrecioFijado) + HAVING COUNT(*) = 1 + UNION ALL + SELECT Id_Movimiento FROM movement_label + ) FOR UPDATE; + + CREATE TEMPORARY TABLE movement_u + ENGINE = MEMORY + SELECT Id_Movimiento, Id_Article, Preu, Descuento, PrecioFijado, SUM(Cantidad) amount + FROM movement + GROUP BY Id_Article, Preu, Descuento, PrecioFijado; + + UPDATE Movimientos + JOIN movement_u u USING(Id_Movimiento) + JOIN Tickets T ON T.Id_Ticket = vTicketId + SET Cantidad = amount; + + DELETE movement FROM movement JOIN movement_u USING (Id_Movimiento); + DELETE Movimientos FROM Movimientos JOIN movement USING (Id_Movimiento); + + DROP TEMPORARY TABLE movement; + DROP TEMPORARY TABLE movement_u; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `recibida_select` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `recibida_select`(IN recibida INT) +BEGIN + DECLARE cta_proveed VARCHAR(10); + DECLARE cta_proveeda VARCHAR(10); + DECLARE v_num_recibida INT; + DECLARE dblRefRate,dblRefMin,dblRef DOUBLE; + + DECLARE NEW_id,NEW_empresa_id,NEW_proveedor_id INT; + DECLARE NEW_serie VARCHAR(1); + DECLARE NEW_fecha DATE; + DECLARE NEW_num_recibida VARCHAR(10); + DECLARE NEW_sref VARCHAR(20); + + SELECT id,empresa_id,proveedor_id,serie,fecha,num_recibida,sref + INTO NEW_id,NEW_empresa_id,NEW_proveedor_id, NEW_serie,NEW_fecha,NEW_num_recibida, NEW_sref + FROM recibida WHERE id = recibida; + + + SELECT rate INTO dblRefRate FROM reference_rate WHERE date = (SELECT MAX(date) FROM reference_rate + WHERE date <= (SELECT t.shipment FROM + recibida_entrada re + INNER JOIN Entradas e ON e.Id_Entrada = re.Id_Entrada + LEFT JOIN travel t ON t.id = e.travel_id + WHERE re.awb_recibida = recibida GROUP BY re.awb_recibida)); + + SELECT rate INTO dblRefMin FROM reference_min WHERE date=(SELECT MAX(date) FROM reference_min + WHERE date<=(SELECT t.shipment FROM + recibida_entrada re + INNER JOIN Entradas e ON e.Id_Entrada = re.Id_Entrada + LEFT JOIN travel t ON t.id = e.travel_id + WHERE re.awb_recibida = NEW_id GROUP BY re.awb_recibida)); + + -- IF dblRefMin < dblRefRate THEN + -- SET dblRef = dblRefRate; + -- ELSE + -- SET dblRef =dblRefMin; + -- END IF; + SELECT IFNULL(MAX(r.num_recibida) + 1,1) INTO v_num_recibida FROM recibida r + WHERE r.serie LIKE NEW_serie + AND YEAR(r.fecha) = YEAR(NEW_fecha) + AND r.empresa_id = NEW_empresa_id GROUP BY r.empresa_id; + + SET NEW_num_recibida = IFNULL(v_num_recibida,1); + SELECT REPLACE(cuenta,' ','') INTO cta_proveed FROM Proveedores WHERE Id_Proveedor=NEW_proveedor_id; + + +SELECT a,NEW_fecha,subcta,contra,concepto,eurodebe,eurohaber,baseeuro,NEW_serie,NEW_sref,iva, + (SELECT CONCAT(NEW_serie,'/', LPAD(v_num_recibida,5,'0'))),l340,LRECT349,TIPOOPE,AUXILIAR,NEW_empresa_id + FROM + + (SELECT MAX(ASIEN) + 1 as a FROM XDiario) t + + INNER JOIN + + ( + + SELECT *,NEW_serie FROM + + (SELECT CONCAT('s/fra',RIGHT(sref,8),':',LEFT(Proveedor, 10)) concepto FROM Proveedores + + INNER JOIN recibida ON Id_Proveedor = proveedor_id WHERE id = NEW_id) t4 + + INNER JOIN( + -- Linea del proveedor/acreedor + SELECT subcta,'' contra,eurodebe,ROUND(SUM(eurohaber) + 0.0001,2) eurohaber,baseeuro,0 iva, l340,LRECT349,TIPOOPE,'' AUXILIAR + + FROM ( + + SELECT cta_proveed subcta, + + NULL eurodebe, ROUND((1+(iva/100)*(r.serie = 'R'))*SUM(bi),2) eurohaber, NULL baseeuro,ri.recibida_id, 0 l340,0 LRECT349,' ' TIPOOPE + + FROM recibida r + + INNER JOIN recibida_iva ri ON ri.recibida_id = r.id INNER JOIN iva_codigo ic ON ri.iva_id = ic.id + + INNER JOIN Proveedores p ON p.Id_Proveedor=r.proveedor_id + INNER JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + WHERE r.id = NEW_id GROUP BY iva) t + + GROUP BY recibida_id + + UNION ALL + -- Linea de iva + SELECT ic.codigo,cta_proveed contra, + + ROUND(iva/100*SUM(ri.bi) + 0.0001,2) eurodebe, NULL eurohaber, + + ROUND(SUM(ri.bi),2) baseeuro,iva, 1 l340,(NOT ((p.pais_id <> p2.pais_id) AND pa.CEE < 2)) LRECT349,TIPOOPE, + IF(pa2.CEE < 2 AND ri2.gastos_id IS NULL,'','*') AUXILIAR -- JGF 30-01-2014 IF(NOT ((p.pais_id <> p2.pais_id) AND pa.CEE < 2),'*','') -- ANTES '' AUXILIAR JGF < 30-01-2014 +-- AND ri.gastos_id LIKE '4751______' + FROM recibida r + + INNER JOIN recibida_iva ri ON ri.recibida_id = r.id + + LEFT JOIN recibida_iva ri2 ON ri2.recibida_id = r.id AND ri2.gastos_id LIKE '4751______' + + INNER JOIN iva_codigo ic ON ri.iva_id = ic.id + + INNER JOIN iva_tipo it ON ic.iva_tipo_id = it.id + + INNER JOIN Gastos g ON ri.gastos_id = g.Id_Gasto AND g.iva_tipo_id = ic.iva_tipo_id + + INNER JOIN Proveedores p ON p.Id_Proveedor=r.proveedor_id + + INNER JOIN Paises pa ON p.pais_id = pa.Id + + INNER JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + INNER JOIN Paises pa2 ON p2.pais_id = pa2.Id + WHERE r.id = NEW_id AND g.conbase AND link GROUP BY iva + + UNION ALL + -- Linea iva inversor sujeto pasivo + SELECT ic2.codigo,cta_proveed contra, + + NULL eurodebe, ROUND(ic2.iva/100*SUM(bi) + 0.0001,2) eurohaber, + + ROUND(SUM(bi),2) baseeuro,ic2.iva, 1 l340,0 LRECT349,TIPOOPE,'*' AUXILIAR + + FROM recibida r + + INNER JOIN recibida_iva ri ON ri.recibida_id = r.id + + INNER JOIN iva_codigo ic ON ri.iva_id = ic.id + + INNER JOIN iva_codigo ic2 ON ic2.link = ic.link AND ic.id <> ic2.id + + INNER JOIN iva_tipo it ON ic.iva_tipo_id = it.id + + WHERE r.id = NEW_id AND ic2.link GROUP BY ic2.iva + + UNION ALL + -- Linea de Gastos + SELECT if(gastos_id LIKE '4751______',LPAD(RIGHT(cta_proveed ,4),10,gastos_id),gastos_id),cta_proveed , + + if(gastos_id LIKE '4751______',NULL,ABS(ROUND(SUM(bi),2))) , + + if(gastos_id LIKE '4751______',ABS(ROUND(SUM(bi),2)),NULL) , + + NULL ,0, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR + + FROM recibida r + + INNER JOIN recibida_iva ri ON ri.recibida_id = r.id + + INNER JOIN Proveedores p ON p.Id_Proveedor=r.proveedor_id + + WHERE r.id = NEW_id AND gastos_id <> 5660000002 GROUP BY gastos_id + + ) t2 + + UNION ALL + + + -- Extracomunitarias gasto contra proveedor/acreedor + SELECT CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) concepto ,gastos_id,cuenta, + + ROUND(SUM(bi)/IF(r.serie='W',dblRefRate,1)* (re.percentage / 100),2),NULL ,IF( @a:=@a+1 ,NULL,NULL) ,0, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR,r.serie + + FROM recibida_entrada re + + INNER JOIN recibida_iva ri ON re.recibida_id = ri.recibida_id + + INNER JOIN recibida r ON r.id = ri.recibida_id + + INNER JOIN Proveedores p ON p.Id_Proveedor = r.proveedor_id + + INNER JOIN Entradas e ON e.Id_Entrada = re.Id_Entrada + + LEFT JOIN travel t ON t.id = e.travel_id + + INNER JOIN (SELECT @a:=0,@cont:=1,@total:=0,@base:=2) t1 + + WHERE re.awb_recibida = NEW_id AND re.percentage GROUP BY r.id + +UNION ALL + + -- Extracomunitarias proveedor contra gasto + SELECT CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) concepto ,p.cuenta subcta,gastos_id, + + NULL eurodebe, ROUND((1+(iva/100)*(r.serie = 'R'))*SUM(bi)/IF(r.serie='W',dblRefRate,1)* (re.percentage / 100),2) eurohaber, + + NULL baseeuro,0 iva, 0 l340,0 LRECT349,' ' TIPOOPE,'' AUXILIAR,r.serie + -- antes sols iva + FROM recibida_entrada re + + INNER JOIN recibida_iva ri ON re.recibida_id = ri.recibida_id + + INNER JOIN recibida r ON r.id = ri.recibida_id + + INNER JOIN iva_codigo ic ON ri.iva_id = ic.id + + INNER JOIN Proveedores p ON Id_Proveedor = r.proveedor_id + + INNER JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + WHERE re.awb_recibida = NEW_id AND re.percentage GROUP BY r.id + +UNION ALL + + -- Linea de iva adquisicion + SELECT CONCAT('ADQUI. INTRA FRA ',sref),ic.codigo,p.cuenta contra, + + ROUND(iva/100*SUM(ri.importe) + 0.0001,2) eurodebe, NULL eurohaber, + + ROUND(SUM(ri.importe),2) baseeuro,iva, 1 l340,1 LRECT349,TIPOOPE,'' AUXILIAR,r.serie + + FROM awb_recibida ar + + JOIN awb a ON ar.awb_id = a.id + + JOIN iva_codigo ic ON a.iva_id = ic.id + + JOIN iva_tipo it ON ic.iva_tipo_id = it.id + + JOIN Proveedores p ON a.transitario_id = p.Id_Proveedor + + JOIN recibida_intrastat ri ON ri.recibida_id = ar.recibida_id + + JOIN recibida r ON r.id = ri.recibida_id + + JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + WHERE ar.recibida_id = NEW_id AND (p.pais_id <> p2.pais_id) + GROUP BY iva + + UNION ALL + + -- Linea de iva adquisicion + SELECT CONCAT('ADQUI. INTRA FRA ',sref),ic2.codigo,p.cuenta contra, + + NULL eurodebe, ROUND(ic2.iva/100*SUM(ri.importe) + 0.0001,2) eurohaber, + + ROUND(SUM(ri.importe),2) baseeuro,ic2.iva, 1 l340,0 LRECT349, TIPOOPE,'' AUXILIAR,r.serie + + FROM awb_recibida ar + + JOIN awb a ON ar.awb_id = a.id + + JOIN iva_codigo ic ON a.iva_id = ic.id + + JOIN iva_codigo ic2 ON ic2.link = ic.link AND ic.id <> ic2.id + + JOIN iva_tipo it ON ic.iva_tipo_id = it.id + + JOIN Proveedores p ON a.transitario_id = p.Id_Proveedor + + JOIN recibida_intrastat ri ON ri.recibida_id = ar.recibida_id + + JOIN recibida r ON r.id = ar.recibida_id + + JOIN Proveedores p1 ON p1.Id_Proveedor = r.proveedor_id + + JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + WHERE ar.recibida_id = NEW_id AND (p.pais_id <> p2.pais_id) GROUP BY ic2.iva + + UNION ALL + -- Linea iva importacion + SELECT concepto,subcta,Cuenta, + IF (NOT ((ppais_id <> p2pais_id) AND CEE < 2), + (IF(@cont<@a, + eurodebe, + ROUND(bi-@total,2) + )) + ,NULL)eurodebe,eurohaber,baseeuro,iva, + IF(@total:=@total+eurodebe ,0,0) l340,0 LRECT349, + IF(@cont:=@cont+1,'','') TIPOOPE,'*' AUXILIAR,serie FROM ( + + SELECT CONCAT('COMPRA FRA ',p.Proveedor) concepto,ic.codigo subcta,p.Cuenta,ic.iva, + red(sum(costefijo * Cantidad / sub1.costetotal * sub2.importe)*0.21) eurodebe,NULL eurohaber, + ROUND(sum(costefijo * Cantidad / sub1.costetotal * sub2.importe),2) baseeuro,ri.bi,r.serie,pa.CEE,p.pais_id ppais_id,p2.pais_id p2pais_id + + FROM awb_recibida ar + + JOIN recibida_entrada re ON ar.recibida_id = re.awb_recibida + + JOIN Compres c ON c.Id_Entrada = re.Id_Entrada + + INNER JOIN Articles a ON a.Id_Article = c.Id_Article + + INNER JOIN ( + + SELECT a.Codintrastat, sum(c.costefijo * c.Cantidad) as costetotal + + FROM Compres c + + JOIN Articles a ON a.Id_Article = c.Id_Article + + JOIN recibida_entrada re ON re.Id_Entrada = c.Id_Entrada + + JOIN awb_recibida ar ON ar.recibida_id = re.awb_recibida + + JOIN awb aw ON ar.awb_id = aw.id + + WHERE ar.recibida_id = NEW_id AND re.percentage + + GROUP BY a.Codintrastat + + ) sub1 USING(Codintrastat) + + INNER JOIN ( + + SELECT Codintrastat,ri.importe + + FROM recibida_intrastat ri + + WHERE ri.recibida_id = NEW_id + + ) sub2 USING(Codintrastat) + + -- JOIN recibida_intrastat ri ON ar.awb_recibida = ri.recibida_id and ri.Codintrastat = sub1.Codintrastat + + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + + JOIN Proveedores p ON p.Id_Proveedor = e.Id_Proveedor + + JOIN Paises pa ON p.pais_id = pa.Id + + JOIN recibida_iva ri ON ri.recibida_id = re.awb_recibida + + JOIN recibida_iva ri2 ON ri2.recibida_id = re.recibida_id + + JOIN iva_codigo ic ON ic.id = ri2.iva_id + + JOIN recibida r ON r.id = re.recibida_id + + JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + WHERE re.awb_recibida = NEW_id AND re.percentage AND IF(cta_proveed like '___0______',ri.gastos_id = 5660000002,TRUE) + -- canvie el cta_proveed like '___1______' per cero cuidao en les van de put + + GROUP BY p.Id_Proveedor + + + -- antes GROUP BY a.Codintrastat,Id_Entrada + +) t3)t4; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `recibida_select2` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `recibida_select2`(IN recibida INT) +BEGIN + DECLARE cta_proveed VARCHAR(10); + DECLARE cta_proveeda VARCHAR(10); + DECLARE v_num_recibida INT; + DECLARE dblRefRate,dblRefMin,dblRef DOUBLE; + + DECLARE NEW_id,NEW_empresa_id,NEW_proveedor_id INT; + DECLARE NEW_serie VARCHAR(1); + DECLARE NEW_fecha DATE; + DECLARE NEW_num_recibida VARCHAR(10); + DECLARE NEW_sref VARCHAR(20); + + SELECT id,empresa_id,proveedor_id,serie,fecha,num_recibida,sref + INTO NEW_id,NEW_empresa_id,NEW_proveedor_id, NEW_serie,NEW_fecha,NEW_num_recibida, NEW_sref + FROM recibida WHERE id = recibida; + + + SELECT rate INTO dblRefRate FROM reference_rate WHERE date = (SELECT MAX(date) FROM reference_rate + WHERE date <= (SELECT t.shipment FROM + recibida_entrada re + INNER JOIN Entradas e ON e.Id_Entrada = re.Id_Entrada + LEFT JOIN travel t ON t.id = e.travel_id + WHERE re.awb_recibida = recibida GROUP BY re.awb_recibida)); + + SELECT rate INTO dblRefMin FROM reference_min WHERE date=(SELECT MAX(date) FROM reference_min + WHERE date<=(SELECT t.shipment FROM + recibida_entrada re + INNER JOIN Entradas e ON e.Id_Entrada = re.Id_Entrada + LEFT JOIN travel t ON t.id = e.travel_id + WHERE re.awb_recibida = NEW_id GROUP BY re.awb_recibida)); + + -- IF dblRefMin < dblRefRate THEN + -- SET dblRef = dblRefRate; + -- ELSE + -- SET dblRef =dblRefMin; + -- END IF; + SELECT IFNULL(MAX(r.num_recibida) + 1,1) INTO v_num_recibida FROM recibida r + WHERE r.serie LIKE NEW_serie + AND YEAR(r.fecha) = YEAR(NEW_fecha) + AND r.empresa_id = NEW_empresa_id GROUP BY r.empresa_id; + + SET NEW_num_recibida = IFNULL(v_num_recibida,1); + + + SELECT REPLACE(cuenta,' ','') INTO cta_proveed FROM Proveedores WHERE Id_Proveedor=NEW_proveedor_id; + + +SELECT CONCAT('COMPRA FRA ',p.Proveedor) concepto,ic.codigo subcta,p.Cuenta,ic.iva, + red(sum(costefijo * Cantidad / sub1.costetotal * sub2.importe)*0.21) eurodebe,NULL eurohaber, + ROUND(sum(costefijo * Cantidad / sub1.costetotal * sub2.importe),2) baseeuro,ri.bi,r.serie,pa.CEE,p.pais_id ppais_id,p2.pais_id p2pais_id + + FROM awb_recibida ar + + left JOIN recibida_entrada re ON ar.recibida_id = re.awb_recibida + + left JOIN Compres c ON c.Id_Entrada = re.Id_Entrada + + left JOIN Articles a ON a.Id_Article = c.Id_Article + + left JOIN ( + + SELECT a.Codintrastat, sum(c.costefijo * c.Cantidad) as costetotal + + FROM Compres c + + left JOIN Articles a ON a.Id_Article = c.Id_Article + + left JOIN recibida_entrada re ON re.Id_Entrada = c.Id_Entrada + + left JOIN awb_recibida ar ON ar.recibida_id = re.awb_recibida + + left JOIN awb aw ON ar.awb_id = aw.id + + WHERE ar.recibida_id = NEW_id AND re.percentage/*JGF 27/08/14*/ + + GROUP BY a.Codintrastat + + ) sub1 USING(Codintrastat) + + left JOIN ( + + SELECT Codintrastat,ri.importe + + FROM recibida_intrastat ri + + WHERE ri.recibida_id = NEW_id + + ) sub2 USING(Codintrastat) + + -- JOIN recibida_intrastat ri ON ar.awb_recibida = ri.recibida_id and ri.Codintrastat = sub1.Codintrastat + + left JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + + left JOIN Proveedores p ON p.Id_Proveedor = e.Id_Proveedor + + left JOIN Paises pa ON p.pais_id = pa.Id + + left JOIN recibida_iva ri ON ri.recibida_id = re.awb_recibida + + left JOIN recibida_iva ri2 ON ri2.recibida_id = re.recibida_id + + left JOIN iva_codigo ic ON ic.id = ri2.iva_id + + left JOIN recibida r ON r.id = re.recibida_id + + left JOIN Proveedores p2 ON p2.Id_Proveedor = r.empresa_id + + WHERE re.awb_recibida = NEW_id AND re.percentage/*JGF 27/08/14*/ AND IF(cta_proveed like '___0______',ri.gastos_id = 5660000002,TRUE) + -- canvie el cta_proveed like '___1______' per cero cuidao en les van de put + GROUP BY p.Id_Proveedor; + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `recobro_credito` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `recobro_credito`() +BEGIN + +INSERT INTO vn2008.daily_task_log(consulta) VALUES('recobro_credito'); + +DROP TEMPORARY TABLE IF EXISTS clientes_credit; +CREATE TEMPORARY TABLE clientes_credit +SELECT Id_Cliente, if (Credito > Recobro ,Credito - Recobro,0) as newCredit +from +( +SELECT r.Id_Cliente, r.amount as Recobro, timestampadd(DAY, period, UltimaFecha) as Deadline, sub2.amount as Credito +FROM vn2008.recovery r +join + ( + select Id_Cliente, amount , odbc_date as UltimaFecha + from + ( + select * from credit + order by odbc_date desc + ) sub + group by Id_Cliente + ) sub2 using(Id_Cliente) + +where dend is null or dend >= curdate() +group by Id_Cliente +having Deadline <= curdate() +) sub3 +where Credito > 0; + +UPDATE Clientes +JOIN +clientes_credit using(Id_Cliente) +SET Clientes.Credito = newCredit; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `reinvoice` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `reinvoice`(Id_Factura VARCHAR(15)) +BEGIN + DECLARE date_invoice DATE; + DECLARE customer_id INTEGER; + DECLARE serie CHAR(1); + DECLARE bi DOUBLE; + DECLARE bi_diff DOUBLE; + DECLARE base_max DOUBLE; + DECLARE day_vec INT; + DECLARE bi_r DOUBLE DEFAULT 0; + DECLARE bi_g DOUBLE DEFAULT 0; + DECLARE bi_n DOUBLE DEFAULT 0; + DECLARE iva_r DOUBLE DEFAULT 0; + DECLARE iva_g DOUBLE DEFAULT 0; + DECLARE re_r DOUBLE DEFAULT 0; + DECLARE re_g DOUBLE DEFAULT 0; + DECLARE dblImporte DOUBLE DEFAULT 0; + DECLARE intpais_id TINYINT DEFAULT 1; + DECLARE intFac INTEGER; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + DROP TEMPORARY TABLE IF EXISTS `iva_base`; + CREATE TEMPORARY TABLE `iva_base` + ( + `id` VARCHAR(3) NOT NULL, + `base` DOUBLE NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) + ) + ENGINE = MEMORY; + + DROP TEMPORARY TABLE IF EXISTS `ticket_invoice`; + CREATE TEMPORARY TABLE `ticket_invoice` + ( + `ticket_id` INT NOT NULL, + PRIMARY KEY (`ticket_id`) + ) + ENGINE = MEMORY; + + START TRANSACTION; + + SELECT pais_id,Fecha,f.Id_Factura,Id_Cliente INTO intpais_id,date_invoice,Id_Factura,customer_id FROM Proveedores p + JOIN Facturas f ON p.Id_Proveedor = f.empresa_id + WHERE f.Id_Factura = Id_Factura; + + INSERT INTO ticket_invoice (ticket_id) SELECT Id_Ticket FROM Tickets t + WHERE Factura = Id_Factura; + + -- Eliminem els tickets que no han de ser facturats + + IF (SELECT COUNT(*) FROM ticket_invoice) > 0 + THEN + INSERT INTO iva_base (id) SELECT tipoiva FROM tblIVA; + + UPDATE iva_base + INNER JOIN + (SELECT tipo, SUM(base) base + FROM + (SELECT t.tipo, red(m.Cantidad * m.Preu * (100 - Descuento) / 100) AS base + FROM + Movimientos m + INNER JOIN ticket_invoice ti ON m.Id_Ticket = ti.ticket_id + INNER JOIN (SELECT t.tipo, Id_Article + FROM + (SELECT + date, iva_codigo_id, ic.tipo, iva_group_id + FROM + iva_group_codigo gi + INNER JOIN iva_codigo ic ON gi.iva_codigo_id = ic.id + INNER JOIN iva_tipo itp ON itp.id = ic.iva_tipo_id + WHERE + date <= date_invoice + AND Id_Pais = intpais_id + ORDER BY date DESC) t + INNER JOIN Articles USING (iva_group_id) + GROUP BY Id_Article) t USING (Id_Article)) sub + GROUP BY tipo) iva_movement ON iva_base.id = iva_movement.tipo + SET + iva_base.base = iva_movement.base; + + IF (serie = 'H' OR serie = 'V' OR serie = 'E' OR serie = 'X') THEN + SELECT SUM(base) into dblImporte from iva_base; + ELSE + + SET bi_r = (SELECT base FROM iva_base WHERE id = 'R'); + + SET bi_g = (SELECT base FROM iva_base WHERE id = 'G'); + SET bi_n = (SELECT base FROM iva_base WHERE id = '0'); + SET iva_r = red(bi_r * (SELECT iva FROM iva_codigo INNER JOIN iva_tipo it ON it.id = iva_tipo_id + WHERE tipo = 'R' AND Id_Pais = intpais_id AND Fecha <= date_invoice and iva ORDER BY fecha DESC, recargo DESC LIMIT 1) / 100 ); + SET iva_g = red(bi_g * (SELECT iva FROM iva_codigo INNER JOIN iva_tipo it ON it.id = iva_tipo_id + WHERE tipo = 'G' AND Id_Pais = intpais_id AND Fecha <= date_invoice and iva ORDER BY fecha DESC, recargo DESC LIMIT 1) / 100 ); + + IF (SELECT IF(RE = 0, FALSE, TRUE) FROM Clientes WHERE Clientes.Id_cliente = customer_id) + THEN + SET re_r = red(bi_r * (SELECT recargo FROM iva_codigo INNER JOIN iva_tipo it ON it.id = iva_tipo_id + WHERE tipo = 'R' AND Id_Pais = intpais_id AND Fecha <= date_invoice and iva ORDER BY fecha DESC, recargo DESC LIMIT 1) / 100 ); + SET re_g = red(bi_g * (SELECT recargo FROM iva_codigo INNER JOIN iva_tipo it ON it.id = iva_tipo_id + WHERE tipo = 'G' AND Id_Pais = intpais_id AND Fecha <= date_invoice and iva ORDER BY fecha DESC, recargo DESC LIMIT 1) / 100 ); + END IF; + + SET dblImporte = bi_r + bi_g + bi_n + iva_r + iva_g + re_r + re_g ; + END IF; + END IF; + + IF (SELECT SUM(base) FROM iva_base) != 0 + THEN + UPDATE Facturas + SET + BI7 = bi_r, + BI16 = bi_g, + IVA7 = iva_r, + IVA16 = iva_g, + RE1 = re_r, + RE4 = re_g, + Importe = dblImporte + WHERE Facturas.Id_Factura = Id_Factura; + END IF; + + DROP TEMPORARY TABLE `iva_base`; + DROP TEMPORARY TABLE `ticket_invoice`; + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `resumen_produccion` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `resumen_produccion`(IN datSTART DATE, IN datEND DATE) +BEGIN + +DECLARE datENDFIN DATETIME; +DECLARE datSTART_LY DATETIME; +DECLARE datEND_LY DATETIME; + +SET datENDFIN = DAYEND(datEND); +SET datSTART_LY = TIMESTAMPADD(YEAR,-1,datSTART); +SET datSTART_LY = TIMESTAMPADD(DAY,-1,datSTART_LY); + +SET datEND_LY = TIMESTAMPADD(YEAR,-1,datEND); +SET datEND_LY = TIMESTAMPADD(DAY,-1,datEND_LY); + +DROP TEMPORARY TABLE IF EXISTS tblRESUMEN; + +CREATE TEMPORARY TABLE tblRESUMEN + (Agencia VARCHAR(30), + Vista INT(2), + Dia DATE, + Tickets INT(4), + unidades INT(11), + m3 INT(6), + bultos INT(6), + linea INT(11), + almacen VARCHAR(25), + importe DOUBLE, + año INT +); + +INSERT INTO tblRESUMEN + +select Agencia, Vista, Dia, count(Id_Ticket) as Tickets, sum(unidades) as unidades, sum(Volumen) / 1000000 as m3 + , sum(Bul1) as bultos, sum(lineas) as linea, almacen, SUM(importe) as importe, año +from +( +select Agencia, Vista, date(Fecha) as Dia, sum(Cantidad) as unidades , sum(Cantidad * cm3) as Volumen + ,sum(IF (M.Id_Article IN (71,68,83,79, 85,89,91,92,93), Cantidad, 0)) as Bul1 + , Id_Ticket, count(*) as lineas, IFNULL(T.Bultos,0) as Bul2, w.name as almacen, SUM(Cantidad * Preu * (100 - M.Descuento) / 100) importe, year(T.Fecha) as año + from Movimientos M + inner join Tickets T USING(Id_Ticket) + join warehouse w on T.warehouse_id = w.id + join bi.rotacion r on r.Id_Article = M.Id_Article and r.warehouse_id = T.warehouse_id + inner join Clientes C USING(Id_Cliente) + inner join Articles A on A.Id_Article = M.Id_Article + inner join Tipos TP USING(tipo_id) + join reinos re on re.id = TP.reino_id + inner join Agencias USING(Id_Agencia) + where (Fecha BETWEEN datSTART AND datENDFIN or Fecha BETWEEN datSTART_LY AND datEND_LY) + and re.display <> 0 + and (invoice or Id_Cliente = 31) and C.Id_Cliente NOT IN (2066,2067,2068) + group by Id_Ticket) sub + +group by Agencia, Vista, Dia, almacen, año +; + +SET lc_time_names = 'es_ES'; + +SELECT *, + CASE Vista + WHEN 1 THEN 'Agencias' + WHEN 2 THEN 'Rutas' + WHEN 3 THEN 'Mercado' + ELSE 'Otras' + END as Sector + ,dayname(Dia) as Nombre_Dia + , week + , year + + + FROM tblRESUMEN + JOIN time t on t.date = Dia; + +DROP TEMPORARY TABLE IF EXISTS tblRESUMEN; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `risk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `risk`(v_date DATE, v_customer INT) +BEGIN +/** + * Calcula el riesgo para uno o todos los clientes activos. + * + * @param v_date Fecha maxima de los registros + * @param v_customer Cliente a mostrar su riesgo, %NULL para todos + * + * @return table tmp.risk + **/ + DECLARE v_date_start DATETIME DEFAULT TIMESTAMPADD(MONTH, -33, CURDATE()); + DECLARE v_date_end DATETIME; + + SET v_date = IFNULL(v_date, CURDATE()); + SET v_date_end = TIMESTAMP(v_date, '23:59:59'); + + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; + CREATE TEMPORARY TABLE ticket_tmp + ENGINE = MEMORY + SELECT Id_Ticket ticket_id FROM Tickets t + WHERE (v_customer IS NULL OR Id_Cliente = v_customer) + AND t.Factura IS NULL + AND t.Fecha BETWEEN v_date_start AND v_date_end; + + CALL ticket_total(); + + + + DROP TEMPORARY TABLE IF EXISTS tmp.risk; + CREATE TEMPORARY TABLE tmp.risk + ENGINE = MEMORY + SELECT Id_Cliente, SUM(amount) risk + FROM Clientes c + JOIN ( + SELECT customer_id, SUM(amount) amount + FROM bi.customer_risk + WHERE (v_customer IS NULL OR customer_id = v_customer) + GROUP BY customer_id + UNION ALL + SELECT Id_Cliente, SUM(Entregado) + FROM Recibos + WHERE (v_customer IS NULL OR Id_Cliente = v_customer) + AND Fechacobro > v_date_end + GROUP BY Id_Cliente + UNION ALL + SELECT t.Id_Cliente, SUM(total) + FROM ticket_total tt + JOIN Tickets t ON tt.ticket_id = t.Id_Ticket + GROUP BY t.Id_Cliente + UNION ALL + SELECT t.customer_id, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)) + FROM hedera.tpv_transaction t + WHERE (v_customer IS NULL OR t.customer_id = v_customer) + AND t.receipt_id IS NULL + AND t.status = 'ok' + GROUP BY t.customer_id + ) t ON c.Id_Cliente = t.customer_id + WHERE c.activo != FALSE + GROUP BY c.Id_Cliente; + + DROP TEMPORARY TABLE + ticket_total, + ticket_tmp; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `risk_vs_client_list` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `risk_vs_client_list`(maxRiskDate DATE) +BEGIN +/** + * Calcula el riesgo para los clientes activos de la tabla temporal tmp.client_list + * + * @param maxRiskDate Fecha maxima de los registros + * @return table tmp.risk + **/ + + -- DECLARE startingDate DATETIME DEFAULT TIMESTAMPADD(DAY, -40, CURDATE()); + DECLARE startingDate DATETIME DEFAULT TIMESTAMPADD(DAY, - DAYOFMONTH(CURDATE()) - 5, CURDATE()); + DECLARE endingDate DATETIME; + DECLARE MAX_RISK_ALLOWED INT DEFAULT 200; + + SET maxRiskDate = IFNULL(maxRiskDate, CURDATE()); + SET endingDate = TIMESTAMP(maxRiskDate, '23:59:59'); + + + + DROP TEMPORARY TABLE IF EXISTS tmp.client_list_2; + CREATE TEMPORARY TABLE tmp.client_list_2 + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT * + FROM tmp.client_list; + + DROP TEMPORARY TABLE IF EXISTS tmp.client_list_3; + CREATE TEMPORARY TABLE tmp.client_list_3 + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT * + FROM tmp.client_list; + + + DROP TEMPORARY TABLE IF EXISTS tmp.tickets_sin_facturar; + CREATE TEMPORARY TABLE tmp.tickets_sin_facturar + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT t.Id_Cliente, floor(IF(VIES, 1, 1.1) * sum(Cantidad * Preu * (100 - Descuento) / 100)) as total + FROM Movimientos m + JOIN Tickets t on m.Id_Ticket = t.Id_Ticket + JOIN tmp.client_list c on c.Id_Cliente = t.Id_Cliente + JOIN vn.client cl ON cl.id = t.Id_Cliente + WHERE Factura IS NULL + AND Fecha BETWEEN startingDate AND endingDate + GROUP BY t.Id_Cliente; + + DROP TEMPORARY TABLE IF EXISTS tmp.risk; + CREATE TEMPORARY TABLE tmp.risk + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT Id_Cliente, SUM(amount) risk, sum(saldo) saldo + FROM Clientes c + JOIN ( + SELECT customer_id, SUM(amount) amount,SUM(amount) saldo + FROM bi.customer_risk + JOIN tmp.client_list on Id_Cliente = customer_id + GROUP BY customer_id + UNION ALL + SELECT Id_Cliente, SUM(Entregado),SUM(Entregado) + FROM Recibos + JOIN tmp.client_list_2 using(Id_Cliente) + WHERE Fechacobro > endingDate + GROUP BY Id_Cliente + UNION ALL + SELECT Id_Cliente, total,0 + FROM tmp.tickets_sin_facturar + UNION ALL + SELECT t.customer_id, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)), CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)) + FROM hedera.tpv_transaction t + JOIN tmp.client_list_3 on Id_Cliente = customer_id + WHERE t.receipt_id IS NULL + AND t.status = 'ok' + GROUP BY t.customer_id + ) t ON c.Id_Cliente = t.customer_id + WHERE c.activo != FALSE + GROUP BY c.Id_Cliente; + + DELETE r.* + FROM tmp.risk r + JOIN vn2008.Clientes c on c.Id_Cliente = r.Id_Cliente + JOIN vn2008.pay_met pm on pm.id = c.pay_met_id + WHERE IFNULL(r.saldo,0) < 10 + AND r.risk <= MAX_RISK_ALLOWED + AND pm.`name` = 'TARJETA'; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `risk_vs_client_listbeta` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `risk_vs_client_listbeta`(maxRiskDate DATE) +BEGIN +/** + * Calcula el riesgo para los clientes activos de la tabla temporal tmp.client_list + * + * @param maxRiskDate Fecha maxima de los registros + * @return table tmp.risk + **/ + + -- DECLARE startingDate DATETIME DEFAULT TIMESTAMPADD(DAY, -40, CURDATE()); + DECLARE startingDate DATETIME DEFAULT TIMESTAMPADD(DAY, - DAYOFMONTH(CURDATE()) - 5, CURDATE()); + DECLARE endingDate DATETIME; + DECLARE MAX_RISK_ALLOWED INT DEFAULT 200; + + SET maxRiskDate = IFNULL(maxRiskDate, CURDATE()); + SET endingDate = TIMESTAMP(maxRiskDate, '23:59:59'); + + + + DROP TEMPORARY TABLE IF EXISTS tmp.client_list_2; + CREATE TEMPORARY TABLE tmp.client_list_2 + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT * + FROM tmp.client_list; + select 1; + DROP TEMPORARY TABLE IF EXISTS tmp.client_list_3; + CREATE TEMPORARY TABLE tmp.client_list_3 + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT * + FROM tmp.client_list; + + select 2; + DROP TEMPORARY TABLE IF EXISTS tmp.tickets_sin_facturar; + CREATE TEMPORARY TABLE tmp.tickets_sin_facturar + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT t.Id_Cliente, Cantidad as total + FROM Movimientos m + JOIN Tickets t on m.Id_Ticket = t.Id_Ticket + JOIN tmp.client_list c on c.Id_Cliente = t.Id_Cliente + WHERE Factura IS NULL + AND Fecha BETWEEN startingDate AND endingDate + GROUP BY t.Id_Cliente; +select 3; + DROP TEMPORARY TABLE IF EXISTS tmp.risk; + CREATE TEMPORARY TABLE tmp.risk + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT Id_Cliente, SUM(amount) risk, sum(saldo) saldo + FROM Clientes c + JOIN ( + SELECT customer_id, SUM(amount) amount,SUM(amount) saldo + FROM bi.customer_risk + JOIN tmp.client_list on Id_Cliente = customer_id + GROUP BY customer_id + UNION ALL + SELECT Id_Cliente, SUM(Entregado),SUM(Entregado) + FROM Recibos + JOIN tmp.client_list_2 using(Id_Cliente) + WHERE Fechacobro > endingDate + GROUP BY Id_Cliente + UNION ALL + SELECT Id_Cliente, total,0 + FROM tmp.tickets_sin_facturar + UNION ALL + SELECT t.customer_id, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)), CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)) + FROM hedera.tpv_transaction t + JOIN tmp.client_list_3 on Id_Cliente = customer_id + WHERE t.receipt_id IS NULL + AND t.status = 'ok' + GROUP BY t.customer_id + ) t ON c.Id_Cliente = t.customer_id + WHERE c.activo != FALSE + GROUP BY c.Id_Cliente; +select 4; + DELETE r.* + FROM tmp.risk r + JOIN vn2008.Clientes c on c.Id_Cliente = r.Id_Cliente + JOIN vn2008.pay_met pm on pm.id = c.pay_met_id + WHERE IFNULL(r.saldo,0) < 10 + AND r.risk <= MAX_RISK_ALLOWED + AND pm.`name` = 'TARJETA'; +select 5; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Rutas_Graph` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Rutas_Graph`() +BEGIN + +DECLARE datSTART DATE DEFAULT TIMESTAMPADD(DAY,-3,CURDATE()); +DECLARE datEND DATE; + +SET datEND = vn2008.dayend(timestampadd(day,3,CURDATE())); + +CALL item_last_buy_(NULL,datSTART); + +Select cast(sum(Cantidad * vn2008.cm3_unidad(buy_id)) / 1000000 as DECIMAL(5,1)) as m3, Agencia, w.name as Almacen, date(R.Fecha) as Fecha_Ruta + from vn2008.Rutas R + JOIN vn2008.Agencias a on a.Id_Agencia = R.Id_Agencia + join vn2008.Tickets t using(Id_Ruta) + JOIN vn2008.warehouse w on w.id = t.warehouse_id + join vn2008.Movimientos m using(Id_Ticket) + JOIN cache.last_buy b ON m.Id_Article = b.item_id AND t.warehouse_id = b.warehouse_id + where R.Fecha between datSTART and datEND + group by Agencia, Almacen, Fecha_Ruta + +UNION ALL +Select cast(sum(Cantidad * vn2008.cm3_unidad(buy_id)) / 1000000 as decimal(5,1)) as m3 ,Agencia, w.name as Almacen, timestampadd(day,1,t.Fecha) Fecha + from vn2008.Tickets t + join warehouse w on w.id = warehouse_id + join Agencias a using(Id_Agencia) + join vn2008.Movimientos m using(Id_Ticket) + JOIN cache.last_buy b ON m.Id_Article = b.item_id AND t.warehouse_id = b.warehouse_id + LEFT JOIN warehouse_pickup wp ON wp.agency_id = t.Id_Agencia and wp.warehouse_id = t.warehouse_id + JOIN warehouse_pickup is_rec ON is_rec.agency_id = t.Id_Agencia + where t.Fecha between TIMESTAMPADD(DAY,-1,datSTART) and TIMESTAMPADD(DAY,-1,datEND) + AND wp.agency_id IS NULL + group by Agencia, Almacen, Fecha + -- JGF 2016-05-05 +UNION ALL + Select cast(sum(Cantidad * vn2008.cm3_unidad(Id_Compra)) / 1000000 as decimal(5,1)) as m3 ,a.Agencia, w.name as Almacen, + timestampadd(day,1,t.shipment) Fecha + from Compres c JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel t ON t.id = e.travel_id + JOIN Agencias a on a.Id_Agencia = t.agency_id + JOIN warehouse w on w.id = t.warehouse_id_out + JOIN warehouse_pickup wp ON wp.warehouse_id = t.warehouse_id_out + where t.shipment between TIMESTAMPADD(DAY,-1,datSTART) and TIMESTAMPADD(DAY,-1,datEND) + group by a.Agencia, Almacen, Fecha; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `saldos_bancos` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `saldos_bancos`() +BEGIN + +declare datEND DATE; + +SET datEND = CURDATE() + INTERVAL 2 MONTH; + +drop table if exists bi.saldos_bancos; + + +create table bi.saldos_bancos + + select Semana, Mes, Año, Entrada + , Salida + , @saldo := IF(@banco = Id_Banco and @emp = empresa_id, @saldo,0) + ifnull(Entrada,0)-ifnull(Salida,0) as Saldo + , @banco := Id_Banco as Id_Banco + , @emp := empresa_id as empresa_id + , 'NUL' as Empresa + + from + ( + select * from + ( + select t.week as Semana, t.year as Año, t.month as Mes, b.Id_Banco, sum(Entrada) as Entrada, sum(Salida) as Salida, @banco := 0, @saldo := 0, @emp := 0, e.id as empresa_id + from time t + join Bancos b on b.entity_id = 1 + join empresa e on e.id IN (791,442) + left join + ( + Select Id_Banco, Entrada, Salida, Cajafecha,empresa_id + from Cajas + where Cajafecha >= '2015-01-01' + and Serie = 'MB' + union all + Select Id_Banco, NULL, importe, greatest(fecha,TIMESTAMPADD(DAY,1,CURDATE())),empresa_id + from pago + where conciliado = FALSE /*fecha between CURDATE() and datEND*/ + union all + Select Id_Banco, Entregado, NULL, greatest(Fechacobro,TIMESTAMPADD(DAY,1,CURDATE())),empresa_id + from Recibos + where Fechacobro between CURDATE() and datEND + union all + Select IFNULL(Id_Banco,9999), Importe, NULL, Fecha,empresa_id + from Saldos_Prevision + where Fecha between CURDATE() and datEND + ) sub2 on t.date = sub2.Cajafecha and b.Id_Banco = sub2.Id_Banco and e.id = sub2.empresa_id + + where t.date between '2015-01-01' and datEND + and b.cash != 1 + group by b.Id_Banco, e.id, t.year, t.week + ) sub3 + order by Id_Banco, empresa_id, Año, Mes, Semana + ) sub +; + +update bi.saldos_bancos s +join empresa e on e.id = s.empresa_id +set s.Empresa = abbreviation; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `saldos_bancos_pordia` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `saldos_bancos_pordia`() +BEGIN + +declare datEND DATE; + +SET datEND = CURDATE() + INTERVAL 2 MONTH; + +drop table if exists bi.saldos_bancos_pordia; + + +create table bi.saldos_bancos_pordia + + select Fecha, Entrada + , Salida + , @saldo := IF(@banco = Id_Banco and @emp = empresa_id, @saldo,0) + ifnull(Entrada,0)-ifnull(Salida,0) as Saldo + , @banco := Id_Banco as Id_Banco + , @emp := empresa_id as empresa_id + , 'NUL' as Empresa + , Año, Mes, Dia + + from + ( + select * from + ( + select t.day as Dia, t.month as Mes,t.year as Año, t.date as Fecha, b.Id_Banco, sum(Entrada) as Entrada, sum(Salida) as Salida, @banco := 0, @saldo := 0, @emp := 0, e.id as empresa_id + from time t + join Bancos b on b.entity_id = 1 + join empresa e on e.id IN (791,442) + left join + ( + Select Id_Banco, Entrada, Salida, Cajafecha,empresa_id + from Cajas + where Cajafecha >= '2015-01-01' + and Serie = 'MB' + union all + Select Id_Banco, NULL, importe, greatest(fecha,TIMESTAMPADD(DAY,1,CURDATE())),empresa_id + from pago + where conciliado = FALSE /*fecha between CURDATE() and datEND*/ + union all + Select Id_Banco, Entregado, NULL, greatest(Fechacobro,TIMESTAMPADD(DAY,1,CURDATE())),empresa_id + from Recibos + where conciliado = FALSE -- Fechacobro between CURDATE() and datEND + union all + Select IFNULL(Id_Banco,9999), Importe, NULL, Fecha,empresa_id + from Saldos_Prevision + where Fecha between CURDATE() and datEND + ) sub2 on t.date = sub2.Cajafecha and b.Id_Banco = sub2.Id_Banco and e.id = sub2.empresa_id + + where t.date between '2015-01-01' and datEND + and b.cash != 1 + group by b.Id_Banco, e.id, t.date + ) sub3 + order by Id_Banco, empresa_id, Fecha + ) sub +; + +update bi.saldos_bancos_pordia s +join empresa e on e.id = s.empresa_id +set s.Empresa = abbreviation; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `scan_rutas_view` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `scan_rutas_view`() +BEGIN + + +/* muestra las rutas agrupadas de los ultimos tres dias, así como una lista de los tickets sin enrutar, agrpados por agencia y fecha*/ + +select Fecha, Id_Ruta, Matricula, sub.m3, CodigoTrabajador, Agencia, Bultos, w.name as Almacen +from +( +select r.Fecha, Id_Ruta, r.Id_Trabajador, r.Id_Agencia, Id_Vehiculo, sum(m3) m3, sum(Bultos) Bultos, warehouse_id +from Rutas r +join Tickets t using(Id_Ruta) +where r.Fecha >= timestampadd(day,-3,curdate()) +group by Id_Ruta, warehouse_id + +union all + +select ifnull(landing,Fecha), dayofmonth(Fecha) * 100000 + Id_Agencia ruta , count(*) as m3, Id_Agencia, null, null, sum(Bultos), warehouse_id +from Tickets +where Id_Ruta is null +and Fecha between timestampadd(day,-3,curdate()) and dayend(curdate()) +group by ruta, warehouse_id +) sub +left join Vehiculos using(Id_Vehiculo) +left join Agencias using(Id_Agencia) +left join Trabajadores using(Id_Trabajador) +left join warehouse w on w.id = sub.warehouse_id; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `sendTicket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `sendTicket`(vDate DATE) +BEGIN + IF vDate IS NULL THEN + SET vDate = AYER(); + END IF; + + INSERT INTO mail (`to`, `reply_to`, subject,text) + SELECT IFNULL(c.`e-mail`,CONCAT(u.name,'@verdnatura.es')), + CONCAT(u.name,'@verdnatura.es'), + CONCAT('Albaran ',Id_Ticket), +CONCAT('Estimado cliente: + +Aquí tiene el enlace a su albarán. + +https://www.verdnatura.es/#!form=ecomerce/ticket&ticket=',Id_Ticket, +' + +Estamos en periodo de pruebas para este nuevo método. En el caso de que tenga problemas para acceder a su albarán, responda a este correo explicando los detalles. + +Estamos trabajando para mejorar el acceso a sus documentos.Le agradecemos su colaboración. + +Reciba un muy cordial saludo, + +',tr.nombre, ' ', tr.apellidos,' +',u.name,'@verdnatura.es + +Dpto. Comercial') + FROM Tickets t + JOIN Clientes c USING(Id_Cliente) + JOIN Trabajadores tr ON tr.Id_Trabajador = c.Id_Trabajador + JOIN account.user u ON tr.user_id = u.id + WHERE vDate = DATE(t.Fecha); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `splitAnthuriums2016` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `splitAnthuriums2016`() +BEGIN + +DECLARE vStartingDate DATETIME DEFAULT '2016-10-18'; +DECLARE vEndingDate DATETIME DEFAULT '2016-10-31 23:59:00'; +DECLARE vMyTicket INT; +DECLARE vNewTicket INT; +DECLARE SILLA_PCA INT DEFAULT 44; +DECLARE done INT DEFAULT 0; + +DECLARE rs CURSOR FOR +SELECT DISTINCT Id_Ticket +FROM Movimientos m +JOIN Tickets t using(Id_Ticket) +JOIN Articles a using(Id_Article) +JOIN Tipos tp using(tipo_id) +WHERE t.Fecha between vStartingDate and vEndingDate +AND warehouse_id = 1 +AND + ( + Id_Tipo = 'ANT' + OR + ( Id_Article = 100 + AND + Concepte LIKE 'ANT%') + ); + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +OPEN rs; + +FETCH rs INTO vMyTicket; + + + +WHILE NOT done DO + + + INSERT INTO Tickets(Id_Cliente + , warehouse_id + , Fecha + , Alias + , Id_Consigna + , Id_Trabajador + , Id_Ruta + , empresa_id + , Id_Agencia + , landing) + SELECT Id_Cliente + , SILLA_PCA as warehouse_id + , Fecha + , Alias + , Id_Consigna + , Id_Trabajador + , Id_Ruta + , empresa_id + , Id_Agencia + , landing + FROM Tickets + WHERE Id_Ticket = vMyTicket; + + SELECT LAST_INSERT_ID() INTO vNewTicket; + + -- SELECT vMyTicket, vNewTicket; SET done = 1; + UPDATE Movimientos m + JOIN Articles a using(Id_Article) + JOIN Tipos tp using(tipo_id) + SET Id_Ticket = vNewTicket + WHERE Id_Ticket = vMyTicket + AND ( + Id_Tipo = 'ANT' + OR + ( m.Id_Article = 100 + AND + Concepte LIKE 'ANT%') + ); + + FETCH rs INTO vMyTicket; + +END WHILE; + +CLOSE rs; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `splitHeliconias2016` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `splitHeliconias2016`() +BEGIN + +DECLARE vStartingDate DATETIME DEFAULT '2016-10-18'; +DECLARE vEndingDate DATETIME DEFAULT '2016-10-31 23:59:00'; +DECLARE vMyTicket INT; +DECLARE vNewTicket INT; +DECLARE SILLA_PCA INT DEFAULT 44; +DECLARE done INT DEFAULT 0; + +DECLARE rs CURSOR FOR +SELECT DISTINCT Id_Ticket +FROM Movimientos m +JOIN Compres c ON Id_Entrada IN (100461, 100929) AND c.Id_Article = m.Id_Article +JOIN Tickets t using(Id_Ticket) +WHERE t.Fecha between vStartingDate and vEndingDate +AND warehouse_id = 1; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +OPEN rs; + +FETCH rs INTO vMyTicket; + + + +WHILE NOT done DO + + + INSERT INTO Tickets(Id_Cliente + , warehouse_id + , Fecha + , Alias + , Id_Consigna + , Id_Trabajador + , Id_Ruta + , empresa_id + , Id_Agencia + , landing) + SELECT Id_Cliente + , SILLA_PCA as warehouse_id + , Fecha + , Alias + , Id_Consigna + , Id_Trabajador + , Id_Ruta + , empresa_id + , Id_Agencia + , landing + FROM Tickets + WHERE Id_Ticket = vMyTicket; + + SELECT LAST_INSERT_ID() INTO vNewTicket; + + -- SELECT vMyTicket, vNewTicket; SET done = 1; + UPDATE Movimientos m + JOIN Compres c ON Id_Entrada IN (100461, 100929) AND c.Id_Article = m.Id_Article + SET Id_Ticket = vNewTicket + WHERE Id_Ticket = vMyTicket + ; + + FETCH rs INTO vMyTicket; + +END WHILE; + +CLOSE rs; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `splitOrquideas2016` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `splitOrquideas2016`() +BEGIN + +DECLARE vStartingDate DATETIME DEFAULT '2016-10-18'; +DECLARE vEndingDate DATETIME DEFAULT '2016-10-31 23:59:00'; +DECLARE vMyTicket INT; +DECLARE vNewTicket INT; +DECLARE SILLA_PCA INT DEFAULT 44; +DECLARE done INT DEFAULT 0; + +DECLARE rs CURSOR FOR +SELECT DISTINCT Id_Ticket +FROM Movimientos m +JOIN Tickets t using(Id_Ticket) +JOIN Articles a using(Id_Article) +JOIN Tipos tp using(tipo_id) +WHERE t.Fecha between vStartingDate and vEndingDate +AND warehouse_id = 1 +AND + ( + Id_Tipo = 'CYM' + OR + Id_Tipo = 'ORQ' + OR + ( Id_Article = 100 + AND + Concepte LIKE 'CYM%') + ); + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +OPEN rs; + +FETCH rs INTO vMyTicket; + + + +WHILE NOT done DO + + + INSERT INTO Tickets(Id_Cliente + , warehouse_id + , Fecha + , Alias + , Id_Consigna + , Id_Trabajador + , Id_Ruta + , empresa_id + , Id_Agencia + , landing) + SELECT Id_Cliente + , SILLA_PCA as warehouse_id + , Fecha + , Alias + , Id_Consigna + , Id_Trabajador + , Id_Ruta + , empresa_id + , Id_Agencia + , landing + FROM Tickets + WHERE Id_Ticket = vMyTicket; + + SELECT LAST_INSERT_ID() INTO vNewTicket; + + -- SELECT vMyTicket, vNewTicket; SET done = 1; + UPDATE Movimientos m + JOIN Articles a using(Id_Article) + JOIN Tipos tp using(tipo_id) + SET Id_Ticket = vNewTicket + WHERE Id_Ticket = vMyTicket + AND ( + Id_Tipo = 'CYM' + OR + Id_Tipo = 'ORQ' + OR + ( Id_Article = 100 + AND + Concepte LIKE 'CYM%') + ); + + FETCH rs INTO vMyTicket; + +END WHILE; + +CLOSE rs; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `splitRamos2016` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `splitRamos2016`() +BEGIN + +DECLARE vStartingDate DATETIME DEFAULT '2016-10-21'; +DECLARE vEndingDate DATETIME DEFAULT '2016-10-31 23:59:00'; +DECLARE vMyTicket INT; +DECLARE vNewTicket INT; +DECLARE SILLA_PCA INT DEFAULT 44; +DECLARE done INT DEFAULT 0; +DECLARE vLinesNotToChange INT; + +DECLARE rs CURSOR FOR +SELECT DISTINCT Id_Ticket + FROM Movimientos m + JOIN + ( + SELECT DISTINCT Id_Article + FROM Compres c + JOIN Entradas e on c.Id_Entrada = e.Id_Entrada + JOIN travel tr on tr.id = travel_id + WHERE landing between vStartingDate and vEndingDate + AND warehouse_id = 44 + AND Id_Proveedor = 850 + ) c on c.Id_Article = m.Id_Article + JOIN Tickets t using(Id_Ticket) + WHERE t.Fecha between vStartingDate and vEndingDate + AND warehouse_id = 1 + ; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +OPEN rs; + +FETCH rs INTO vMyTicket; + + + +WHILE NOT done DO + + SELECT COUNT(*) + INTO vLinesNotToChange + FROM Movimientos m + LEFT JOIN + ( + SELECT DISTINCT Id_Article + FROM Compres c + JOIN Entradas e on c.Id_Entrada = e.Id_Entrada + JOIN travel tr on tr.id = travel_id + WHERE landing between vStartingDate and vEndingDate + AND warehouse_id = 44 + AND Id_Proveedor = 850 + ) c on c.Id_Article = m.Id_Article + WHERE Id_Ticket = vMyTicket + AND c.Id_Article IS NULL; + + IF vLinesNotToChange THEN + + INSERT INTO Tickets(Id_Cliente + , warehouse_id + , Fecha + , Alias + , Id_Consigna + , Id_Trabajador + , Id_Ruta + , empresa_id + , Id_Agencia + , landing) + SELECT Id_Cliente + , SILLA_PCA as warehouse_id + , Fecha + , Alias + , Id_Consigna + , Id_Trabajador + , Id_Ruta + , empresa_id + , Id_Agencia + , landing + FROM Tickets + WHERE Id_Ticket = vMyTicket; + + SELECT LAST_INSERT_ID() INTO vNewTicket; + + -- SELECT vMyTicket, vNewTicket; SET done = 1; + UPDATE Movimientos m + JOIN + ( + SELECT DISTINCT Id_Article + FROM Compres c + JOIN Entradas e on c.Id_Entrada = e.Id_Entrada + JOIN travel tr on tr.id = travel_id + WHERE landing between vStartingDate and vEndingDate + AND warehouse_id = 44 + AND Id_Proveedor = 850 + ) c on c.Id_Article = m.Id_Article + SET Id_Ticket = vNewTicket + WHERE Id_Ticket = vMyTicket; + + ELSE + + UPDATE Tickets + SET warehouse_id = 44 + WHERE Id_Ticket = vMyTicket; + + END IF; + + + FETCH rs INTO vMyTicket; + +END WHILE; + +CLOSE rs; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `sql_query` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = latin1 */ ; +/*!50003 SET character_set_results = latin1 */ ; +/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `sql_query`(IN v_sql TEXT) +BEGIN + SET @v_sql = v_sql; + + PREPARE stmt FROM @v_sql; + EXECUTE stmt; + DEALLOCATE PREPARE stmt; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `subordinate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `subordinate`( IN idWORKER INTEGER,IN CasoBase BOOL) +BEGIN + DECLARE auxWorker INT; + DECLARE vCompanyId INT; + + SELECT empresa_id + INTO vCompanyId + FROM Trabajadores + WHERE Id_Trabajador = idWORKER; + + IF vCompanyId = 1381 THEN -- ORNAMENTALES + + DROP TABLE IF EXISTS subordinate; + CREATE TABLE subordinate + (INDEX (Id_Trabajador)) ENGINE = MEMORY + SELECT Id_Trabajador,TRUE visited,0 boss + FROM Trabajadores + WHERE empresa_id = vCompanyId; + + ELSE + + + /* PAK 23/05/2016 + + Guardia de domingos + + Los domingos viene Fran a hacer de comercial y necesita ver todos los radares + + + + IF dayofweek(curdate()) = 1 and idWORKER = 43 then -- Domingo y Fran Natek + + DROP TABLE IF EXISTS subordinate; + + CREATE TABLE subordinate + (INDEX (Id_Trabajador)) ENGINE = MEMORY + SELECT Id_Trabajador,TRUE visited,0 boss + FROM Trabajadores; + + + else + */ + + IF CasoBase THEN + SET @@max_sp_recursion_depth = 5 ; + DROP TABLE IF EXISTS subordinate; + CREATE TABLE subordinate + (INDEX (Id_Trabajador)) ENGINE = MEMORY + SELECT idWORKER Id_Trabajador,TRUE visited,0 boss; + END IF; + + INSERT INTO subordinate + SELECT Id_Trabajador,0,idWORKER FROM Trabajadores WHERE boss = idWORKER; + IF (SELECT COUNT(*) FROM subordinate WHERE visited = 0 AND idWORKER = boss LIMIT 1) > 0 THEN + SELECT Id_Trabajador into auxWorker FROM subordinate WHERE visited = 0 AND idWORKER = boss LIMIT 1; + REPEAT + CALL subordinate(auxWorker,FALSE); + UPDATE subordinate SET visited = TRUE WHERE Id_Trabajador = auxWorker; + SET auxWorker = 0; + SELECT Id_Trabajador into auxWorker FROM subordinate WHERE visited = 0 AND idWORKER = boss LIMIT 1; + UNTIL auxWorker = 0 + END REPEAT; + END IF; + + /* + end if; + */ + + END IF; + + IF idWorker = 2 THEN + INSERT INTO subordinate(Id_Trabajador,visited,boss) VALUES (2,TRUE,2); + -- INSERT INTO subordinate(Id_Trabajador,visited,boss) VALUES (43,TRUE,2); + END IF; + + /* + IF CasoBase THEN + SELECT * FROM subordinate; + END IF;*/ + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `subordinate2` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `subordinate2`( IN idWORKER INTEGER,IN CasoBase BOOL) +BEGIN + DECLARE auxWorker INT; + DECLARE vCompanyId INT; + + SELECT empresa_id + INTO vCompanyId + FROM Trabajadores + WHERE Id_Trabajador = idWORKER; + + IF vCompanyId = 1381 THEN -- ORNAMENTALES + + DROP TABLE IF EXISTS subordinate; + CREATE TABLE subordinate + (INDEX (Id_Trabajador)) ENGINE = MEMORY + SELECT Id_Trabajador,TRUE visited,0 boss + FROM Trabajadores + WHERE empresa_id = vCompanyId; + + ELSE + + + /* PAK 23/05/2016 + + Guardia de domingos + + Los domingos viene Fran a hacer de comercial y necesita ver todos los radares + + + + IF dayofweek(curdate()) = 1 and idWORKER = 43 then -- Domingo y Fran Natek + + DROP TABLE IF EXISTS subordinate; + + CREATE TABLE subordinate + (INDEX (Id_Trabajador)) ENGINE = MEMORY + SELECT Id_Trabajador,TRUE visited,0 boss + FROM Trabajadores; + + + else + */ + + IF CasoBase THEN + SET @@max_sp_recursion_depth = 5 ; + DROP TABLE IF EXISTS subordinate; + CREATE TABLE subordinate + (INDEX (Id_Trabajador)) ENGINE = MEMORY + SELECT idWORKER Id_Trabajador,TRUE visited,0 boss; + END IF; + + INSERT INTO subordinate + SELECT Id_Trabajador,0,idWORKER FROM Trabajadores WHERE boss = idWORKER; + IF (SELECT COUNT(*) FROM subordinate WHERE visited = 0 AND idWORKER = boss LIMIT 1) > 0 THEN + SELECT Id_Trabajador into auxWorker FROM subordinate WHERE visited = 0 AND idWORKER = boss LIMIT 1; + REPEAT + CALL subordinate(auxWorker,FALSE); + UPDATE subordinate SET visited = TRUE WHERE Id_Trabajador = auxWorker; + SET auxWorker = 0; + SELECT Id_Trabajador into auxWorker FROM subordinate WHERE visited = 0 AND idWORKER = boss LIMIT 1; + UNTIL auxWorker = 0 + END REPEAT; + END IF; + + /* + end if; + */ + + END IF; + + IF idWorker = 2 THEN + INSERT INTO subordinate(Id_Trabajador) VALUES (2); + END IF; + + /* + IF CasoBase THEN + SELECT * FROM subordinate; + END IF;*/ + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `suppliersDebt` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `suppliersDebt`() +BEGIN + + SELECT abbreviation as Empresa, Proveedor, Euros, empresa_id, proveedor_id + FROM + ( + SELECT empresa_id, proveedor_id, cast(sum(Euros) AS DECIMAL(10,2)) as Euros + FROM + ( + SELECT empresa_id, proveedor_id, -1 * cantidad as Euros + FROM recibida_vencimiento rv + INNER JOIN recibida r ON r.id = rv.recibida_id + WHERE r.fecha > '2014-12-31' + + UNION ALL + + SELECT empresa_id, id_proveedor, importe + FROM pago + WHERE fecha > '2014-12-31' + ) sub + GROUP BY empresa_id, proveedor_id + ) sub2 + JOIN Proveedores p ON p.Id_Proveedor = sub2.proveedor_id + JOIN empresa e ON e.id = sub2.empresa_id + ; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `tarjetas_credito_0` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `tarjetas_credito_0`() +BEGIN + + DECLARE MyMaxID INT; + + SELECT MAX(id) FROM credit INTO MyMaxID; + + UPDATE Clientes + SET Credito = 0 + WHERE pay_met_id = 5 -- TARJETA + ; + + UPDATE credit + SET Id_Trabajador = 20 + WHERE id > MyMaxID; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `tickets_in_a_week` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `tickets_in_a_week`(IN intWEEK INT(2), IN intYEAR INT(4), IN idART INT(11), IN intWH INT(2)) +BEGIN + DECLARE period INT(6) DEFAULT intYEAR * 100 + intWEEK; + DECLARE datINI DATE; + DECLARE datFIN DATE; + + -- Seleccionamos la fecha minima/maxima del periodo que vamos a consultar + SELECT MIN(`date`) INTO datINI FROM vn2008.`time` t WHERE t.period = period; + SELECT TIMESTAMP(MAX(`date`),'23:59:59') INTO datFIN FROM vn2008.`time` t WHERE t.period = period; + + SELECT T.Fecha, + T.Id_Ticket, + M.Cantidad, + M.Id_Article, + T.Alias, + M.PrecioFijado, + M.Preu, + M.Id_Movimiento, + T.warehouse_id, + W.name, + ticket_state(Factura, PedidoImpreso, Etiquetasemitidas, blocked) as Estado, + M.Descuento + FROM Movimientos M + INNER JOIN Tickets T using(Id_Ticket) + LEFT JOIN warehouse W ON W.id = T.warehouse_id + WHERE M.Id_Article = idART AND T.Fecha BETWEEN datINI and datFIN + AND IF(intWH = 0, W.comisionantes, intWH =T.warehouse_id) + ORDER BY T.Fecha, T.Id_Ticket; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `tickets_in_a_week_by_type` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `tickets_in_a_week_by_type`(IN intWEEK INT(2), IN intYEAR INT(4), IN idART INT(11), IN intWH INT(2)) +BEGIN + + DECLARE intTIPO INT; + DECLARE period INT(6) DEFAULT intYEAR * 100 + intWEEK; + DECLARE datINI DATE; + DECLARE datFIN DATE; + + SELECT tipo_id INTO intTIPO FROM Articles WHERE Id_Article = idART; + + -- Seleccionamos la fecha minima/maxima del periodo que vamos a consultar + SELECT MIN(`date`) INTO datINI FROM vn2008.`time` t WHERE t.period = period; + SELECT TIMESTAMP(MAX(`date`),'23:59:59') INTO datFIN FROM vn2008.`time` t WHERE t.period = period; + + SELECT T.Fecha, + T.Id_Ticket, + M.Cantidad, + M.Id_Article, + T.Alias, + M.PrecioFijado, + M.Preu, + M.Id_Movimiento, + T.warehouse_id, + W.name, + ticket_state(Factura, PedidoImpreso, Etiquetasemitidas, blocked) as Estado, + M.Descuento + FROM Movimientos M + JOIN Articles A using(Id_Article) + INNER JOIN Tickets T ON M.Id_Ticket = T.Id_Ticket + LEFT JOIN warehouse W ON W.id = T.warehouse_id + WHERE A.tipo_id = intTIPO + AND T.Fecha between datINI and datFIN + AND IF(intWH = 0, W.comisionantes, intWH =T.warehouse_id) + ORDER BY T.Fecha, T.Id_Ticket; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `tickets_week_joined` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `tickets_week_joined`(IN intWEEK INT(2), IN intYEAR INT(4), IN idART INT(11), IN intWhJoined INT(2)) +BEGIN + + + DECLARE datSTART date; + DECLARE datEND date; + + + SET datSTART = TIMESTAMPADD(YEAR,intYEAR,'0000-01-01'); + SET datSTART = TIMESTAMPADD(WEEK, intWEEK-1,datSTART); + SET datSTART = TIMESTAMPADD(DAY,-1 * WEEKDAY(datSTART),datSTART); + + + +-- Año 2014 +/* +IF datSTART = '2013-12-31' THEN + + SET datSTART = '2013-12-30' ; + +END IF; +*/ + + + SET datEND = TIMESTAMPADD(DAY,7,datSTART); + + + + SELECT T.Fecha, + T.Id_Ticket, + M.Cantidad, + M.Id_Article, + T.Alias, + M.PrecioFijado, + M.Preu, + M.Id_Movimiento, + T.warehouse_id, + wa.alias `name`, + ticket_state(Factura, PedidoImpreso, Etiquetasemitidas, blocked) as Estado, + M.Descuento + FROM Movimientos M + JOIN Tickets T ON M.Id_Ticket = T.Id_Ticket + JOIN warehouse_joined wj ON wj.warehouse_id = T.warehouse_id + JOIN warehouse_alias wa ON wa.warehouse_alias_id = wj.warehouse_alias_id + WHERE M.Id_Article = idART + AND T.Fecha between datSTART and datEND + AND intWhJoined IN (0,wj.warehouse_alias_id) + ORDER BY T.Fecha, T.Id_Ticket; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `tickets_week_type_joined` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `tickets_week_type_joined`(IN intWEEK INT(2), IN intYEAR INT(4), IN idART INT(11), IN intWhJoined INT(2)) +BEGIN + + DECLARE intTIPO INT; + DECLARE datSTART date; + DECLARE datEND date; + + SELECT tipo_id INTO intTIPO FROM Articles WHERE Id_Article = idART; + + SET datSTART = TIMESTAMPADD(YEAR,intYEAR,'0000-01-01'); + SET datSTART = TIMESTAMPADD(WEEK, intWEEK-1,datSTART); + SET datSTART = TIMESTAMPADD(DAY,-1 * WEEKDAY(datSTART),datSTART); + + SET datEND = TIMESTAMPADD(DAY,7,datSTART); + + + + SELECT T.Fecha, + T.Id_Ticket, + M.Cantidad, + M.Id_Article, + T.Alias, + M.PrecioFijado, + M.Preu, + M.Id_Movimiento, + T.warehouse_id, + wa.alias `name`, + ticket_state(Factura, PedidoImpreso, Etiquetasemitidas, blocked) as Estado, + M.Descuento + FROM Movimientos M + JOIN Articles A using(Id_Article) + INNER JOIN Tickets T ON M.Id_Ticket = T.Id_Ticket + JOIN warehouse_joined wj ON wj.warehouse_id = T.warehouse_id + JOIN warehouse_alias wa ON wa.warehouse_alias_id = wj.warehouse_alias_id + WHERE A.tipo_id = intTIPO + AND T.Fecha between datSTART and datEND + AND intWhJoined IN (0,wj.warehouse_alias_id) + ORDER BY T.Fecha, T.Id_Ticket; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_canarias` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_canarias`(IN v_entrada BIGINT, IN v_ticket BIGINT) +BEGIN + + +set @w := 1; +set @tr := 0; +set @e := v_entrada; +set @t := v_ticket; + +select id, IF(warehouse_id_out = 13, @w, warehouse_id_out) into @tr, @w from travel join Entradas on id = travel_id where Id_Entrada = @e; + +update travel tr join Entradas e on tr.id = e.travel_id set warehouse_id_out = 13 where Id_Entrada = @e and warehouse_id_out <> 13; + +update Tickets set warehouse_id = @w where Id_Ticket = @t; + +REPLACE order_Tickets(order_id, Id_Ticket) VALUES(48,@t); + +delete mc.* from Movimientos_componentes mc join Movimientos m using(Id_Movimiento) where Id_Ticket = @t; + +insert into Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) +select Id_Movimiento, 28, nz(Costefijo) +from Movimientos m +join Compres c on Id_Entrada = @e and c.Id_Article = m.Id_Article +where Id_Ticket = @t +on DUPLICATE KEY UPDATE Valor = nz(Costefijo) ; + +insert into Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) +select Id_Movimiento, 29, Preu - nz(Costefijo) +from Movimientos m +join Compres c on Id_Entrada = @e and c.Id_Article = m.Id_Article +where Id_Ticket = @t +on DUPLICATE KEY UPDATE Valor = Preu - nz(Costefijo) ; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_componentes` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_componentes`(IN idTICKET BIGINT) +BEGIN + +SET @a:=0; + +SELECT IF(@a = Id_Movimiento, NULL, Concepte) as Concepte + ,IF(@a = Id_Movimiento, NULL, Cantidad) as Cantidad + ,IF(@a = Id_Movimiento, NULL, Id_Article) as Id_Article + , @a:= Id_Movimiento as IdM + , Id_Article as IdA + , Componente + , Valor + , Importe + , base + , margen +FROM +( +SELECT m.Id_Movimiento + , m.Concepte + , tc.Componente + , m.Cantidad + , mc.Valor + , round(m.Cantidad * mc.Valor,3) as Importe + , Id_Article + , base + , margen +FROM vn2008.Movimientos m +JOIN vn2008.Movimientos_componentes mc using(Id_Movimiento) +INNER JOIN bi.tarifa_componentes tc ON mc.Id_Componente = tc.Id_Componente +INNER JOIN bi.tarifa_componentes_series tcs using(tarifa_componentes_series_id) +WHERE m.Id_Ticket = idTICKET +ORDER BY Id_Movimiento +) sub; + + + + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Ticket_from_Entry` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Ticket_from_Entry`(IN IdEntrada INT(11), IN IdCliente INT(6), IN IdEmpresa INT(4), IN buying_quote DOUBLE, IN Ratio DOUBLE) +BEGIN + + DECLARE idTICKET INT(11); + + INSERT INTO Tickets(Id_Cliente, warehouse_id, Fecha, Alias, Id_Agencia, Id_Consigna, Id_Trabajador, empresa_id, Etiquetasemitidas, Localizacion) + SELECT IdCliente, 13, shipment, Consignatario, TR.agency_id, Id_Consigna, 20, IdEmpresa, TRUE, IdEntrada + FROM Entradas E + JOIN travel TR ON TR.id = E.travel_id + JOIN (SELECT Consignatario, Id_Consigna FROM Consignatarios WHERE Id_Cliente = IdCliente AND Predeterminada LIMIT 1) Consigna + WHERE Id_Entrada = IdEntrada; + -- JOIN Agencias AG ON AG.Id_Agencia = TR.agency_id + + SELECT LAST_INSERT_ID() INTO idTICKET; + + INSERT INTO Movimientos(Id_Ticket, Id_Article, Concepte, Cantidad, Preu, PrecioFijado) + SELECT idTICKET, Id_Article, Article, round(Cantidad * IF(Cantidad > round(1+ (1/buying_quote),0),buying_quote,1), 0), ROUND(Costefijo * Ratio,2), TRUE + FROM Compres c + JOIN Articles a using(Id_Article) + JOIN Tipos t on t.tipo_id = a.tipo_id + JOIN reinos r on r.id = t.reino_id + WHERE Id_Entrada = idEntrada + AND r.display <> 0 + AND Cantidad * buying_quote > 1; + + SELECT idTICKET; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Ticket_from_Entry_cursor` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Ticket_from_Entry_cursor`(IN IdEmpresa INt(4), IN IdCliente INT(5), IN buying_quote DOUBLE, IN Ratio DOUBLE) +BEGIN + +DECLARE done BIT DEFAULT 0; +DECLARE IdEntrada INT(10); + +-- Declaro el cursor para las entradas +DECLARE cursor_entradas CURSOR FOR +SELECT Id_Entrada +FROM Entradas E +JOIN travel TR ON TR.id = E.travel_id +WHERE shipment BETWEEN '2013-04-01' AND '2013-04-30' +AND warehouse_id = 17 +and warehouse_id_out = 1; + + + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +OPEN cursor_entradas; + +REPEAT + + FETCH cursor_entradas INTO IdEntrada; + + CALL Ticket_from_Entry(IdEntrada, IdCliente, IdEmpresa, buying_quote, Ratio); + + +UNTIL done END REPEAT; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_iva` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_iva`(billing_date DATE) +BEGIN +/** + * Calcula la base imponible, el IVA y el recargo de equivalencia para + * un conjunto de tickets. + * + * @param table ticket_tmp(ticket_id) Tabla con el listado de tickets + * @param billing_date Fecha de facturación + * + * @return table ticket_iva + **/ + + DECLARE clean CONDITION FOR SQLSTATE 'HY000'; + DECLARE CONTINUE HANDLER FOR clean + BEGIN + DROP TEMPORARY TABLE IF EXISTS iva_group; + DROP TEMPORARY TABLE IF EXISTS iva_tax; + END; + + SIGNAL clean; + DROP TEMPORARY TABLE IF EXISTS ticket_iva; + + SET billing_date = IFNULL(billing_date, CURDATE()); + + -- Calcula el tipo de IVA para cada grupo en cada país. + + CREATE TEMPORARY TABLE iva_group + (INDEX idx USING HASH (Id_Pais, iva_group_id)) + ENGINE = MEMORY + SELECT * FROM ( + SELECT Id_Pais, iva_group_id, c.tipo + FROM iva_group_codigo g + JOIN iva_codigo c ON g.iva_codigo_id = c.id + JOIN iva_tipo t ON t.id = c.iva_tipo_id + WHERE date <= billing_date + ORDER BY date DESC + ) t + GROUP BY Id_Pais, iva_group_id; + + -- Calcula el impuesto para cada tipo de IVA en cada país. + + CREATE TEMPORARY TABLE iva_tax + (INDEX idx USING HASH (Id_Pais, tipo)) + ENGINE = MEMORY + SELECT * FROM ( + SELECT Id_Pais, tipo, iva * 0.01 AS iva, recargo * 0.01 AS re + FROM iva_codigo + JOIN iva_tipo t ON t.id = iva_tipo_id + WHERE Fecha <= billing_date -- AND iva jgf 2016-06-09 fallaba con los articulos exentos de iva + ORDER BY fecha DESC, recargo DESC + ) t + GROUP BY Id_Pais, tipo; + + -- Calcula el IVA y el recargo desglosado para cada ticket. + + CREATE TEMPORARY TABLE ticket_iva + (INDEX idx USING HASH (ticket_id)) + ENGINE = MEMORY + SELECT ticket_id, b.tipo, bi, IF(has_iva, red(bi * iva), 0) iva, IF(has_re, red(bi * i.re), 0) re + FROM ( + SELECT ticket_id, g.Id_Pais, g.tipo + ,SUM(red(m.Cantidad * m.Preu * (100 - m.Descuento) / 100)) AS bi + ,NOT(VIES AND p.pais_id <> c.Id_Pais) AS has_iva + ,RE != FALSE AS has_re + FROM ticket_tmp i + JOIN Tickets t ON t.Id_ticket = i.ticket_id + JOIN Clientes c ON c.Id_Cliente = t.Id_Cliente + JOIN Proveedores p ON p.Id_Proveedor = t.empresa_id + JOIN Movimientos m ON m.Id_Ticket = i.ticket_id + JOIN Articles a USING(Id_Article) + JOIN iva_group g ON g.Id_Pais = p.pais_id AND g.iva_group_id = a.iva_group_id + GROUP BY ticket_id, tipo + ) b + JOIN iva_tax i ON i.Id_Pais = b.Id_Pais AND i.tipo = b.tipo; + + SIGNAL clean; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_locator` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_locator`(IN date_ DATETIME,IN wh_ INT, IN days TINYINT) +BEGIN + DECLARE DATEFEC DATE DEFAULT CURDATE(); + DECLARE v_date_start DATETIME DEFAULT TIMESTAMPADD(MONTH, -2, CURDATE()); + DECLARE v_date_end DATETIME DEFAULT TIMESTAMP(DATEFEC,'23:59:59'); + DECLARE v_date_future DATETIME DEFAULT TIMESTAMPADD(DAY,days,v_date_end); + + DROP TEMPORARY TABLE IF EXISTS `Locator`; + +-- usar ticket_total crear ticket_tmp(ticket_id) + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; + CREATE TEMPORARY TABLE `ticket_tmp` + ENGINE = MEMORY + SELECT Id_Ticket ticket_id FROM Tickets t + WHERE t.Factura IS NULL + AND t.Fecha BETWEEN v_date_start AND v_date_future; + + CALL ticket_total(); + + DROP TEMPORARY TABLE IF EXISTS ticket_total2; + CREATE TEMPORARY TABLE `ticket_total2` + ENGINE = MEMORY + SELECT t.*,s.`order` state_order + FROM ticket_total t + LEFT JOIN Tickets t1 ON t1.Id_Ticket = t.ticket_id + LEFT JOIN Tickets_state ts ON ts.Id_Ticket = t1.Id_Ticket + LEFT JOIN vncontrol.inter i ON ts.inter_id = i.inter_id + LEFT JOIN state s ON s.id = i.state_id + LEFT JOIN expeditions e ON e.ticket_id = t.ticket_id + LEFT JOIN Agencias a ON a.Id_Agencia = t1.Id_Agencia + LEFT JOIN agency ag ON ag.agency_id = a.agency_id + LEFT JOIN agency_warehouse aw ON aw.agency_id = a.agency_id AND aw.warehouse_id = wh_ + -- para pte recogida + LEFT JOIN warehouse w_out on w_out.id = t1.warehouse_id + LEFT JOIN warehouse w ON w.id = wh_ + LEFT JOIN warehouse_pickup wp on wp.agency_id = t1.Id_Agencia and wp.warehouse_id = wh_ + + WHERE /*t1.Fecha BETWEEN TIMESTAMPADD(DAY,-5,DATE(date_)) AND TIMESTAMPADD(DAY,days,DATE(date_)) + AND */ IFNULL(aw.Vista,a.Vista) > 0 + AND ((t1.Anotadoencaja = FALSE + AND t1.Etiquetasemitidas = FALSE + AND e.ticket_id IS NULL + AND t1.warehouse_id = wh_ + AND IFNULL(s.alert_level,0) <= 3 + ) + OR (ts.state_name = 'Pte Recogida' + AND wp.warehouse_id IS NOT NULL)); + + DROP TEMPORARY TABLE IF EXISTS tmp.risk; + CREATE TEMPORARY TABLE tmp.risk + SELECT Id_Cliente, SUM(amount) risk + FROM Clientes c + JOIN ( + SELECT customer_id, SUM(amount) amount + FROM bi.customer_risk + GROUP BY customer_id + UNION ALL + SELECT Id_Cliente, SUM(Entregado) + FROM Recibos + WHERE Fechacobro > v_date_end + GROUP BY Id_Cliente + UNION ALL + SELECT t.Id_Cliente, SUM(total) + FROM ticket_total tt + JOIN Tickets t ON tt.ticket_id = t.Id_Ticket + WHERE t.Fecha <= v_date_end + GROUP BY t.Id_Cliente + UNION ALL + SELECT t.customer_id, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)) + FROM hedera.tpv_transaction t + WHERE t.receipt_id IS NULL + AND t.status = 'ok' + GROUP BY t.customer_id + ) t ON c.Id_Cliente = t.customer_id + WHERE c.activo != FALSE + GROUP BY c.Id_Cliente; + + CREATE TEMPORARY TABLE `Locator` + ENGINE = MEMORY + SELECT Congelado, Credito, risk Riesgo, Greuge, T.*,IFNULL(state_name,'libre') AS Estado, + Codigotrabajador, DATE(T.Fecha) AS Fecha_Simple, Averiguar_ComercialCliente_IdTicket(T.Id_Ticket) AS Comercial,C.calidad,UCASE(LEFT(w_out.`name`,5)) w_out + FROM Clientes C + INNER JOIN + ( + SELECT + t.Id_Ticket, t.Id_Cliente, t.warehouse_id, t.Fecha, t.Alias, + NULL Notas, t.Factura, t.factura_id, t.Anotadoencaja, t.Id_Consigna, t.Id_Trabajador, + t.Observaciones, t.Firmado, t.Etiquetasemitidas, t.PedidoImpreso, t.Bultos, t.Localizacion, + t.Hora, t.odbc_date, t.blocked, t.Solucion, t.Id_Ruta, t.Prioridad, t.priority, + t.empresa_id, t.Id_Agencia, + CS.Consignatario, IFNULL(aw.Vista,a.Vista) Vista,a.Agencia, DATEFEC AS Hora_MAX , + SUM(IF(Movimientos.OK = 0, 1, 0)) AS `lines`, + tt.total AS Importe, + IF(reino_id IN (5, 1), 0,tt.total) AS Plantas, + 0 AS inacabable,state_order, + CS.CODPOSTAL, CS.POBLACION, p.name PROVINCIA, a.Vista VistaTicket,p.zone + + FROM Tickets t + JOIN ticket_total2 tt ON tt.ticket_id = t.Id_Ticket + INNER JOIN Consignatarios CS USING(Id_Consigna) + LEFT JOIN province p USING(province_id) + LEFT JOIN Movimientos USING(Id_Ticket) + LEFT JOIN Articles on Movimientos.Id_Article = Articles.Id_Article + LEFT JOIN Tipos using(tipo_id) + LEFT JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia + LEFT JOIN agency ag ON ag.agency_id = a.agency_id + LEFT JOIN agency_warehouse aw ON aw.agency_id = a.agency_id AND aw.warehouse_id = wh_ + + GROUP BY t.Id_Ticket + ) T USING(Id_Cliente) + LEFT JOIN Tickets_state ts ON ts.Id_Ticket = T.Id_Ticket + LEFT JOIN Trabajadores Tb ON Tb.Id_Trabajador = T.Id_Trabajador + LEFT JOIN tmp.risk as Peligros USING(Id_Cliente) + JOIN warehouse w_out on w_out.id = T.warehouse_id + LEFT JOIN + ( + SELECT Id_Cliente, SUM(Importe) AS Greuge FROM Greuges + GROUP BY Id_Cliente + ) AS Agravios USING(Id_Cliente); + + + ALTER TABLE `Locator` ADD PRIMARY KEY(Id_Ticket); + + UPDATE `Locator` JOIN + ( + SELECT d.Id_Ticket from Tickets_dits d + JOIN Tickets t using(Id_Ticket) + LEFT JOIN Agencias a using(Id_Agencia) + LEFT JOIN expeditions e on e.ticket_id = d.Id_Ticket + WHERE Fecha BETWEEN CURDATE() AND TIMESTAMP(curdate(),'23:59:59') + AND idaccion_dits = 18 AND ticket_id is null + AND t.warehouse_id = 1 + AND NOT Etiquetasemitidas + AND d.ODBC_DATE < TIMESTAMPADD(HOUR,-2, now()) + AND Vista in (1,2)) sub using(Id_Ticket) + SET Observaciones = CONCAT('F5 PERDIDO ',IFNULL(Observaciones,'')); + + + -- CODIGO 100 + UPDATE `Locator` + JOIN Movimientos using(Id_Ticket) + SET Observaciones = 'CODIGO 100' + WHERE Id_Article = 100; + + + -- ENTRADAS + INSERT INTO `Locator`(Fecha_Simple, Id_Ticket, Agencia, Id_Cliente, Alias, PedidoImpreso, CodigoTrabajador, Fecha, Estado, Consignatario, Vista, PROVINCIA,Riesgo) + SELECT DISTINCT v_compres.shipment AS Fecha_Simple, v_compres.Id_Entrada AS Id_Ticket, warehouse.name, v_compres.Id_Proveedor, + v_compres.ref AS Alias, v_compres.Pedida AS PedidoImpreso, v_compres.Id_Trabajador AS CodigoTrabajador, v_compres.shipment AS Fecha, 0 AS problem, v_compres.ref AS Consignatario, 1, 'TRASLADO',0 + FROM v_compres + INNER JOIN warehouse ON v_compres.warehouse_id = warehouse.id + WHERE warehouse_id_out = wh_ AND v_compres.Confirmada = False + AND v_compres.shipment >= date_; + + + + + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; + DROP TEMPORARY TABLE IF EXISTS ticket_total; + DROP TEMPORARY TABLE IF EXISTS ticket_total2; + DROP TEMPORARY TABLE IF EXISTS tmp.risk; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_locatorbeta` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_locatorbeta`(IN date_ DATETIME,IN wh_ INT, IN days TINYINT) +BEGIN + DECLARE DATEFEC DATE DEFAULT CURDATE(); + DECLARE v_date_start DATETIME DEFAULT TIMESTAMPADD(MONTH, -2, CURDATE()); + DECLARE v_date_end DATETIME DEFAULT TIMESTAMP(DATEFEC,'23:59:59'); + DECLARE v_date_future DATETIME DEFAULT TIMESTAMPADD(DAY,days,v_date_end); + + DROP TEMPORARY TABLE IF EXISTS `Locator`; + +-- usar ticket_total crear ticket_tmp(ticket_id) + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; + CREATE TEMPORARY TABLE `ticket_tmp` + ENGINE = MEMORY + SELECT Id_Ticket ticket_id FROM Tickets t + WHERE t.Factura IS NULL + AND t.Fecha BETWEEN v_date_start AND v_date_future; + + CALL ticket_total(); + /* + DROP TEMPORARY TABLE IF EXISTS ticket_total2; + CREATE TEMPORARY TABLE `ticket_total2` + ENGINE = MEMORY + SELECT t.* FROM ticket_total t + LEFT JOIN Tickets t1 ON t1.Id_Ticket = t.ticket_id + LEFT JOIN Tickets_state ts ON ts.Id_Ticket = t1.Id_Ticket + LEFT JOIN vncontrol.inter i ON ts.inter_id = i.inter_id + LEFT JOIN state s ON s.id = i.state_id + LEFT JOIN expeditions e ON e.ticket_id = t.ticket_id + LEFT JOIN Agencias a ON a.Id_Agencia = t1.Id_Agencia + LEFT JOIN agency ag ON ag.agency_id = a.agency_id + LEFT JOIN agency_warehouse aw ON aw.agency_id = a.agency_id AND aw.warehouse_id = wh_ + -- para pte recogida + LEFT JOIN warehouse w_out on w_out.id = t1.warehouse_id + LEFT JOIN warehouse w ON w.id = wh_ + LEFT JOIN warehouse_pickup wp on wp.agency_id = t1.Id_Agencia and wp.warehouse_id = wh_ + + WHERE t1.Fecha BETWEEN TIMESTAMPADD(DAY,-5,DATE(date_)) AND TIMESTAMPADD(DAY,days,DATE(date_)) + AND IFNULL(aw.Vista,a.Vista) > 0 + AND ((t1.Anotadoencaja = FALSE + AND t1.Etiquetasemitidas = FALSE + AND e.ticket_id IS NULL + AND t1.warehouse_id = wh_ + AND IFNULL(s.order,0) < 2) + OR (ts.state_name = 'Pte Recogida' + AND wp.warehouse_id IS NOT NULL)); + */ + SELECT t.* FROM ticket_total t + LEFT JOIN Tickets t1 ON t1.Id_Ticket = t.ticket_id + LEFT JOIN Tickets_state ts ON ts.Id_Ticket = t1.Id_Ticket + LEFT JOIN vncontrol.inter i ON ts.inter_id = i.inter_id + LEFT JOIN state s ON s.id = i.state_id + LEFT JOIN expeditions e ON e.ticket_id = t.ticket_id + LEFT JOIN Agencias a ON a.Id_Agencia = t1.Id_Agencia + LEFT JOIN agency ag ON ag.agency_id = a.agency_id + LEFT JOIN agency_warehouse aw ON aw.agency_id = a.agency_id AND aw.warehouse_id = wh_ + -- para pte recogida + LEFT JOIN warehouse w_out on w_out.id = t1.warehouse_id + LEFT JOIN warehouse w ON w.id = wh_ + LEFT JOIN warehouse_pickup wp on wp.agency_id = t1.Id_Agencia and wp.warehouse_id = wh_ + + WHERE t1.Fecha BETWEEN TIMESTAMPADD(DAY,-5,DATE(date_)) AND TIMESTAMPADD(DAY,days,DATE(date_)) + AND IFNULL(aw.Vista,a.Vista) > 0 + AND ((t1.Anotadoencaja = FALSE + AND t1.Etiquetasemitidas = FALSE + AND e.ticket_id IS NULL)); + /* AND t1.warehouse_id = wh_ + AND IFNULL(s.order,0) < 2) + OR (ts.state_name = 'Pte Recogida' + AND wp.warehouse_id IS NOT NULL))*/ + /* + DROP TEMPORARY TABLE IF EXISTS tmp.risk; + CREATE TEMPORARY TABLE tmp.risk + SELECT Id_Cliente, SUM(amount) risk + FROM Clientes c + JOIN ( + SELECT customer_id, SUM(amount) amount + FROM bi.customer_risk + GROUP BY customer_id + UNION ALL + SELECT Id_Cliente, SUM(Entregado) + FROM Recibos + WHERE Fechacobro > v_date_end + GROUP BY Id_Cliente + UNION ALL + SELECT t.Id_Cliente, SUM(total) + FROM ticket_total tt + JOIN Tickets t ON tt.ticket_id = t.Id_Ticket + WHERE t.Fecha <= v_date_end + GROUP BY t.Id_Cliente + UNION ALL + SELECT t.customer_id, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)) + FROM hedera.tpv_transaction t + WHERE t.receipt_id IS NULL + AND t.status = 'ok' + GROUP BY t.customer_id + ) t ON c.Id_Cliente = t.customer_id + WHERE c.activo != FALSE + GROUP BY c.Id_Cliente; + + CREATE TEMPORARY TABLE `Locator` + ENGINE = MEMORY + SELECT Congelado, Credito, risk Riesgo, Greuge, T.*,IFNULL(state_name,'libre') AS Estado, + Codigotrabajador, DATE(T.Fecha) AS Fecha_Simple, Averiguar_ComercialCliente_IdTicket(T.Id_Ticket) AS Comercial,C.calidad,UCASE(LEFT(w_out.`name`,5)) w_out + FROM Clientes C + INNER JOIN + ( + SELECT + t.Id_Ticket, t.Id_Cliente, t.warehouse_id, t.Fecha, t.Alias, + NULL Notas, t.Factura, t.factura_id, t.Anotadoencaja, t.Id_Consigna, t.Id_Trabajador, + t.Observaciones, t.Firmado, t.Etiquetasemitidas, t.PedidoImpreso, t.Bultos, t.Localizacion, + t.Hora, t.odbc_date, t.blocked, t.Solucion, t.Id_Ruta, t.Prioridad, t.priority, + t.empresa_id, t.Id_Agencia, + CS.Consignatario, IFNULL(aw.Vista,a.Vista) Vista,a.Agencia, DATEFEC AS Hora_MAX , + SUM(IF(Movimientos.OK = 0, 1, 0)) AS `lines`, + tt.total AS Importe, + IF(reino_id IN (5, 1), 0,tt.total) AS Plantas, + 0 AS inacabable, + CS.CODPOSTAL, CS.POBLACION, p.name PROVINCIA, a.Vista VistaTicket,p.zone + + FROM Tickets t + JOIN ticket_total2 tt ON tt.ticket_id = t.Id_Ticket + INNER JOIN Consignatarios CS USING(Id_Consigna) + LEFT JOIN province p USING(province_id) + LEFT JOIN Movimientos USING(Id_Ticket) + LEFT JOIN Articles on Movimientos.Id_Article = Articles.Id_Article + LEFT JOIN Tipos using(tipo_id) + LEFT JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia + LEFT JOIN agency ag ON ag.agency_id = a.agency_id + LEFT JOIN agency_warehouse aw ON aw.agency_id = a.agency_id AND aw.warehouse_id = wh_ + + GROUP BY t.Id_Ticket + ) T USING(Id_Cliente) + LEFT JOIN Tickets_state ts ON ts.Id_Ticket = T.Id_Ticket + LEFT JOIN Trabajadores Tb ON Tb.Id_Trabajador = T.Id_Trabajador + LEFT JOIN tmp.risk as Peligros USING(Id_Cliente) + JOIN warehouse w_out on w_out.id = T.warehouse_id + LEFT JOIN + ( + SELECT Id_Cliente, SUM(Importe) AS Greuge FROM Greuges + GROUP BY Id_Cliente + ) AS Agravios USING(Id_Cliente); + + + ALTER TABLE `Locator` ADD PRIMARY KEY(Id_Ticket); + + UPDATE `Locator` JOIN + ( + SELECT d.Id_Ticket from Tickets_dits d + JOIN Tickets t using(Id_Ticket) + LEFT JOIN Agencias a using(Id_Agencia) + LEFT JOIN expeditions e on e.ticket_id = d.Id_Ticket + WHERE Fecha BETWEEN CURDATE() AND TIMESTAMP(curdate(),'23:59:59') + AND idaccion_dits = 18 AND ticket_id is null + AND t.warehouse_id = 1 + AND NOT Etiquetasemitidas + AND d.ODBC_DATE < TIMESTAMPADD(HOUR,-2, now()) + AND Vista in (1,2)) sub using(Id_Ticket) + SET Observaciones = CONCAT('F5 PERDIDO ',IFNULL(Observaciones,'')); + + + -- ENTRADAS + INSERT INTO `Locator`(Fecha_Simple, Id_Ticket, Agencia, Id_Cliente, Alias, PedidoImpreso, CodigoTrabajador, Fecha, Estado, Consignatario, Vista, PROVINCIA,Riesgo) + SELECT DISTINCT v_compres.shipment AS Fecha_Simple, v_compres.Id_Entrada AS Id_Ticket, warehouse.name, v_compres.Id_Proveedor, + v_compres.ref AS Alias, v_compres.Pedida AS PedidoImpreso, v_compres.Id_Trabajador AS CodigoTrabajador, v_compres.shipment AS Fecha, 0 AS problem, v_compres.ref AS Consignatario, 1, 'TRASLADO',0 + FROM v_compres + INNER JOIN warehouse ON v_compres.warehouse_id = warehouse.id + WHERE warehouse_id_out = wh_ AND v_compres.Confirmada = False + AND v_compres.shipment >= date_; + + + +*/ + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; + DROP TEMPORARY TABLE IF EXISTS ticket_total; + DROP TEMPORARY TABLE IF EXISTS ticket_total2; + DROP TEMPORARY TABLE IF EXISTS tmp.risk; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_locator_experimental` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_locator_experimental`(IN date_ DATETIME,IN wh_ INT, IN days TINYINT) +BEGIN + DECLARE DATEFEC DATE DEFAULT CURDATE(); + DECLARE v_date_start DATETIME DEFAULT TIMESTAMPADD(MONTH, -2, CURDATE()); + DECLARE v_date_end DATETIME DEFAULT TIMESTAMP(DATEFEC,'23:59:59'); + DECLARE v_date_future DATETIME DEFAULT TIMESTAMPADD(DAY,days,v_date_end); + DECLARE timeSTART DATETIME DEFAULT NOW(); + + SELECT timeSTART, 'ARRANCA'; + + DROP TEMPORARY TABLE IF EXISTS `Locator`; +/* +-- usar ticket_total crear ticket_tmp(ticket_id) + DROP TEMPORARY TABLE IF EXISTS ticket_tmp; + CREATE TEMPORARY TABLE `ticket_tmp` + (INDEX idx USING HASH (ticket_id)) + ENGINE = MEMORY + SELECT Id_Ticket ticket_id FROM Tickets t + WHERE t.Factura IS NULL + AND t.Fecha BETWEEN v_date_start AND v_date_future; + + CALL ticket_total(); + */ + DROP TEMPORARY TABLE IF EXISTS ticket_total; + + CREATE TEMPORARY TABLE ticket_total + (INDEX idx USING HASH (ticket_id)) + ENGINE = MEMORY + SELECT m.Id_Ticket as ticket_id, red(SUM(Cantidad * Preu * (100 - Descuento)/100)) AS total + FROM Movimientos m + JOIN Tickets t using(Id_Ticket) + WHERE t.Factura IS NULL + AND t.Fecha BETWEEN v_date_start AND v_date_future + GROUP BY ticket_id; + + + + SELECT TIMEDIFF(NOW(), timeSTART), 'TICKET_TOTAL'; + + DROP TEMPORARY TABLE IF EXISTS ticket_total2; + CREATE TEMPORARY TABLE `ticket_total2` + ENGINE = MEMORY + SELECT t.* FROM ticket_total t + LEFT JOIN Tickets t1 ON t1.Id_Ticket = t.ticket_id + LEFT JOIN expeditions e ON e.ticket_id = t.ticket_id + LEFT JOIN Agencias a ON a.Id_Agencia = t1.Id_Agencia + LEFT JOIN agency ag ON ag.agency_id = a.agency_id + LEFT JOIN agency_warehouse aw ON aw.agency_id = a.agency_id AND aw.warehouse_id = wh_ + WHERE t1.Fecha BETWEEN TIMESTAMPADD(DAY,-5,DATE(date_)) AND TIMESTAMPADD(DAY,days,DATE(date_)) + AND t1.Anotadoencaja = FALSE + AND t1.Etiquetasemitidas = FALSE + AND e.ticket_id IS NULL + AND IFNULL(aw.Vista,a.Vista) > 0 + AND t1.warehouse_id = wh_; + + SELECT TIMEDIFF(NOW(), timeSTART), 'TICKET_TOTAL2'; + + DROP TEMPORARY TABLE IF EXISTS tmp.risk; + CREATE TEMPORARY TABLE tmp.risk + SELECT Id_Cliente, SUM(amount) risk + FROM Clientes c + JOIN ( + SELECT customer_id, SUM(amount) amount + FROM bi.customer_risk + GROUP BY customer_id + UNION ALL + SELECT Id_Cliente, SUM(Entregado) + FROM Recibos + WHERE Fechacobro > v_date_end + GROUP BY Id_Cliente + UNION ALL + SELECT t.Id_Cliente, SUM(total) + FROM ticket_total tt + JOIN Tickets t ON tt.ticket_id = t.Id_Ticket + WHERE t.Fecha <= v_date_end + GROUP BY t.Id_Cliente + UNION ALL + SELECT t.customer_id, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)) + FROM hedera.tpv_transaction t + WHERE t.receipt_id IS NULL + AND t.status = 'ok' + GROUP BY t.customer_id + ) t ON c.Id_Cliente = t.customer_id + WHERE c.activo != FALSE + GROUP BY c.Id_Cliente; + + SELECT TIMEDIFF(NOW(), timeSTART), 'RISK'; + + + CREATE TEMPORARY TABLE `Locator` + ENGINE = MEMORY + SELECT Congelado, Credito, risk Riesgo, Greuge, T.*,ticket_state(T.factura_id, T.PedidoImpreso, T.Etiquetasemitidas, T.Blocked) AS Estado, + Codigotrabajador, DATE(T.Fecha) AS Fecha_Simple, Averiguar_ComercialCliente_IdTicket(T.Id_Ticket) AS Comercial,C.calidad + FROM Clientes C + INNER JOIN + ( + SELECT + t.Id_Ticket, t.Id_Cliente, t.warehouse_id, t.Fecha, t.Alias, + NULL Notas, t.Factura, t.factura_id, t.Anotadoencaja, t.Id_Consigna, t.Id_Trabajador, + t.Observaciones, t.Firmado, t.Etiquetasemitidas, t.PedidoImpreso, t.Bultos, t.Localizacion, + t.Hora, t.odbc_date, t.blocked, t.Solucion, t.Id_Ruta, t.Prioridad, t.priority, + t.empresa_id, t.Id_Agencia, + CS.Consignatario, IFNULL(aw.Vista,a.Vista) Vista,a.Agencia, DATEFEC AS Hora_MAX , + SUM(IF(Movimientos.OK = 0, 1, 0)) AS `lines`, + tt.total AS Importe, + IF(reino_id IN (5, 1), 0,tt.total) AS Plantas, + 0 AS inacabable, + CS.CODPOSTAL, CS.POBLACION, p.name PROVINCIA, a.Vista VistaTicket,p.zone + + FROM Tickets t + JOIN ticket_total2 tt ON tt.ticket_id = t.Id_Ticket + INNER JOIN Consignatarios CS USING(Id_Consigna) + LEFT JOIN province p USING(province_id) + LEFT JOIN Movimientos USING(Id_Ticket) + LEFT JOIN Articles on Movimientos.Id_Article = Articles.Id_Article + LEFT JOIN Tipos using(tipo_id) + LEFT JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia + LEFT JOIN agency ag ON ag.agency_id = a.agency_id + LEFT JOIN agency_warehouse aw ON aw.agency_id = a.agency_id AND aw.warehouse_id = wh_ + GROUP BY t.Id_Ticket + ) T USING(Id_Cliente) + LEFT JOIN Trabajadores Tb ON Tb.Id_Trabajador = T.Id_Trabajador + LEFT JOIN tmp.risk as Peligros USING(Id_Cliente) + LEFT JOIN + ( + SELECT Id_Cliente, SUM(Importe) AS Greuge FROM Greuges + GROUP BY Id_Cliente + ) AS Agravios USING(Id_Cliente); + + SELECT TIMEDIFF(NOW(), timeSTART), 'LOCATOR'; +ALTER TABLE `Locator` ADD PRIMARY KEY(Id_Ticket); + + SELECT TIMEDIFF(NOW(), timeSTART), 'LOCATOR INDEX'; + +UPDATE `Locator` JOIN +( +SELECT d.Id_Ticket from Tickets_dits d +JOIN Tickets t using(Id_Ticket) +LEFT JOIN Agencias a using(Id_Agencia) +LEFT JOIN expeditions e on e.ticket_id = d.Id_Ticket +WHERE Fecha BETWEEN CURDATE() AND TIMESTAMP(curdate(),'23:59:59') +AND idaccion_dits = 18 AND ticket_id is null +AND t.warehouse_id = 1 +AND NOT Etiquetasemitidas +AND d.ODBC_DATE < TIMESTAMPADD(HOUR,-2, now()) +AND Vista in (1,2)) sub using(Id_Ticket) +SET Observaciones = CONCAT('F5 PERDIDO ',IFNULL(Observaciones,'')); + + SELECT TIMEDIFF(NOW(), timeSTART), 'UPDATE'; + +-- ENTRADAS +INSERT INTO `Locator`(Fecha_Simple, Id_Ticket, Agencia, Id_Cliente, Alias, PedidoImpreso, CodigoTrabajador, Fecha, Estado, Consignatario, Vista, PROVINCIA,Riesgo) +SELECT DISTINCT v_compres.shipment AS Fecha_Simple, v_compres.Id_Entrada AS Id_Ticket, warehouse.name, v_compres.Id_Proveedor, +v_compres.ref AS Alias, v_compres.Pedida AS PedidoImpreso, v_compres.Id_Trabajador AS CodigoTrabajador, v_compres.shipment AS Fecha, 0 AS problem, v_compres.ref AS Consignatario, 1, 'TRASLADO',0 +FROM v_compres +INNER JOIN warehouse ON v_compres.warehouse_id = warehouse.id +WHERE warehouse_id_out = wh_ AND v_compres.Confirmada = False +AND v_compres.shipment >= date_; + + SELECT TIMEDIFF(NOW(), timeSTART), 'ENTRADAS'; +-- TICKET PTE RECOGIDA +INSERT INTO `Locator`(Fecha_Simple + , Id_Ticket + , Agencia + , Id_Cliente + , Alias + , PedidoImpreso + , CodigoTrabajador + , Fecha + , Estado + , Consignatario + , Vista + , PROVINCIA + , Riesgo + , Comercial + ,calidad + ,Bultos) + +SELECT date(t.Fecha) + , t.Id_Ticket + , a.Agencia + , t.Id_Cliente + , t.Alias + , t.PedidoImpreso + , UCASE(LEFT(w_out.name,5)) as CodigoTrabajador -- es el almacen de origen + , t.Fecha + , 0 as Estado + , t.Alias + ,3 + , w.name + , NULL + ,Averiguar_ComercialCliente_IdTicket(t.Id_Ticket) AS Comercial + ,c.calidad + ,t.Bultos +FROM Tickets t +JOIN Clientes c using(Id_Cliente) +JOIN warehouse w_out on w_out.id = t.warehouse_id +JOIN warehouse w ON w.id = wh_ +JOIN Agencias a using(Id_Agencia) +JOIN warehouse_pickup wp on wp.agency_id = t.Id_Agencia and wp.warehouse_id = wh_ +JOIN + (select Id_Ticket, state_id from + ( + select Id_Ticket, odbc_date, state_id + from vncontrol.inter + where odbc_date >= timestampadd(day,-3,curdate()) + order by odbc_date desc, state_id desc + ) sub + group by Id_Ticket + having state_id = 15 -- Pendiente de entrega + ) sub2 using(Id_Ticket); + + SELECT TIMEDIFF(NOW(), timeSTART), 'PTE RECOGIDA'; + +DROP TEMPORARY TABLE IF EXISTS ticket_tmp; +DROP TEMPORARY TABLE IF EXISTS ticket_total; +DROP TEMPORARY TABLE IF EXISTS ticket_total2; +DROP TEMPORARY TABLE IF EXISTS tmp.risk; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_new` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_new`( + IN idC INT + , IN newFEC DATE + , IN idWH INT + , IN idUSER INT + , IN idEMP INT + , IN idCON INT + , IN intTIPO INT + , IN idRUTA INT + , IN datLANDING DATE + , OUT newTICKET INT) +BEGIN +-- DEPRECATED usar ticketCreate + DECLARE boolaux TINYINT; + + SET boolaux = If(IdC = 200 Or IdC = 400 Or intTIPO = 23, True, False); + + INSERT INTO Tickets ( + Id_Cliente, + Fecha, + Id_Consigna, + Id_Trabajador, + Id_Agencia, + Alias, + Etiquetasemitidas, + Firmado, + warehouse_id, + Id_Ruta, + empresa_id, + landing) + SELECT + IdC, + newFEC, + Id_Consigna, + idUSER, + IF(intTIPO,intTIPO,Id_Agencia), + consignatario, + boolaux, + boolaux, + idWH, + IF(idRUTA,idRuta,NULL), + idEMP, + datLANDING + FROM Consignatarios c + INNER JOIN Agencias a USING(Id_Agencia) + WHERE IF(IdCON, Id_Consigna = IdCON, Predeterminada != 0) + AND Id_Cliente = idC + LIMIT 1; + + SELECT LAST_INSERT_ID() INTO newTICKET; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_new_complet` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_new_complet`( + IN idC INT + , IN newFEC DATE + , IN idWH INT + , IN idUSER INT + , IN idEMP INT + , IN idCON INT + , IN intTIPO INT + , IN idRUTA INT + , OUT newTICKET INT) +BEGIN +-- DEPRECATED usar ticketCreate + DECLARE boolaux TINYINT; + + + SET boolaux = If(IdC = 200 Or IdC = 400 Or intTIPO = 23, True, False); + + INSERT INTO Tickets ( + Id_Cliente, + Fecha, + Id_Consigna, + Id_Trabajador, + Id_Agencia, + Alias, + Etiquetasemitidas, + Firmado, + warehouse_id, + Id_Ruta, + empresa_id) + SELECT + IdC, + newFEC, + Id_Consigna, + idUSER, + IF(intTIPO,intTIPO,Id_Agencia), + consignatario, + boolaux, + boolaux, + idWH, + IF(idRUTA,idRuta,NULL), + idEMP + FROM Consignatarios c + INNER JOIN Agencias a USING(Id_Agencia) + WHERE IF(IdCON, Id_Consigna = IdCON, Predeterminada != 0) + AND Id_Cliente = idC + LIMIT 1; + + SELECT LAST_INSERT_ID() INTO newTICKET; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_portes_cobrados` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_portes_cobrados`(IN idTICKET BIGINT) +BEGIN + +SELECT m.Id_Article, m.Concepte, m.Cantidad, mc.Valor, round(m.Cantidad * mc.Valor,2) as Porte +FROM vn2008.Movimientos m +JOIN vn2008.Movimientos_componentes mc using(Id_Movimiento) +INNER JOIN bi.tarifa_componentes tc ON mc.Id_Componente = tc.Id_Componente +WHERE m.Id_Ticket = idTICKET +AND tc.tarifa_componentes_series_id = 6; -- agencia + + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_portes_estimados` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_portes_estimados`(IN vTicketId BIGINT) +BEGIN + +SELECT + TICKET_FREIGHT(vTicketId) AS Porte_Volumen, + SUM(CAST(es.shipping_charge AS DECIMAL (10 , 2 ))) AS Porte_Bultos, + IFNULL(is_volumetric,0) AS is_volumetric +FROM + vn2008.v_expeditions_shipping_charge2 es +JOIN + vn2008.Tickets t on es.Id_Ticket = t.Id_Ticket +LEFT JOIN + vn2008.Rutas r on r.Id_Ruta = t.Id_Ruta +LEFT JOIN + vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia +WHERE + es.Id_Ticket = vTicketId; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_total` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_total`() +BEGIN +/** + * Calcula el total con IVA de un conjunto de tickets. + * + * @param table ticket_tmp(ticket_id) Tabla con el listado de tickets + * + * @return table ticket_total + **/ + + DROP TEMPORARY TABLE IF EXISTS ticket_total; + + CALL ticket_iva (NULL); + + CREATE TEMPORARY TABLE ticket_total + (INDEX idx USING HASH (ticket_id)) + ENGINE = MEMORY + SELECT ticket_id, red(SUM(bi + iva + re)) AS total + FROM ticket_iva GROUP BY ticket_id; + + DROP TEMPORARY TABLE ticket_iva; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_volumen` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_volumen`(IN idT INT) +BEGIN + DECLARE intWh INTEGER; + DECLARE datFecha DATE; + + DROP TEMPORARY TABLE IF EXISTS ticket_volumen; + SELECT warehouse_id, Fecha INTO intWh,datFecha FROM Tickets WHERE Id_Ticket = idT; + + CALL item_last_buy_(intWh,datFecha); + + CREATE TEMPORARY TABLE IF NOT EXISTS ticket_volumen ENGINE MEMORY + SELECT Id_Article,Cantidad, Concepte, VolUd as m3_uni, Volumen as m3, @m3:= @m3 + ifnull(Volumen,0) as m3_total + FROM + ( + SELECT round(cm3(Id_Compra)/1000000/Packing,3) as VolUd ,M.Cantidad,round(M.Cantidad * cm3(Id_Compra)/1000000/Packing,3) as Volumen, + M.Id_Article, Concepte, @m3:= 0, @vol:=0, Id_Agencia + FROM Movimientos M + JOIN t_item_last_buy b on M.Id_Article = b.item_id + JOIN Compres C ON C.Id_Compra = b.buy_id + JOIN Tickets T on T.Id_Ticket = M.Id_Ticket + WHERE M.Id_Ticket = idT + ) sub + JOIN Agencias a using(Id_Agencia); + + DROP TEMPORARY TABLE t_item_last_buy; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `top_seller` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `top_seller`() +BEGIN + + drop table if exists top_sellers_min; + create temporary table top_sellers_min ENGINE = MEMORY + select a.Id_Article , tip.reino_id as Reino, count(m.Id_Article) as contados + from Movimientos m + inner join Tickets t + on m.Id_Ticket = t.Id_Ticket + inner join Articles a + on a.Id_Article = m.Id_Article + inner join Tipos tip + on a.tipo_id = tip.tipo_id + inner join reinos r + on r.id = tip.reino_id + where t.Fecha between timestampadd(day,-7,curdate()) and curdate() + group by m.Id_Article; + + drop table if exists top_seller; + create temporary table top_seller ENGINE = MEMORY + select a.Article, tmp.Id_Article , a.Foto as foto, a.tipo_id as Id_Tipo, + tmp.Reino, r.reino as ReinoNombre, tip.Tipo as Tipo, tmp.contados + from top_sellers_min tmp + inner join Articles a + on a.Id_Article = tmp.Id_Article + inner join Tipos tip + on a.tipo_id = tip.tipo_id + inner join reinos r + on r.id = tmp.Reino + where tmp.Reino = 1 + order by contados desc + limit 5; + + insert into top_seller + select + a.Article, tmp.Id_Article , a.Foto as foto, a.tipo_id as Id_Tipo, + tmp.Reino, r.reino as ReinoNombre, tip.Tipo as Tipo, tmp.contados + from top_sellers_min tmp + inner join Articles a + on a.Id_Article = tmp.Id_Article + inner join Tipos tip + on a.tipo_id = tip.tipo_id + inner join reinos r + on r.id = tmp.Reino + where tmp.Reino = 2 + order by contados desc + limit 5; + + insert into top_seller + select + a.Article, tmp.Id_Article , a.Foto as foto, a.tipo_id as Id_Tipo, + tmp.Reino, r.reino as ReinoNombre, tip.Tipo as Tipo, tmp.contados + from top_sellers_min tmp + inner join Articles a + on a.Id_Article = tmp.Id_Article + inner join Tipos tip + on a.tipo_id = tip.tipo_id + inner join reinos r + on r.id = tmp.Reino + where tmp.Reino = 3 + order by contados desc + limit 5; + + insert into top_seller + select + a.Article, tmp.Id_Article , a.Foto as foto, a.tipo_id as Id_Tipo, + tmp.Reino, r.reino as ReinoNombre, tip.Tipo as Tipo, tmp.contados + from top_sellers_min tmp + inner join Articles a + on a.Id_Article = tmp.Id_Article + inner join Tipos tip + on a.tipo_id = tip.tipo_id + inner join reinos r + on r.id = tmp.Reino + where tmp.Reino = 4 + order by contados desc + limit 5; + + insert into top_seller + select + a.Article, tmp.Id_Article , a.Foto as foto, a.tipo_id as Id_Tipo, + tmp.Reino, r.reino as ReinoNombre, tip.Tipo as Tipo, tmp.contados + from top_sellers_min tmp + inner join Articles a + on a.Id_Article = tmp.Id_Article + inner join Tipos tip + on a.tipo_id = tip.tipo_id + inner join reinos r + on r.id = tmp.Reino + where tmp.Reino = 5 + order by contados desc + limit 5; + + insert into top_seller + select + a.Article, tmp.Id_Article , a.Foto as foto, a.tipo_id as Id_Tipo, + tmp.Reino, r.reino as ReinoNombre, tip.Tipo as Tipo, tmp.contados + from top_sellers_min tmp + inner join Articles a + on a.Id_Article = tmp.Id_Article + inner join Tipos tip + on a.tipo_id = tip.tipo_id + inner join reinos r + on r.id = tmp.Reino + where tmp.Reino = 7 + order by contados desc + limit 5; + + drop table if exists top_sellers_min; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Trabuque` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Trabuque`(IN intIDTICKET BIGINT, IN dblINCREMENTO DOUBLE ) +BEGIN + + + +#Vamos a calcular el porcentaje a incrementar las cantidades de las lineas de movimiento para inflar / desinflar la base final + +DECLARE dblBASE_INICIAL DOUBLE DEFAULT 0; +DECLARE dblBASE_FINAL DOUBLE DEFAULT 0; +DECLARE dblAUMENTO DOUBLE DEFAULT 1; + + +SELECT SUM(Cantidad * Preu * (100 - Descuento) / 100) +INTO dblBASE_INICIAL +FROM Movimientos +WHERE Id_Ticket = intIDTICKET; + +SET dblBASE_FINAL = dblBASE_INICIAL; + + +#Eliminamos lineas a 0 + +DELETE FROM Movimientos WHERE Cantidad = 0 AND Id_Ticket = intIDTICKET; + +# Vamos a ir probando incrementos paulatinos hasta que encontremos el que supera lo pedido, teniendo en cuenta el sentido del incremento + +IF dblINCREMENTO < 0 THEN + + + + WHILE (dblBASE_FINAL > dblBASE_INICIAL + dblINCREMENTO) or (dblAUMENTO < 0 ) DO + + SET dblAUMENTO = dblAUMENTO - 0.01; + + SELECT SUM(IF(@cantidad:= ROUND(dblAUMENTO * Cantidad),@cantidad,1) * Preu * (100 - Descuento) / 100) + INTO dblBASE_FINAL + FROM Movimientos + WHERE Id_Ticket = intIDTICKET; + + END WHILE; + +ELSE + + WHILE dblBASE_FINAL < dblBASE_INICIAL + dblINCREMENTO DO + + SET dblAUMENTO = dblAUMENTO + 0.01; + + SELECT SUM(IF(@cantidad:= ROUND(dblAUMENTO * Cantidad),@cantidad,1) * Preu * (100 - Descuento) / 100) + INTO dblBASE_FINAL + FROM Movimientos + WHERE Id_Ticket = intIDTICKET; + + END WHILE; + +END IF; + +UPDATE Movimientos +SET Cantidad = IF(@cantidad:= ROUND(dblAUMENTO * Cantidad),@cantidad,1) +WHERE Id_Ticket = intIDTICKET; + +SELECT tipoiva + , ROUND(SUM(Cantidad * Preu * (100 - Descuento) / 100),2) as Base + , ROUND(ROUND(SUM(Cantidad * Preu * (100 - Descuento) / 100),2) * iva / 100,2) as Cuota +FROM Movimientos M +INNER JOIN Articles A USING(Id_Article) +INNER JOIN tblIVA USING(tipoiva) +WHERE Id_Ticket = intIDTICKET +GROUP BY tipoiva; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `traslado` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `traslado`(IN i_entrada INTEGER) +BEGIN + DECLARE dateShipment DATE; + DECLARE dateLanding DATE; + DECLARE warehouseShipment INTEGER; + DECLARE warehouseLanding INTEGER; + DECLARE v_calc_available INTEGER; + DECLARE v_calc_visible INTEGER; + + + SELECT shipment, landing, warehouse_id_out, warehouse_id + INTO dateShipment, dateLanding, warehouseShipment, warehouseLanding + FROM travel t JOIN Entradas e ON t.id = e.travel_id + WHERE Id_Entrada = i_entrada; + + CALL buy_tarifas_table(i_entrada); + + -- Traslado en almacen origen + + DROP TEMPORARY TABLE IF EXISTS buy_edi_temp; + + CREATE TEMPORARY TABLE buy_edi_temp + (KEY (Id_Article)) ENGINE = MEMORY + + SELECT * + FROM (SELECT c.Id_Article, c.Id_Compra + FROM Compres c INNER JOIN Entradas e USING(Id_Entrada) + INNER JOIN travel t ON t.id = e.travel_id + WHERE t.landing BETWEEN date_inv() AND dateShipment + AND c.Novincular = FALSE + AND c.Tarifa2 >= 0 + ORDER BY (warehouseShipment = t.warehouse_id) DESC, t.landing DESC) t + GROUP BY Id_Article; + + IF dateShipment >= CURDATE() THEN + + CALL availableTraslate(warehouseShipment, dateShipment,NULL); + CALL `cache`.visible_refresh(v_calc_visible,TRUE,warehouseShipment); + DROP TEMPORARY TABLE IF EXISTS tmp_item; + CREATE TEMPORARY TABLE tmp_item (UNIQUE INDEX i USING HASH (item_id)) ENGINE = MEMORY + SELECT item_id, visible,0 available FROM `cache`.visible WHERE calc_id = v_calc_visible; + INSERT INTO tmp_item(item_id, available) + SELECT a.item_id, a.available FROM availableTraslate a + ON DUPLICATE KEY UPDATE available = a.available; + ELSE + CALL item_stock(warehouseShipment, dateShipment,NULL); + END IF; + + DROP TEMPORARY TABLE IF EXISTS Traslados; + CREATE TEMPORARY TABLE Traslados ENGINE MEMORY + SELECT tp.Id_Tipo AS Tipo, + + tp.reino_id, + + ar.tipo_id, + + ar.Id_Article AS article_id, + + ar.Article, + + ar.Medida, + + ar.Categoria, + + ar.Color, + + Origen.abreviatura as Origen, + + CE.Cantidad, + + ar.Tallos, + + CAST(AIM.visible AS DECIMAL(10,0)) as vis1, + + CAST(AIM.available AS DECIMAL(10,0)) as dis1, + + 0 as vis2, + + 0 as dis2, + + IFNULL(CE.grouping,C.grouping) as grouping, + + IFNULL(CE.Packing,C.Packing) as Packing, + + IFNULL(CE.caja,C.caja) as caja, + + IFNULL(C.Productor, P2.Alias) AS Productor, + + C.Id_Cubo, + + 1 Tinta, + + CE.Id_Compra, + + CE.Etiquetas, + + C.buy_edi_id, + + tp.Id_Trabajador, + + CB.Volumen, + + CB.x, CB.y, CB.z, + + IFNULL(C.Costefijo,0) Costefijo, + + IFNULL(C.Comisionfija,0) Comisionfija, + + IFNULL(C.Portefijo,0) Portefijo, + + A.m3, + + E.comision, + + CB.Retornable, + + IFNULL(CEB.Valor,CB.Valor) Valor, + + t3, t2, tp.promo, + + C.grouping groupingOrigin, + + C.Packing PackingOrigin, + + C.Id_Compra CompraOrigin + + FROM Articles ar + LEFT JOIN tmp_item AIM ON AIM.item_id = ar.Id_Article + LEFT JOIN Tipos tp ON tp.tipo_id = ar.tipo_id + LEFT JOIN Origen ON Origen.id = ar.id_origen + LEFT JOIN buy_edi_temp lb ON lb.Id_Article = ar.Id_Article + LEFT JOIN Compres C ON C.Id_Compra = lb.Id_Compra + LEFT JOIN Cubos CB ON CB.Id_Cubo = C.Id_Cubo + LEFT JOIN Entradas E2 ON E2.Id_Entrada = C.Id_Entrada + LEFT JOIN Proveedores P2 ON P2.Id_Proveedor = E2.Id_Proveedor + LEFT JOIN Entradas E ON E.Id_Entrada = i_entrada + LEFT JOIN travel TR ON TR.id = E.travel_id + LEFT JOIN Agencias A ON A.Id_Agencia = TR.agency_id + LEFT JOIN Compres CE ON CE.Id_Article = ar.Id_Article AND CE.Id_Entrada = i_entrada + LEFT JOIN Cubos CEB ON CEB.Id_Cubo = CE.Id_Cubo + LEFT JOIN tblTARIFAS ON TRUE + WHERE tp.reino_id <> 6 AND tp.reino_id <> 8 + AND E.Redada = FALSE; + + CREATE INDEX tindex USING HASH ON Traslados (article_id); + +-- Inventario en el warehouse destino + IF dateShipment >= CURDATE() THEN + + CALL cache.visible_refresh(v_calc_visible, TRUE, warehouseLanding); + CALL availableTraslate(warehouseLanding, dateLanding,warehouseShipment); + + UPDATE Traslados t + LEFT JOIN availableTraslate a ON t.article_id = a.item_id + LEFT JOIN `cache`.visible v ON v.calc_id = v_calc_visible AND t.article_id = v.item_id + SET vis2 = v.visible, dis2 = a.available; + + END IF; +-- --------------------------------------------- + + SELECT t.*, + + Cantidad - MOD(Cantidad , grouping) as Subcantidad, + + MOD(Cantidad , grouping) as Soll, + + (IF(Volumen > 0,Volumen,x * y * IF(z = 0, Medida + 10, z))) / Packing as cm3, + + Costefijo + Comisionfija + Portefijo AS Cost, + + @porte := ROUND((IF(Volumen > 0,Volumen,x * y * IF(z = 0, Medida + 10, z))) * m3 / 1000000 / Packing ,3) AS Porte, + + @comision := ROUND((Costefijo + Comisionfija + Portefijo) * comision / 100 ,3) AS Comision, + + @embalaje := IF(Retornable != 0, 0,ROUND(Valor / Packing,3)) AS Embalaje, + + @coste := IFNULL((Costefijo + Comisionfija + Portefijo),0) + IFNULL(@embalaje,0) + IFNULL(@porte,0) + IFNULL(@comision,0) AS Coste, + + @t3 := ROUND(@coste / ( (100 - t3 - t.promo)/100),2) AS Tarifa3, + + ROUND(@t3 * (1 + ((t2 - t3)/100)),2) AS Tarifa2, + + 0 selected + + FROM Traslados t + WHERE vis1 <> 0 OR dis1 <> 0 OR vis2 <> 0 OR dis2 <> 0 + ORDER BY tipo_id, Article, Medida, Categoria, Origen; + + DROP TEMPORARY TABLE IF EXISTS Traslados; + DROP TEMPORARY TABLE IF EXISTS tmp_item; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `trasladoBeta` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `trasladoBeta`(IN i_entrada INTEGER) +BEGIN + DECLARE dateShipment DATE; + DECLARE dateLanding DATE; + DECLARE warehouseShipment INTEGER; + DECLARE warehouseLanding INTEGER; + DECLARE v_calc_available INTEGER; + DECLARE v_calc_visible INTEGER; + + SELECT shipment, landing, warehouse_id_out, warehouse_id + INTO dateShipment, dateLanding, warehouseShipment, warehouseLanding + FROM travel t JOIN Entradas e ON t.id = e.travel_id + WHERE Id_Entrada = i_entrada; + + CALL buy_tarifas_table(i_entrada); + + -- Traslado en almacen origen + + DROP TEMPORARY TABLE IF EXISTS buy_edi_temp; + + CREATE TEMPORARY TABLE buy_edi_temp + (KEY (Id_Article)) ENGINE = MEMORY + + SELECT * FROM (SELECT c.Id_Article, c.Id_Compra + FROM Compres c INNER JOIN Entradas e USING(Id_Entrada) + INNER JOIN travel t ON t.id = e.travel_id + WHERE t.landing BETWEEN date_inv() AND dateShipment + AND c.Novincular = FALSE + AND c.Tarifa2 >= 0 + ORDER BY (warehouseShipment = t.warehouse_id) DESC, t.landing DESC) t + GROUP BY Id_Article; + + IF dateShipment >= CURDATE() THEN + + -- CALL `cache`.available_refresh(v_calc_available, TRUE, warehouseShipment, dateShipment); + CALL availableTraslate(warehouseShipment, dateShipment,NULL); + CALL `cache`.visible_refresh(v_calc_visible,TRUE,warehouseShipment); + DROP TEMPORARY TABLE IF EXISTS tmp_item; + CREATE TEMPORARY TABLE tmp_item (UNIQUE INDEX i USING HASH (item_id)) ENGINE = MEMORY + SELECT item_id, visible,0 available FROM `cache`.visible WHERE calc_id = v_calc_visible; + INSERT INTO tmp_item(item_id, available) + SELECT a.item_id, a.available FROM availableTraslate a + ON DUPLICATE KEY UPDATE available = a.available; + ELSE + CALL item_stock(warehouseShipment, dateShipment,NULL); + END IF; + + DROP TEMPORARY TABLE IF EXISTS Traslados; + CREATE TEMPORARY TABLE Traslados ENGINE MEMORY + SELECT TP.Id_Tipo AS Tipo, + + TP.reino_id, + + ar.tipo_id, + + ar.Id_Article AS article_id, + + ar.Article, + + ar.Medida, + + ar.Categoria, + + ar.Color, + + Origen.abreviatura as Origen, + + CE.Cantidad, + + ar.Tallos, + + CAST(AIM.visible AS DECIMAL(10,0)) as vis1, + + CAST(AIM.available AS DECIMAL(10,0)) as dis1, + + 0 as vis2, + + 0 as dis2, + + IFNULL(CE.grouping,C.grouping) as grouping, + + IFNULL(CE.Packing,C.Packing) as Packing, + + IFNULL(CE.caja,C.caja) as caja, + + IFNULL(C.Productor, P2.Alias) AS Productor, + + C.Id_Cubo, + + 1 Tinta, + + CE.Id_Compra, + + CE.Etiquetas, + + C.buy_edi_id, + + TP.Id_Trabajador, + + CB.Volumen, + + CB.x, CB.y, CB.z, + + IFNULL(C.Costefijo,0) Costefijo, + + IFNULL(C.Comisionfija,0) Comisionfija, + + IFNULL(C.Portefijo,0) Portefijo, + + A.m3, + + E.comision, + + CB.Retornable, + + IFNULL(CEB.Valor,CB.Valor) Valor, + + t3, t2, TP.promo + + FROM Articles ar + LEFT JOIN tmp_item AIM ON AIM.item_id = ar.Id_Article + LEFT JOIN Tipos TP USING(tipo_id) + LEFT JOIN Origen ON Origen.id = ar.id_origen + LEFT JOIN buy_edi_temp lb ON lb.Id_Article = ar.Id_Article + LEFT JOIN Compres C ON C.Id_Compra = lb.Id_Compra + LEFT JOIN Cubos CB ON CB.Id_Cubo = C.Id_Cubo + LEFT JOIN Entradas E2 ON E2.Id_Entrada = C.Id_Entrada + LEFT JOIN Proveedores P2 ON P2.Id_Proveedor = E2.Id_Proveedor + LEFT JOIN Entradas E ON E.Id_Entrada = i_entrada + LEFT JOIN travel TR ON TR.id = E.travel_id + LEFT JOIN Agencias A ON A.Id_Agencia = TR.agency_id + LEFT JOIN Compres CE ON CE.Id_Article = ar.Id_Article AND CE.Id_Entrada = i_entrada + LEFT JOIN Cubos CEB ON CEB.Id_Cubo = CE.Id_Cubo + LEFT JOIN tblTARIFAS ON TRUE + WHERE TP.reino_id <> 6 AND TP.reino_id <> 8 + AND E.Redada = FALSE; + + + CREATE INDEX tindex USING HASH ON Traslados (article_id); + +-- Inventario en el warehouse destino + IF dateShipment >= CURDATE() THEN + + CALL cache.visible_refresh(v_calc_visible, TRUE, warehouseLanding); + SELECT warehouseLanding, dateLanding,warehouseShipment; + CALL availableTraslateTesting(warehouseLanding, dateLanding,warehouseShipment); + + SELECT * FROM availableTraslate; + + UPDATE Traslados t + LEFT JOIN availableTraslate a ON t.article_id = a.item_id + LEFT JOIN `cache`.visible v ON v.calc_id = v_calc_visible AND t.article_id = v.item_id + SET vis2 = v.visible, dis2 = a.available; + + END IF; +-- --------------------------------------------- + + SELECT t.*, + + Cantidad - MOD(Cantidad , grouping) as Subcantidad, + + MOD(Cantidad , grouping) as Soll, + + (IF(Volumen > 0,Volumen,x * y * IF(z = 0, Medida + 10, z))) / Packing as cm3, + + Costefijo + Comisionfija + Portefijo AS Cost, + + @porte := ROUND((IF(Volumen > 0,Volumen,x * y * IF(z = 0, Medida + 10, z))) * m3 / 1000000 / Packing ,3) AS Porte, + + @comision := ROUND((Costefijo + Comisionfija + Portefijo) * comision / 100 ,3) AS Comision, + + @embalaje := IF(Retornable != 0, 0,ROUND(Valor / Packing,3)) AS Embalaje, + + @coste := IFNULL((Costefijo + Comisionfija + Portefijo),0) + IFNULL(@embalaje,0) + IFNULL(@porte,0) + IFNULL(@comision,0) AS Coste, + + @t3 := ROUND(@coste / ( (100 - t3 - t.promo)/100),2) AS Tarifa3, + + ROUND(@t3 * (1 + ((t2 - t3)/100)),2) AS Tarifa2, + + 0 selected + + FROM Traslados t + WHERE vis1 <> 0 OR dis1 <> 0 OR vis2 <> 0 OR dis2 <> 0 + ORDER BY tipo_id, Article, Medida, Categoria, Origen; + + DROP TEMPORARY TABLE IF EXISTS Traslados; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `trasladoTesting` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `trasladoTesting`(IN i_entrada INTEGER) +BEGIN + DECLARE dateShipment DATE; + DECLARE dateLanding DATE; + DECLARE warehouseShipment INTEGER; + DECLARE warehouseLanding INTEGER; + DECLARE v_calc_available INTEGER; + DECLARE v_calc_visible INTEGER; + + SELECT shipment, landing, warehouse_id_out, warehouse_id + INTO dateShipment, dateLanding, warehouseShipment, warehouseLanding + FROM travel t JOIN Entradas e ON t.id = e.travel_id + WHERE Id_Entrada = i_entrada; + + CALL buy_tarifas_table(i_entrada); + + -- Traslado en almacen origen + + DROP TEMPORARY TABLE IF EXISTS buy_edi_temp; + + CREATE TEMPORARY TABLE buy_edi_temp + (KEY (Id_Article)) ENGINE = MEMORY + + SELECT * FROM (SELECT c.Id_Article, c.Id_Compra + FROM Compres c INNER JOIN Entradas e USING(Id_Entrada) + INNER JOIN travel t ON t.id = e.travel_id + WHERE t.landing BETWEEN date_inv() AND dateShipment + AND c.Novincular = FALSE + AND c.Tarifa2 >= 0 + ORDER BY (warehouseShipment = t.warehouse_id) DESC, t.landing DESC) t + GROUP BY Id_Article; + + IF dateShipment >= CURDATE() THEN + + CALL `cache`.available_refresh(v_calc_available, TRUE, warehouseShipment, dateShipment); + -- CALL `cache`.availableTraslate(warehouseShipment, dateShipment,NULL); + CALL `cache`.visible_refresh(v_calc_visible,TRUE,warehouseShipment); + DROP TEMPORARY TABLE IF EXISTS tmp_item; + CREATE TEMPORARY TABLE tmp_item (UNIQUE INDEX i USING HASH (item_id)) ENGINE = MEMORY + SELECT item_id, visible,0 available FROM `cache`.visible WHERE calc_id = v_calc_visible; + INSERT INTO tmp_item(item_id, available) + SELECT a.item_id, a.available FROM `cache`.available a WHERE a.calc_id = v_calc_available + ON DUPLICATE KEY UPDATE available = a.available; + ELSE + CALL item_stock(warehouseShipment, dateShipment,NULL); + END IF; + + DROP TEMPORARY TABLE IF EXISTS Traslados; + CREATE TEMPORARY TABLE Traslados ENGINE MEMORY + SELECT TP.Id_Tipo AS Tipo, + + TP.reino_id, + + ar.tipo_id, + + ar.Id_Article AS article_id, + + ar.Article, + + ar.Medida, + + ar.Categoria, + + ar.Color, + + Origen.abreviatura as Origen, + + CE.Cantidad, + + ar.Tallos, + + CAST(AIM.visible AS DECIMAL(10,0)) as vis1, + + CAST(AIM.available AS DECIMAL(10,0)) as dis1, + + 0 as vis2, + + 0 as dis2, + + IFNULL(CE.grouping,C.grouping) as grouping, + + IFNULL(CE.Packing,C.Packing) as Packing, + + IFNULL(CE.caja,C.caja) as caja, + + IFNULL(C.Productor, P2.Alias) AS Productor, + + C.Id_Cubo, + + 1 Tinta, + + CE.Id_Compra, + + CE.Etiquetas, + + C.buy_edi_id, + + TP.Id_Trabajador, + + CB.Volumen, + + CB.x, CB.y, CB.z, + + IFNULL(C.Costefijo,0) Costefijo, + + IFNULL(C.Comisionfija,0) Comisionfija, + + IFNULL(C.Portefijo,0) Portefijo, + + A.m3, + + E.comision, + + CB.Retornable, + + IFNULL(CEB.Valor,CB.Valor) Valor, + + t3, t2, TP.promo + + FROM Articles ar + LEFT JOIN tmp_item AIM ON AIM.item_id = ar.Id_Article + LEFT JOIN Tipos TP USING(tipo_id) + LEFT JOIN Origen ON Origen.id = ar.id_origen + LEFT JOIN buy_edi_temp lb ON lb.Id_Article = ar.Id_Article + LEFT JOIN Compres C ON C.Id_Compra = lb.Id_Compra + LEFT JOIN Cubos CB ON CB.Id_Cubo = C.Id_Cubo + LEFT JOIN Entradas E2 ON E2.Id_Entrada = C.Id_Entrada + LEFT JOIN Proveedores P2 ON P2.Id_Proveedor = E2.Id_Proveedor + LEFT JOIN Entradas E ON E.Id_Entrada = i_entrada + LEFT JOIN travel TR ON TR.id = E.travel_id + LEFT JOIN Agencias A ON A.Id_Agencia = TR.agency_id + LEFT JOIN Compres CE ON CE.Id_Article = ar.Id_Article AND CE.Id_Entrada = i_entrada + LEFT JOIN Cubos CEB ON CEB.Id_Cubo = CE.Id_Cubo + LEFT JOIN tblTARIFAS ON TRUE + WHERE TP.reino_id <> 6 AND TP.reino_id <> 8 + AND E.Redada = FALSE; + + + CREATE INDEX tindex USING HASH ON Traslados (article_id); + +-- Inventario en el warehouse destino + IF dateShipment >= CURDATE() THEN + + CALL cache.visible_refresh(v_calc_visible, TRUE, warehouseLanding); + CALL availableTraslate(warehouseLanding, dateLanding,warehouseShipment); + + UPDATE Traslados t + LEFT JOIN availableTraslate a ON t.article_id = a.item_id + LEFT JOIN `cache`.visible v ON v.calc_id = v_calc_visible AND t.article_id = v.item_id + SET vis2 = v.visible, dis2 = a.available; + + END IF; +-- --------------------------------------------- + + SELECT t.*, + + Cantidad - MOD(Cantidad , grouping) as Subcantidad, + + MOD(Cantidad , grouping) as Soll, + + (IF(Volumen > 0,Volumen,x * y * IF(z = 0, Medida + 10, z))) / Packing as cm3, + + Costefijo + Comisionfija + Portefijo AS Cost, + + @porte := ROUND((IF(Volumen > 0,Volumen,x * y * IF(z = 0, Medida + 10, z))) * m3 / 1000000 / Packing ,3) AS Porte, + + @comision := ROUND((Costefijo + Comisionfija + Portefijo) * comision / 100 ,3) AS Comision, + + @embalaje := IF(Retornable != 0, 0,ROUND(Valor / Packing,3)) AS Embalaje, + + @coste := IFNULL((Costefijo + Comisionfija + Portefijo),0) + IFNULL(@embalaje,0) + IFNULL(@porte,0) + IFNULL(@comision,0) AS Coste, + + @t3 := ROUND(@coste / ( (100 - t3 - t.promo)/100),2) AS Tarifa3, + + ROUND(@t3 * (1 + ((t2 - t3)/100)),2) AS Tarifa2, + + 0 selected + + FROM Traslados t + WHERE vis1 <> 0 OR dis1 <> 0 OR vis2 <> 0 OR dis2 <> 0 + ORDER BY tipo_id, Article, Medida, Categoria, Origen; + + DROP TEMPORARY TABLE IF EXISTS Traslados; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `traslado_label` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `traslado_label`(IN intArticle INTEGER,IN i_entrada_FV INTEGER, IN i_entrada_PCA INTEGER) +BEGIN + +DECLARE intEntrada INTEGER; +DECLARE i_FV INTEGER; + +SELECT FV INTO i_FV +FROM Articles a +JOIN Tipos tp ON tp.tipo_id = a.tipo_id +WHERE a.Id_Article = intArticle; + +SET intEntrada = IF(i_FV, i_entrada_FV,i_entrada_PCA); + +SET intEntrada = IF(intEntrada = 0, i_entrada_PCA + i_entrada_FV, intEntrada); + + + IF intEntrada > 0 THEN + + CALL buy_tarifas_table(intEntrada); + + INSERT INTO Compres (Id_Article, Etiquetas, Cantidad, Id_Entrada, Id_Cubo, Packing,grouping,caja, + Costefijo, Portefijo, Embalajefijo, Comisionfija, novincular,buy_edi_id) + SELECT + land.Id_Article, + land.Etiquetas - IFNULL(ship.Etiquetas,0) - (IFNULL(Ventas,0) / land.Packing), + land.Cantidad - IFNULL(ship.Cantidad,0) - IFNULL(Ventas,0), + intEntrada, + land.Id_Cubo, + land.Packing, + land.grouping, + land.caja, + @cost := ROUND(IFNULL(land.Costefijo, 0) + IFNULL(land.Comisionfija, 0) + IFNULL(land.Portefijo, 0), + 3) Costefij, + @porte := ROUND((@cm3:= cm3_2(land.Id_Cubo, land.Id_Article)) * a.m3 / 1000000 / land.Packing, + 3) Porte, + land.EmbalajeFijo AS Embalaje, + @comision := ROUND(land.Costefijo * e2.comision / 100, 3) Comision, + land.novincular,land.buy_edi_id + FROM ( + select c_land.Id_Cubo,c_land.Packing,c_land.grouping,c_land.Costefijo,c_land.Comisionfija,c_land.Portefijo,c_land.caja,SUM(c_land.Etiquetas) Etiquetas,c_land.EmbalajeFijo, + c_land.novincular,c_land.buy_edi_id,c_land.Id_Article,SUM(c_land.Cantidad) Cantidad + from + -- Entradas que llegan a vnh + Compres c_land + JOIN + Entradas e_land ON c_land.Id_Entrada = e_land.Id_Entrada AND c_land.Id_Article = intArticle + JOIN + travel t_land ON t_land.id = e_land.travel_id + JOIN + Cubos cu ON cu.Id_Cubo = c_land.Id_Cubo + WHERE + -- Entradas que llegan a vnh + (t_land.warehouse_id = 7 AND t_land.landing = CURDATE()) + ) land + LEFT JOIN -- Entradas que salen de vnh + (SELECT SUM(c_ship.Etiquetas) Etiquetas,c_ship.Packing,SUM(c_ship.Cantidad) Cantidad + FROM Compres c_ship + LEFT JOIN Entradas e_ship ON c_ship.Id_Entrada = e_ship.Id_Entrada AND c_ship.Id_Article = intArticle + LEFT JOIN travel t_ship ON t_ship.id = e_ship.travel_id + WHERE t_ship.warehouse_id_out = 7 AND t_ship.shipment = CURDATE() + -- Entrada destino + ) ship ON TRUE + JOIN Entradas e2 ON e2.Id_Entrada = intEntrada + JOIN travel t ON t.id = e2.travel_id + JOIN Agencias a ON t.agency_id = a.Id_Agencia + -- Ventas ese dia en VNH + LEFT JOIN + (SELECT sum(Cantidad) as Ventas + FROM Movimientos m + JOIN Tickets t on t.Id_Ticket = m.Id_Ticket + WHERE t.Fecha = CURDATE() AND m.Id_Article = intArticle AND t.warehouse_id = 7) v on true + GROUP BY land.Id_Article; + CALL buy_tarifas(LAST_INSERT_ID()); + + END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `traslado_label_2` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `traslado_label_2`(IN i_compra INTEGER,IN i_entrada_FV INTEGER, IN i_entrada_PCA INTEGER, i_cantidad INTEGER) +BEGIN + +-- PAK 2015-09-15 +DECLARE idARTICLE INT; + +SELECT Id_Article INTO idARTICLE FROM Compres WHERE Id_Compra = i_compra; + +call traslado_label_3(idARTICLE,i_entrada_FV,i_entrada_PCA); + +/* +DECLARE i_entrada_shipment INTEGER; +DECLARE i_entrada_landing INTEGER; +DECLARE i_FV INTEGER; + +SELECT c.Id_Entrada, FV INTO i_entrada_shipment, i_FV +FROM Compres c +JOIN Articles a ON a.Id_Article = c.Id_Article +JOIN Tipos tp ON tp.tipo_id = a.tipo_id +WHERE Id_Compra = i_compra; + +SET i_entrada_landing = IF(i_FV, i_entrada_FV,i_entrada_PCA); + +SET i_entrada_landing = IF(i_entrada_landing = 0, i_entrada_PCA + i_entrada_FV, i_entrada_landing); + +IF i_entrada_landing > 0 THEN + + CALL buy_tarifas_table(i_entrada_landing); + + INSERT INTO Compres (Id_Article, Etiquetas, Cantidad, Id_Entrada, Id_Cubo, Packing,grouping,caja, + Costefijo, Portefijo, Embalajefijo, Comisionfija, Productor, S3, S4, S2, novincular,k01,k02,k03,k04,buy_edi_id) + SELECT + Id_Article, + i_cantidad / Packing, + i_cantidad, + i_entrada_landing, + Id_Cubo, + Packing, + c.grouping, + c.caja, + @cost := ROUND(IFNULL(Costefijo, 0) + IFNULL(Comisionfija, 0) + IFNULL(Portefijo, 0), + 3) Costefij, + @porte := ROUND((@cm3:= cm3_2(Id_Cubo, Id_Article)) * a.m3 / 1000000 / Packing, + 3) Porte, + EmbalajeFijo AS Embalaje, + @comision := ROUND(Costefijo * e2.comision / 100, 3) Comision, + Productor, + S3, + S4, + S2, + novincular,c.k01,c.k02,c.k03,c.k04,c.buy_edi_id + FROM + Compres c + JOIN + Entradas e USING (Id_Entrada) + JOIN + Cubos cu USING (Id_Cubo) + JOIN + Entradas e2 ON e2.Id_Entrada = i_entrada_landing + JOIN + travel t ON t.id = e2.travel_id + JOIN + Agencias a ON t.agency_id = a.Id_Agencia + WHERE + Id_Compra = i_compra and i_cantidad; + + +CALL buy_tarifas(LAST_INSERT_ID()); + +END IF; +*/ +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `traslado_label_3` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `traslado_label_3`(IN intArticle INTEGER,IN i_entrada_FV INTEGER, IN i_entrada_PCA INTEGER) +BEGIN +-- DEPRECATED usar traslado_label +DECLARE intEntrada INTEGER; +DECLARE i_FV INTEGER; + +SELECT FV INTO i_FV +FROM Articles a +JOIN Tipos tp ON tp.tipo_id = a.tipo_id +WHERE a.Id_Article = intArticle; + +SET intEntrada = IF(i_FV, i_entrada_FV,i_entrada_PCA); + +SET intEntrada = IF(intEntrada = 0, i_entrada_PCA + i_entrada_FV, intEntrada); + + + IF intEntrada > 0 THEN + + CALL buy_tarifas_table(intEntrada); + + INSERT INTO Compres (Id_Article, Etiquetas, Cantidad, Id_Entrada, Id_Cubo, Packing,grouping,caja, + Costefijo, Portefijo, Embalajefijo, Comisionfija, novincular,buy_edi_id) + SELECT + land.Id_Article, + land.Etiquetas - IFNULL(ship.Etiquetas,0) - (IFNULL(Ventas,0) / land.Packing), + land.Cantidad - IFNULL(ship.Cantidad,0) - IFNULL(Ventas,0), + intEntrada, + land.Id_Cubo, + land.Packing, + land.grouping, + land.caja, + @cost := ROUND(IFNULL(land.Costefijo, 0) + IFNULL(land.Comisionfija, 0) + IFNULL(land.Portefijo, 0), + 3) Costefij, + @porte := ROUND((@cm3:= cm3_2(land.Id_Cubo, land.Id_Article)) * a.m3 / 1000000 / land.Packing, + 3) Porte, + land.EmbalajeFijo AS Embalaje, + @comision := ROUND(land.Costefijo * e2.comision / 100, 3) Comision, + land.novincular,land.buy_edi_id + FROM ( + select c_land.Id_Cubo,c_land.Packing,c_land.grouping,c_land.Costefijo,c_land.Comisionfija,c_land.Portefijo,c_land.caja,SUM(c_land.Etiquetas) Etiquetas,c_land.EmbalajeFijo, + c_land.novincular,c_land.buy_edi_id,c_land.Id_Article,SUM(c_land.Cantidad) Cantidad + from + -- Entradas que llegan a vnh + Compres c_land + JOIN + Entradas e_land ON c_land.Id_Entrada = e_land.Id_Entrada AND c_land.Id_Article = intArticle + JOIN + travel t_land ON t_land.id = e_land.travel_id + JOIN + Cubos cu ON cu.Id_Cubo = c_land.Id_Cubo + WHERE + -- Entradas que llegan a vnh + (t_land.warehouse_id = 7 AND t_land.landing = CURDATE()) + ) land + LEFT JOIN -- Entradas que salen de vnh + (SELECT SUM(c_ship.Etiquetas) Etiquetas,c_ship.Packing,SUM(c_ship.Cantidad) Cantidad + FROM Compres c_ship + LEFT JOIN Entradas e_ship ON c_ship.Id_Entrada = e_ship.Id_Entrada AND c_ship.Id_Article = intArticle + LEFT JOIN travel t_ship ON t_ship.id = e_ship.travel_id + WHERE t_ship.warehouse_id_out = 7 AND t_ship.shipment = CURDATE() + -- Entrada destino + ) ship ON TRUE + JOIN Entradas e2 ON e2.Id_Entrada = intEntrada + JOIN travel t ON t.id = e2.travel_id + JOIN Agencias a ON t.agency_id = a.Id_Agencia + -- Ventas ese dia en VNH + LEFT JOIN + (SELECT sum(Cantidad) as Ventas + FROM Movimientos m + JOIN Tickets t on t.Id_Ticket = m.Id_Ticket + WHERE t.Fecha = CURDATE() AND m.Id_Article = intArticle AND t.warehouse_id = 7) v on true + GROUP BY land.Id_Article; + CALL buy_tarifas(LAST_INSERT_ID()); + + END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `traslado_ticket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `traslado_ticket`(IN i_entrada INTEGER, IN i_ticket INTEGER) +BEGIN + + DECLARE intWarehouse INT; + DECLARE datTicket DATE; + + SELECT warehouse_id, Fecha INTO intWarehouse,datTicket FROM Tickets WHERE Id_Ticket = i_ticket; + + CALL buy_tarifas_table(i_entrada); + + CALL item_last_buy_(intWarehouse,datTicket); + + + INSERT INTO Compres( Id_Article, + Cantidad, + Novincular, + Id_Entrada, + Id_Cubo, + Packing, + grouping, + caja, + Portefijo, + Comisionfija, + Embalajefijo, + Costefijo, + Productor, + Tarifa2, + Tarifa3 + ) + + SELECT M.Id_Article, + IF(T.Id_Cliente IN (1625, 1118, 400), -1, 1) * M.Cantidad, + + IF(T.Id_Cliente IN (1625, 1118, 400), TRUE, FALSE), + i_entrada, + IFNULL(C.Id_Cubo,'--'), + C.Packing, + C.grouping, + C.caja, + @pf := ROUND(@cm3:=cm3_2(IFNULL(C.Id_Cubo,'--'), b.item_id) * AG.m3 / 1000000 / C.Packing ,3) AS Porte, + @cf := IFNULL(ROUND(C.Costefijo * E.comision / 100 ,3),0) AS Comision, + @ef := ROUND(IF(CB.Retornable = FALSE,CB.Valor/ C.Packing,0) ,3) AS Embalaje, + @cost := ROUND(IFNULL(C.Costefijo,0) + @cf + @ef + @pf,3), + C.Productor, + @t3 := ROUND(@cost / ((100 - TC.t3)/100),2) Tarifa3, + @t2 := IF(@cost / ((100 - TC.t2)/100) <= @t3,@t3+0.01,@cost / ((100 - TC.t2)/100)) Tarifa2 + + FROM Movimientos M + LEFT JOIN Tickets T USING(Id_Ticket) + LEFT JOIN t_item_last_buy b ON M.Id_Article = b.item_id AND T.warehouse_id = b.warehouse_id + LEFT JOIN Compres C ON C.Id_Compra = b.buy_id + LEFT JOIN Cubos CB ON CB.Id_Cubo = C.Id_Cubo + LEFT JOIN Entradas E ON E.Id_Entrada = i_entrada + LEFT JOIN travel TR ON TR.id = E.travel_id + LEFT JOIN Agencias AG ON AG.Id_Agencia = TR.agency_id + LEFT JOIN Proveedores P ON P.Id_Proveedor = E.Id_Proveedor + JOIN tblTARIFAS TC + LEFT JOIN tblContadores ON TRUE + JOIN (SELECT m3 as ZEL_PORT FROM Agencias WHERE Id_Agencia = 618) Z + WHERE M.Id_Ticket = i_ticket; + + + DROP TEMPORARY TABLE t_item_last_buy; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `travelDetail` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `travelDetail`() +BEGIN + +DECLARE vGap VARCHAR(10) DEFAULT ' '; +DECLARE vDateFrom DATE DEFAULT TIMESTAMPADD(WEEK,-1,CURDATE()); + +SELECT * FROM +( +SELECT + 1 as IsTravel, + tr.id as travel, + NULL as Entrada, + ag.Agencia, + tr.ref, + tr.shipment, + wo.name as OrigenCajas, + tr.landing, + w.name as Destino, + NULL as Etiquetas, + NULL as Notas_Eva, + kg, + cast(sum(tp.density * c.Etiquetas * IF(cb.Volumen, cb.Volumen, cb.X * cb.Y * cb.Z) / 1000000 ) as DECIMAL(10,0)) as loadedKg, + NULL as loadPriority, + NULL as awb + FROM travel tr + JOIN Entradas e ON e.travel_id = tr.id + JOIN Compres c ON c.Id_Entrada = e.Id_Entrada + JOIN Cubos cb ON cb.Id_Cubo = c.Id_Cubo + JOIN Articles a ON a.Id_Article = c.Id_Article + JOIN Tipos tp ON tp.tipo_id = a.tipo_id + JOIN warehouse w ON w.id = tr.warehouse_id + JOIN warehouse wo ON wo.id = tr.warehouse_id_out + JOIN Agencias ag ON ag.Id_Agencia = tr.agency_id + WHERE tr.landing >= vDateFrom + GROUP BY tr.id + +UNION ALL + +SELECT + 0 as IsTravel, + e.travel_id as travel, + e.Id_Entrada, + CONCAT(vGap,p.Proveedor), + e.Referencia, + tr.shipment, + wo.name as OrigenCajas, + tr.landing, + w.name as Destino, + sum(Etiquetas) as Etiquetas, + e.Notas_Eva, + NULL as kg, + cast(sum(tp.density * c.Etiquetas * IF(cb.Volumen, cb.Volumen, cb.X * cb.Y * cb.Z) / 1000000 ) as DECIMAL(10,0)) as loadedkg, + loadPriority, + CAST(awb.codigo AS DECIMAL(11,0)) as awb + + FROM Entradas e + LEFT JOIN recibida_entrada re ON re.Id_Entrada = e.Id_Entrada + LEFT JOIN awb_recibida ar ON ar.recibida_id = re.awb_recibida + LEFT JOIN awb ON awb.id = ar.awb_id + JOIN Compres c ON c.Id_Entrada = e.Id_Entrada + JOIN Cubos cb ON cb.Id_Cubo = c.Id_Cubo + JOIN Articles a ON a.Id_Article = c.Id_Article + JOIN Tipos tp ON tp.tipo_id = a.tipo_id + JOIN Proveedores p ON p.Id_Proveedor = e.Id_Proveedor + JOIN travel tr ON tr.id = e.travel_id + JOIN warehouse w ON w.id = tr.warehouse_id + JOIN warehouse wo ON wo.id = tr.warehouse_id_out + WHERE tr.landing >= vDateFrom + GROUP BY e.Id_Entrada +) sub +ORDER BY landing, travel, IsTravel DESC, (loadPriority > 0) DESC,loadPriority, Agencia, Notas_Eva ; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `travel_tree` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `travel_tree`(vDate DATE, vAddress INT, vAgency INT) +BEGIN +/** + * Devuelve la lista de almacenes disponibles y la fecha de + * envío desde cada uno. + * + * @param vDate Fecha de recepción de mercancía + * @param vAddress Id consignatario, %NULL para recogida + * @param vAgency Id de subagencia + * @table travel_tree Lista de almacenes disponibles + */ + DECLARE vDone BOOL; + DECLARE vWh SMALLINT; + + DECLARE vCur CURSOR FOR + SELECT w.id warehouse_id + FROM warehouse w + WHERE reserve; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + DROP TEMPORARY TABLE IF EXISTS travel_tree; + CREATE TEMPORARY TABLE travel_tree + ( + warehouse_id TINYINT NOT NULL PRIMARY KEY, + Fecha_envio DATE NOT NULL, + Fecha_recepcion DATE NOT NULL + ) + ENGINE = MEMORY; + + -- Establecemos los almacenes y las fechas que van a entrar + + OPEN vCur; + + l: LOOP + SET vDone = FALSE; + FETCH vCur INTO vWh; + + IF vDone THEN + LEAVE l; + END IF; + + INSERT INTO travel_tree (warehouse_id, Fecha_envio, Fecha_recepcion) + SELECT vWh, shipping, vDate FROM ( + SELECT TIMESTAMPADD(DAY, -ah.subtract_day, vDate) shipping, ah.max_hour + FROM agency_hour ah + LEFT JOIN Consignatarios c ON c.Id_Consigna = vAddress + WHERE ah.warehouse_id = vWh + AND (week_day = WEEKDAY(vDate) + OR week_day IS NULL) + AND (ah.agency_id = vAgency + OR ah.agency_id IS NULL) + AND (ah.province_id = c.province_id + OR ah.province_id IS NULL + OR vAddress IS NULL) + ORDER BY ( + (ah.week_day IS NOT NULL) + + (ah.agency_id IS NOT NULL) + + ((ah.province_id IS NOT NULL) * 3) + ) DESC + LIMIT 1 + ) t + WHERE shipping >= CURDATE() + AND IF(shipping = CURDATE(), max_hour > HOUR(NOW()), TRUE); + END LOOP; + + CLOSE vCur; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `travel_tree_list` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `travel_tree_list`(vAddress INT, vDate DATE) +BEGIN +/** + * Devuelve el listado de agencias disponibles para la fecha + * y dirección pasadas. + * + * @param vAddress Id de dirección de envío, %NULL si es recogida + * @param vDate Fecha de recogida + * @table agency_list Listado de agencias disponibles + */ + DECLARE vAgency INT; + DECLARE vDone BOOL DEFAULT FALSE; + + DECLARE vCur CURSOR FOR + SELECT DISTINCT agency_id + FROM agency + JOIN agency_hour USING(agency_id); + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + DROP TEMPORARY TABLE IF EXISTS agency_list; + CREATE TEMPORARY TABLE agency_list ( + Id_Agencia INT NOT NULL, + Agencia VARCHAR(20), + description VARCHAR(45), + Vista VARCHAR(45), + shipment DATE, + Descripcion VARCHAR(45), + PRIMARY KEY(Id_Agencia) + ) + ENGINE = MEMORY; + + OPEN vCur; + FETCH vCur INTO vAgency; + + WHILE NOT vDone + DO + CALL travel_tree (vDate, vAddress, vAgency); + + INSERT INTO agency_list + SELECT a.Id_Agencia, a.Agencia, a.description, + a.Vista, t.Fecha_Envio, w.name as Descripcion + FROM Agencias a + JOIN travel_tree t + JOIN warehouse w on w.id = t.warehouse_id + WHERE agency_id = vAgency + AND a.web + ON DUPLICATE KEY UPDATE + Descripcion = CONCAT(Descripcion, ', ', w.name); + + FETCH vCur INTO vAgency; + END WHILE; + + CLOSE vCur; + + SELECT * FROM agency_list; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `travel_tree_shipment` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `travel_tree_shipment`(v_date DATE, v_consigna INT, v_agency INT, v_warehouse INT) +BEGIN +/** + * Devuelve una tabla temporal con el dia de recepcion para v_date. + * + * @param v_date Fecha de preparacion de mercancia + * @param v_consigna Id de consignatario, %NULL para recogida + * @param v_agency Id agencia + * @table travel_tree_shipment Datos de recepción + */ + DROP TEMPORARY TABLE IF EXISTS travel_tree_shipment; + CREATE TEMPORARY TABLE travel_tree_shipment + ENGINE = MEMORY + SELECT v_warehouse warehouse_id, v_envio landing FROM ( + SELECT * FROM ( + SELECT v_warehouse, TIMESTAMPADD(DAY, subtract_day, v_date) v_envio, subtract_day, ah.max_hour + FROM agency_hour ah + LEFT JOIN Consignatarios c ON c.Id_Consigna = v_consigna + WHERE (week_day = weekday(TIMESTAMPADD(DAY, subtract_day, v_date)) OR week_day IS NULL) + AND (ah.agency_id = v_agency OR ah.agency_id IS NULL) + AND ah.warehouse_id = v_warehouse + AND (ah.province_id = c.province_id OR ah.province_id IS NULL OR v_consigna IS NULL) + ORDER BY ( + (ah.week_day IS NOT NULL) + + (ah.agency_id IS NOT NULL) + + ((ah.province_id IS NOT NULL)*3) + ) DESC + ) t + LIMIT 1 + ) t + WHERE IF(v_date = CURDATE(), max_hour > HOUR(NOW()), TRUE) AND subtract_day < 225; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `turnoClon` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `turnoClon`(IN vWeek INT, IN vYear INT) +BEGIN + +DECLARE done BIT DEFAULT 0; +DECLARE myEntrada INT; +DECLARE myWeekday INT; +DECLARE myLanding DATE; +DECLARE myShipment DATE; +DECLARE myDateDiff INT; +DECLARE myTravel INT; +DECLARE myNuevaEntrada INT; +DECLARE myWH_IN INT; +DECLARE myWH_OUT INT; + +DECLARE rs CURSOR FOR +SELECT Id_Entrada, weekDay FROM Entradas_turno; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + +IF vWeek = 0 THEN + + SET vWeek = WEEK(TIMESTAMPADD(WEEK,1,CURDATE())); + SET vYear = YEAR(TIMESTAMPADD(WEEK,1,CURDATE())); + +END IF; + + +OPEN rs; + +FETCH rs INTO myEntrada, myWeekday; + +WHILE NOT done DO + + SELECT DATEDIFF(landing,shipment), warehouse_id, warehouse_id_out INTO myDateDiff, myWH_IN, myWH_OUT + FROM travel t + JOIN Entradas e on e.travel_id = t.id + WHERE Id_Entrada = myEntrada; + + SELECT date, TIMESTAMPADD(DAY, - myDateDiff, date) + INTO myLanding , myShipment + FROM time + WHERE year = vYear AND week = vWeek + AND WEEKDAY(date) = myWeekday; + + SELECT t.id INTO myTravel + FROM travel t + WHERE shipment = myShipment + AND landing = myLanding + AND warehouse_id = myWH_IN + AND warehouse_id_out = myWH_OUT + LIMIT 1; + + IF IFNULL(myTravel,0) = 0 THEN + + INSERT INTO travel(shipment, shipment_hour, landing,landing_hour, warehouse_id, warehouse_id_out,agency_id, ref) + SELECT myShipment, shipment_hour, myLanding ,landing_hour, warehouse_id, warehouse_id_out,agency_id, ref + FROM travel t + JOIN Entradas e on e.travel_id = t.id + WHERE Id_Entrada = myEntrada; + + SELECT LAST_INSERT_ID() INTO myTravel; + + + END IF; + + INSERT INTO Entradas(Id_Proveedor,Referencia, Notas, Id_Moneda, empresa_id, travel_id) + SELECT Id_Proveedor, Referencia, Notas, Id_Moneda, empresa_id, myTravel + FROM Entradas + WHERE Id_Entrada = myEntrada; + + SELECT LAST_INSERT_ID() INTO myNuevaEntrada; + + INSERT INTO Compres(Id_Entrada, Id_Article, Cantidad, Costefijo, Portefijo, Embalajefijo, Novincular, Comisionfija, Etiquetas, Packing + ,grouping, caja, /*container_id, */ Nicho, Id_Cubo, Tarifa1,Tarifa2,Tarifa3, PVP, Productor) + SELECT myNuevaEntrada, Id_Article, Cantidad, Costefijo, Portefijo, Embalajefijo, Novincular, Comisionfija, Etiquetas, Packing + ,grouping, caja,/* container_id, */ Nicho, Id_Cubo, Tarifa1,Tarifa2,Tarifa3, PVP, Productor + FROM Compres + WHERE Id_Entrada = myEntrada; + + + FETCH rs INTO myEntrada, myWeekday; + +END WHILE; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `turn_calculartiempomedio` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `turn_calculartiempomedio`() +BEGIN + +DECLARE strTiempoAprox NVARCHAR(255); + +SELECT +CASE WHEN @min>45 THEN concat(@hora:=@hora+1,' horas ') +WHEN @hora >0 THEN concat(@hora,' horas ') +WHEN @min>=0 and @min<15 THEN '15 Minutos' +WHEN @min<30 THEN '30 Minutos' +WHEN @min<45 THEN '45 Minutos' +ELSE '' and @hora=@hora+1 END AS tiempoaprox +INTO strTiempoAprox +FROM ( + select min(sub1.adate) as adate,max(sub1.bdate) as bdate, + @hora:=ROUND((TIMESTAMPDIFF(HOUR,min(sub1.adate),max(sub1.bdate)) /10),0), + @min:=ROUND((TIMESTAMPDIFF(MINUTE,min(sub1.adate),max(sub1.bdate)) mod 60)/10,0) + from ( + select a.odbc_date as adate,b.odbc_date as bdate + from turn a + INNER JOIN turn b on a.number=(b.number-1) + WHERE TIMESTAMPDIFF(HOUR,b.odbc_date,a.odbc_date)<1 + ORDER BY a.odbc_date DESC,b.odbc_date DESC + LIMIT 10) sub1) sub2; + +SELECT strTiempoAprox as TiempoAprox; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ubicator` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ubicator`(IN i_wh TINYINT, IN d_fecha DATE,IN filtro VARCHAR(255)) +BEGIN + + + DECLARE date_inv DATE; + + +DROP TEMPORARY TABLE IF EXISTS stock_actual; +DROP TEMPORARY TABLE IF EXISTS vn2008.tmp_ubicator_stock; + + +SELECT FechaInventario INTO date_inv + FROM tblContadores LIMIT 1; + + +CREATE TEMPORARY TABLE stock_actual +SELECT Id_Article article_id,SUM(Cantidad) amount FROM ( + SELECT Id_Article,Cantidad + FROM Compres c + JOIN Entradas e USING(Id_Entrada) + JOIN travel t ON t.id = e.travel_id + WHERE landing BETWEEN date_inv AND d_fecha + AND warehouse_id = i_wh AND NOT Redada + + UNION ALL + + -- JGF Error cuando se pedia para una fecha futura 30/06/14 + /*SELECT Id_Article,-Cantidad + FROM Compres c + JOIN Entradas e USING(Id_Entrada) + JOIN travel t ON t.id = e.travel_id + WHERE shipment BETWEEN date_inv AND timestampadd(DAY,-1,d_fecha) + AND warehouse_id_out = i_wh AND NOT Redada*/ + SELECT Id_Article,-Cantidad + FROM Compres c + JOIN Entradas e USING(Id_Entrada) + JOIN travel t ON t.id = e.travel_id + WHERE shipment BETWEEN date_inv AND CURDATE() + AND warehouse_id_out = i_wh AND NOT Redada AND delivered + UNION ALL + + -- JGF Error cuando se pedia para una fecha futura 30/06/14 + + /*SELECT Id_Article, -Cantidad + FROM Movimientos m + JOIN Tickets t USING(Id_Ticket) + WHERE Fecha BETWEEN date_inv AND timestampadd(DAY,-1,d_fecha) + AND warehouse_id = i_wh */ + SELECT Id_Article, -Cantidad + FROM Movimientos m + JOIN Tickets t USING(Id_Ticket) + WHERE Fecha BETWEEN date_inv AND CURDATE() + AND warehouse_id = i_wh AND Etiquetasemitidas + + +) t GROUP BY article_id; + +/* +SELECT * from stock_actual;*/ + +-- TEMPORARY +CALL hedera.sql_query (sql_printf(' + CREATE TEMPORARY TABLE IF NOT EXISTS vn2008.tmp_ubicator_stock AS + SELECT A.Id_Article,A.Article, T.Id_Cubo,IF(Z > 0,Z,0) as z,x,y, + CEIL(S.Suma/T.packing) as etiquetas,A.Medida,A.Nicho + FROM vn2008.Articles A + INNER JOIN + (SELECT article_id, amount as SUMA + FROM vn2008.stock_actual + WHERE amount > 0 + ) as S ON S.article_id = A.Id_Article + LEFT JOIN ( + SELECT * FROM ( + SELECT c.Id_Article item_id, c.Id_Compra id, c.Id_Cubo,c.packing + FROM vn2008.Compres c INNER JOIN vn2008.Entradas e USING(Id_Entrada) + INNER JOIN vn2008.travel t ON t.id = e.travel_id + WHERE t.landing BETWEEN vn2008.date_inv() AND %v + AND c.Novincular = FALSE + AND c.Tarifa2 >= 0 AND Id_Cubo IS NOT NULL + ORDER BY 1 = t.warehouse_id DESC, t.landing DESC + ) t1 GROUP BY item_id + ) as T ON T.item_id = A.Id_Article + LEFT JOIN vn2008.Cubos C USING(Id_Cubo) + WHERE %s AND CEIL(S.Suma/T.packing) > 0',d_fecha,filtro)); + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ubicator_calcularhuecosvacios` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ubicator_calcularhuecosvacios`(int_H int,int_X int,int_Y int,int_Z int,intId_Estanterias int,intId_Baldas int,contId_Estanterias int) +BEGIN +DECLARE intnumcubostotal,intnumcubosocup SMALLINT DEFAULT 0; +DECLARE posX,posY,posZ,intId_Article,x_cubo,y_cubo INT DEFAULT 0; +DECLARE strId_Cubo VARCHAR(10); +DECLARE strArticle,strmodelo VARCHAR(50) DEFAULT '---'; +DECLARE intContador INT DEFAULT 1; + + SELECT COUNT(*) INTO intnumcubosocup FROM Ubicator_Cajas + WHERE W=int_X and D=int_Y and Id_Estanterias=intId_Estanterias and Id_Baldas=intId_Baldas and NumEstanterias=contId_Estanterias; + + SELECT W,D,H,Id_Cubo,Id_Article,modelo,Article,x,y + INTO posX,posY,posZ,strId_Cubo,intId_Article,strmodelo,strArticle,x_cubo,y_cubo + FROM Ubicator_Cajas + WHERE W=int_X and D=int_Y and Id_Estanterias=intId_Estanterias and Id_Baldas=intId_Baldas and NumEstanterias=contId_Estanterias + ORDER BY H DESC LIMIT 1; + + WHILE (int_Z*intContador0) DO + SET posZ=posZ+int_Z; + -- INSERT INTO Ubicator_Cajas + -- (Id_Estanterias,NumEtiquetas,W ,D,H ,Id_Cubo ,Id_Article,POSX,POSY,POSZ,Id_Article_aux ,Id_Baldas,modelo,Article,Medida) + -- VALUES (intId_Estanterias ,1,posX,posY,posZ,strId_Cubo ,intId_Article,0,0,0,0,intId_Baldas,strmodelo,'',int_Z); + INSERT INTO Ubicator_Cajas (Id_Estanterias,Id_Baldas,modelo,W ,D,H ,Id_Cubo,X,Y,Z,Medida,Id_Article,Article,numEstanterias) + VALUES (intId_Estanterias,intId_Baldas,strmodelo,posX,posY,posZ,strId_Cubo,x_cubo,y_cubo,int_Z,null,intId_Article,'',contId_Estanterias); + SET intnumcubosocup=intnumcubosocup+1; + END WHILE; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ubicator_ordenacion` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ubicator_ordenacion`(date DATE,boolORDALFA TINYINT(1), intWAREHOUSE INT,strFILTRO NVARCHAR(255), boolESAPILABLE TINYINT(1),boolESABIERTO TINYINT(1),intCmNichoExtra SMALLINT,inEstanteria SMALLINT,strOrdenacion varchar(255)) +BEGIN +-- Inicializo variables +-- boolESABIERTO --> permite apilar las cajas de diferentes articulos (cerrada) para aprovechar el espacio. +DECLARE intPOSX,intPOSY,intPOSZ,intSUMAH,intCMNICHO_EXTRA INT DEFAULT 0; +DECLARE intId_Estanterias,intW,intD,intId_Baldas,intH,intEtiquetas, + intX,intY,intZ,ReturnX,ReturnY,ReturnZ,Cantidad,intId_Baldas_aux INT DEFAULT 0; +DECLARE strId_Cubo VARCHAR(10) DEFAULT '---'; +DECLARE intId_Article,Id_Article_aux,alturabalda,intZ_aux INT DEFAULT 0; +DECLARE contId_Estanterias INT DEFAULT 1; +DECLARE strmodelo VARCHAR(255) DEFAULT '---'; +DECLARE done BIT DEFAULT 0; +DECLARE strArticle VARCHAR(50); +DECLARE boolCabeCaja,boolPasarZ,boolPasarX,boolNoNextRecord,fin BOOLEAN DEFAULT FALSE; +DECLARE intMedida,intX_ant,intY_ant,IntZ_ant INT(10) DEFAULT 0; + +-- ejemplo: call ubicator_ordenacion(CURDATE(),false,1,'tipo_id = 2',TRUE,FALSE,2,1) + +-- Declaro el cursor para leer las estanterias y las baldas ordenadas por las baldas. (La primera es la de arriba). +DECLARE cursor_estanterias CURSOR FOR SELECT Id_Estanterias,w,d,modelo,Id_Baldas,h FROM Estanterias + INNER JOIN Baldas USING (Id_Estanterias) WHERE Id_Estanterias=inEstanteria ORDER BY Id_Estanterias,Id_Baldas; + +-- Declaro el cursor para leer el recorset de los cubos a colocar en las estanterias obteniendo las variables X,Y,Z del cubo. +DECLARE cursor_ubicator CURSOR FOR SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,Z,Article,Medida FROM ubicator_stock; + -- Creo la tabla temporal donde devuelvo la ordenación de las cajas. + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; -- handler para el cursor de las estanterias y baldas + +DROP TEMPORARY TABLE IF EXISTS Ubicator_Cajas; +/* + CREATE TEMPORARY TABLE IF NOT EXISTS Ubicator_Cajas (Id_Estanterias INT,Id_Baldas SMALLINT,modelo varchar(255), + W SMALLINT,D SMALLINT,H SMALLINT,Id_Cubo VARCHAR(10),X SMALLINT,Y SMALLINT,Z SMALLINT,Medida SMALLINT,Id_Article INT(11),Article varchar(50),NumEstanterias SMALLINT); +*/ + + CREATE TEMPORARY TABLE IF NOT EXISTS Ubicator_Cajas(Id_Estanterias INT,Id_Baldas SMALLINT,modelo varchar(255), + W SMALLINT,D SMALLINT,H SMALLINT,Id_Cubo VARCHAR(10),X SMALLINT,Y SMALLINT,Z SMALLINT,Medida SMALLINT, + Id_Article INT(11),Article varchar(50),NumEstanterias SMALLINT,NumEtiquetas INT,POSX INT (11),POSY INT(11), + POSZ INT(11),Id_Article_aux int(11)); + +-- Creo la tabla temporal donde voy a insertar las cajas que no caben en las estanterias. +DROP TEMPORARY TABLE IF EXISTS Ubicator_CajasNoCaben; +CREATE TEMPORARY TABLE IF NOT EXISTS Ubicator_CajasNoCaben (Id_Cubo VARCHAR(10),Id_Estanteria SMALLINT); + +CALL ubicator (intWAREHOUSE,date,strFILTRO); -- Ejecuto el procedimiento de stock para recorrer los articulos con las cajas. + +DROP TEMPORARY TABLE IF EXISTS ubicator_stock; + +SET @SQL=CONCAT('CREATE TEMPORARY TABLE IF NOT EXISTS ubicator_stock SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,IF(Z=0,Medida,Z) Z,Article,Medida,IF(LOWER(Article) like "%mix%",1,0) AS MIX FROM tmp_ubicator_stock + ORDER BY MIX,',strOrdenacion); + +PREPARE stmt1 FROM @SQL; +EXECUTE stmt1; +DEALLOCATE PREPARE stmt1; + + -- IF (boolORDALFA) THEN + -- CREATE TEMPORARY TABLE IF NOT EXISTS ubicator_stock SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,IF(Z=0,Medida,Z) Z,Article,Medida FROM tmp_ubicator_stock + -- ORDER BY Article,Medida; + -- ELSE + -- CREATE TEMPORARY TABLE IF NOT EXISTS ubicator_stock SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,IF(Z=0,Medida,Z) Z,Article,Medida FROM tmp_ubicator_stock + -- ORDER BY Id_Article; + -- END IF; + +-- Open Recordsets +OPEN cursor_estanterias; +OPEN cursor_ubicator; + +REPEAT + FETCH cursor_estanterias INTO intId_Estanterias,intW,intD,strmodelo,intId_Baldas,intH; + + IF (done) THEN -- Si llega a la ultima balda, empieza de nuevo. + CLOSE cursor_estanterias; + SET done=FALSE; + OPEN cursor_estanterias; + SET contId_Estanterias=contId_Estanterias+1; + FETCH cursor_estanterias INTO intId_Estanterias,intW,intD,strmodelo,intId_Baldas,intH; + END IF; + + -- Obtengo la altura absoluta de la balda. + SELECT CASE WHEN (SUM(H)>=0) THEN SUM(H) ELSE 0 END As suma INTO intSUMAH + FROM Baldas WHERE Id_Estanterias=intId_Estanterias and Baldas.Id_Baldas>intId_Baldas; + + SELECT H INTO alturabalda + FROM Baldas WHERE Id_Estanterias=intId_Estanterias and Baldas.Id_Baldas=intId_Baldas; + + SET intPOSX=0,intPOSY=0,intPOSZ=0,intId_Baldas_aux=0; + + ITERACION:WHILE NOT done DO + IF (NOT boolNoNextRecord) THEN + FETCH cursor_ubicator INTO strId_Cubo,intEtiquetas,intId_Article,intX,intY,intZ,strArticle,intMedida; + IF (DONE) THEN + LEAVE ITERACION; + END IF; + SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,Z,Article,Medida FROM ubicator_stock ORDER BY Id_Article; + SET Cantidad=0; + END IF; + -- SET Medida=intZ; + -- 1. Compruebo que cabe la caja en la estanteria + + SELECT ubicator_cabecaja(intX,intY,intZ,intW,intD,intH) INTO boolCabeCaja; + IF (NOT boolCabeCaja) THEN -- Compruebo si la caja cabe en la estanteria sino la coloco en una tabla temporal. + INSERT INTO Ubicator_CajasNoCaben (Id_Cubo,Id_Estanteria) VALUES (strId_Cubo,intId_Estanterias); + SET Id_Article_aux=intId_Article,boolNoNextRecord=FALSE; + ITERATE ITERACION; + END IF; + + SET boolPasarX=FALSE,boolPasarZ=FALSE; + -- Inicializo el contador + REPEAT + SET Cantidad=Cantidad+1; -- Incremento el contador en 1 + IF (intId_Baldas_aux<>intId_Baldas) THEN + SET intId_Baldas_aux=intId_Baldas; + SET intPOSX=0,intPOSY=0,intPOSZ=0; + END IF; + IF (boolESAPILABLE AND intPOSZ>0 AND intZ>0) THEN -- Es Apilable + IF (boolESABIERTO) THEN -- abierto + -- SET intPOSX=intPOSX+intCmNichoExtra,intPOSZ=0,intPOSY=0,Id_Article_aux=intId_Article; + IF (intId_Article=Id_Article_aux) THEN -- mismo articulo + SET boolPasarX=FALSE,boolPasarZ=TRUE; + SET intPOSX=intPOSX-intX; + ELSE -- distinto articulo + SET boolPasarX=TRUE,boolPasarZ=TRUE; + SET intPOSY=intY,intPOSZ=intZ; + SET Id_Article_aux=intId_Article; + SET intPOSX=intPOSX+intCmNichoExtra; + END IF; + ELSE -- cerrado + IF ((intZ=intZ_ant) AND (intY=intY_ant) AND (intX=intX_ant)) THEN -- tienen que ser del mismo tamaño + SET intPOSX=intPOSX-intX; + SET boolPasarX=FALSE,boolPasarZ=FALSE; + ELSE + CALL ubicator_calcularhuecosvacios (alturabalda,ReturnX,ReturnY,intZ_aux,intId_Estanterias,intId_Baldas,contId_Estanterias); -- Calculo las cajas vacias + SET intPOSY=intY,intPOSZ=intZ; + SET boolPasarX=TRUE,boolPasarZ=TRUE; + SET intPOSX=intPOSX+intCmNichoExtra; + END IF; -- article + END IF; + ELSE -- No apilable or posz<>0 + IF (NOT boolESAPILABLE AND boolESABIERTO) THEN + SET boolPasarX=FALSE,boolPasarZ=FALSE; + -- @@@ cambio abierto no apilable + SET intPOSZ=0; -- no se puede subir en altura + IF (intId_Article<>Id_Article_aux and Id_Article_aux<>0) THEN -- cambio @@@vicente, añado id_Article_aux<>0 + SET intPOSY=0; + END IF; + ELSE + SET boolPasarX=TRUE,boolPasarZ=TRUE; + SET intPOSY=intY,intPOSZ=intZ; + END IF; + + -- @@@@ cambio + IF (intPOSX>0) THEN -- SI ES EL PRIMER ELEMENTO (X=0) NO LE INCREMENTE LOS CM EXTRA DEL NICHO si la profundidad es menor no lo incrementa + SET intPOSX=intPOSX+intCmNichoExtra; + END IF; + END IF; -- apilable + + Condicional:loop + IF (NOT boolPasarX) THEN + IF (NOT boolPasarZ) THEN + IF (intD-intPOSY>intY) THEN -- cabe de profundo + SET intPOSY=intPOSY+intY; + -- @@@@ULTIMO CAMBIO + IF (intPOSX>0) and (intId_Article=Id_Article_aux) THEN + IF (intPOSX-intX-intCmNichoExtra<0) THEN + SET intPOSX=0,boolNoNextRecord=TRUE,Cantidad=Cantidad-1; + LEAVE ITERACION; + END IF; + SET intPOSX=intPOSX-intX-intCmNichoExtra; -- cambio @@@vicente quito descomentando + END IF; + -- @@@@ fin ultimo cambio + ELSE + SET intPOSY=intY; + END IF; + END IF; -- boolpasarz (depth) + + IF (intH-intPOSZ>intZ) THEN + SET intPOSZ=intPOSZ+intZ; + ELSE + IF (intD-intPOSY>intY) THEN + SET boolPasarZ=FALSE,boolPasarX=FALSE,intPOSZ=intZ; + ITERATE Condicional; + END IF; + SET intPOSZ=intZ; + SET intPOSY=intY; + SET intPOSX=intPOSX+intX+intCmNichoExtra; + END IF; + END IF; -- boolpasarx + + IF (intW-intPOSX>intX) THEN + SET intPOSX=intPOSX+intX; + ELSE + SET intPOSX=0,boolNoNextRecord=TRUE,Cantidad=Cantidad-1; + LEAVE ITERACION; + END IF; + LEAVE Condicional; + END loop Condicional; + + SET ReturnX=intPOSX-intX; -- Anchura absoluta x del artículo + SET ReturnZ=intSUMAH+intPOSZ-intZ; -- Altura absoluta del cubo + SET ReturnY=intPOSY-intY; -- Profundidad absoluta del artículo + + SET boolPasarZ=FALSE,boolPasarX=FALSE; + + /* + INSERT INTO Ubicator_Cajas (Id_Estanterias,Id_Baldas,modelo,W ,D,H ,Id_Cubo,X,Y,Z,Medida,Id_Article,Article,NumEstanterias) + VALUES (intId_Estanterias,intId_Baldas,strmodelo,ReturnX ,ReturnY,ReturnZ ,strId_Cubo,intX,intY,intZ,intMedida,intId_Article,strArticle,contId_Estanterias); + */ + + INSERT INTO Ubicator_Cajas (Id_Estanterias,Id_Baldas,modelo,W ,D,H ,Id_Cubo,X,Y,Z,Medida,Id_Article,Article,NumEstanterias, + NumEtiquetas,POSX,POSY,POSZ,Id_Article_aux) + VALUES (intId_Estanterias,intId_Baldas,strmodelo,ReturnX ,ReturnY,ReturnZ ,strId_Cubo,intX,intY,intZ,intMedida,intId_Article,strArticle,contId_Estanterias, + intEtiquetas,intPOSX,intPOSY,intPOSZ,Id_Article_aux); + + SET Id_Article_aux=intId_Article,intZ_aux=intZ,boolNoNextRecord=FALSE; + -- Cambio + SET intZ_ant=intZ,intY_ant=intY,intX_ant=intX; + UNTIL Cantidad=intEtiquetas END REPEAT; + END WHILE ITERACION; + + IF (done) THEN + SET fin=TRUE; + END IF; +UNTIL fin END REPEAT; +CLOSE cursor_ubicator; +CLOSE cursor_estanterias; + +-- select * from Ubicator_Cajas; +-- select * from ubicator_stock; +-- select * from Ubicator_CajasNoCaben; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ubicator_ordenacion_distrib` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ubicator_ordenacion_distrib`(date DATE,boolORDALFA TINYINT(1), intWAREHOUSE INT,strFILTRO NVARCHAR(255), boolESAPILABLE TINYINT(1),boolESABIERTO TINYINT(1),intCmNichoExtra SMALLINT,inEstant_distrib SMALLINT) +BEGIN +-- Inicializo variables +-- boolESABIERTO --> permite apilar las cajas de diferentes articulos (cerrada) para aprovechar el espacio. +DECLARE intPOSX,intPOSY,intPOSZ,intSUMAH,intCMNICHO_EXTRA INT DEFAULT 0; +DECLARE intId_Estanterias,intW,intD,intId_Baldas,intH,intEtiquetas, + intX,intY,intZ,ReturnX,ReturnY,ReturnZ,Cantidad,intId_Baldas_aux INT DEFAULT 0; +DECLARE strId_Cubo VARCHAR(10) DEFAULT '---'; +DECLARE intId_Article,Id_Article_aux,alturabalda,intZ_aux INT DEFAULT 0; +DECLARE contId_Estanterias INT DEFAULT 0; +DECLARE strmodelo VARCHAR(255) DEFAULT '---'; +DECLARE done BIT DEFAULT 0; +DECLARE strArticle VARCHAR(50); +DECLARE boolCabeCaja,boolPasarZ,boolPasarX,boolNoNextRecord,fin BOOLEAN DEFAULT FALSE; +DECLARE intMedida,intX_ant,intY_ant,IntZ_ant ,intposinicial,intposfinal,auxintId_Estanterias,auxintposinicial,auxintposfinal,intnumdistrib,nestanterias INT(11) DEFAULT 0; + +-- ejemplo: call ubicator_ordenacion(CURDATE(),false,1,'tipo_id = 2',TRUE,FALSE,2,1) + +-- Declaro el cursor para leer las estanterias y las baldas ordenadas por las baldas. (La primera es la de arriba). +DECLARE cursor_estanterias CURSOR FOR SELECT Id_Estanterias,w,d,modelo,Id_Baldas,h,posinicial,posfinal FROM Estanterias + INNER JOIN Baldas USING (Id_Estanterias) + INNER JOIN Estanterias_distri using (Id_Estanterias) + WHERE IdEstanterias_distri=inEstant_distrib + -- AND Id_Estanterias>nestanterias + AND posinicial>auxintposinicial + ORDER BY posinicial; + +-- Declaro el cursor para leer el recorset de los cubos a colocar en las estanterias obteniendo las variables X,Y,Z del cubo. +DECLARE cursor_ubicator CURSOR FOR SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,Z,Article,Medida FROM ubicator_stock; + -- Creo la tabla temporal donde devuelvo la ordenación de las cajas. + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; -- handler para el cursor de las estanterias y baldas + +DROP TEMPORARY TABLE IF EXISTS Ubicator_Cajas; +CREATE TEMPORARY TABLE IF NOT EXISTS Ubicator_Cajas (Id_Estanterias INT,Id_Baldas SMALLINT,modelo varchar(255), +W SMALLINT,D SMALLINT,H SMALLINT,Id_Cubo VARCHAR(10),X SMALLINT,Y SMALLINT,Z SMALLINT,Medida SMALLINT,Id_Article INT(11),Article varchar(50),NumEstanterias SMALLINT); + + /* + CREATE TEMPORARY TABLE IF NOT EXISTS Ubicator_Cajas(Id_Estanterias INT,Id_Baldas SMALLINT,modelo varchar(255), + W SMALLINT,D SMALLINT,H SMALLINT,Id_Cubo VARCHAR(10),X SMALLINT,Y SMALLINT,Z SMALLINT,Medida SMALLINT, + Id_Article INT(11),Article varchar(50),NumEstanterias SMALLINT,NumEtiquetas INT,POSX INT (11),POSY INT(11), + POSZ INT(11),Id_Article_aux int(11)); + */ + +-- Creo la tabla temporal donde voy a insertar las cajas que no caben en las estanterias. +DROP TEMPORARY TABLE IF EXISTS Ubicator_CajasNoCaben; +CREATE TEMPORARY TABLE IF NOT EXISTS Ubicator_CajasNoCaben (Id_Cubo VARCHAR(10),Id_Estanteria SMALLINT); + +CALL ubicator (intWAREHOUSE,date,strFILTRO); -- Ejecuto el procedimiento de stock para recorrer los articulos con las cajas. + +DROP TEMPORARY TABLE IF EXISTS ubicator_stock; +IF (boolORDALFA) THEN + CREATE TEMPORARY TABLE IF NOT EXISTS ubicator_stock SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,Z,Article,Medida FROM tmp_ubicator_stock + ORDER BY Article,Medida; +ELSE + CREATE TEMPORARY TABLE IF NOT EXISTS ubicator_stock SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,Z,Article,Medida FROM tmp_ubicator_stock + ORDER BY Id_Article; + END IF; + +-- Open Recordsets +OPEN cursor_estanterias; +OPEN cursor_ubicator; +SET contId_Estanterias=0; +REPEAT + FETCH cursor_estanterias INTO intId_Estanterias,intW,intD,strmodelo,intId_Baldas,intH,intposinicial,intposfinal; + + IF (contId_Estanterias=0) THEN + SET contId_Estanterias=1; + SET auxintId_Estanterias=intId_Estanterias; + SELECT (intposfinal-intposinicial+1)*Id_Baldas into auxintposfinal from Baldas where Id_Estanterias=intId_Estanterias order by Id_Baldas DESC limit 1; + END IF; + + IF (done) THEN + SELECT DISTINCT posinicial-1 INTO auxintposinicial + FROM Estanterias_distri + WHERE Id_Estanterias=auxintId_Estanterias; + -- SET nestanterias=auxintId_Estanterias-1; + + CLOSE cursor_estanterias; + OPEN cursor_estanterias; + FETCH cursor_estanterias INTO intId_Estanterias,intW,intD,strmodelo,intId_Baldas,intH,intposinicial,intposfinal; + END IF; + + IF (auxintId_Estanterias<>IFNULL(intId_Estanterias,auxintId_Estanterias)) THEN + SET done=TRUE; + END IF; + SET intnumdistrib=intnumdistrib+1; + + IF (done) THEN -- Si llega a la ultima balda, empieza de nuevo. + IF (intnumdistrib=0) THEN SUM(H) ELSE 0 END As suma INTO intSUMAH + FROM Baldas WHERE Id_Estanterias=intId_Estanterias and Baldas.Id_Baldas>intId_Baldas; + + SELECT H INTO alturabalda + FROM Baldas WHERE Id_Estanterias=intId_Estanterias and Baldas.Id_Baldas=intId_Baldas; + + SET intPOSX=0,intPOSY=0,intPOSZ=0,intId_Baldas_aux=0; + + ITERACION:WHILE NOT done DO + IF (NOT boolNoNextRecord) THEN + FETCH cursor_ubicator INTO strId_Cubo,intEtiquetas,intId_Article,intX,intY,intZ,strArticle,intMedida; + IF (DONE) THEN + LEAVE ITERACION; + END IF; + SELECT Id_Cubo,Etiquetas,Id_Article,X,Y,Z,Article,Medida FROM ubicator_stock ORDER BY Id_Article; + SET Cantidad=0; + END IF; + -- SET Medida=intZ; + -- 1. Compruebo que cabe la caja en la estanteria + + SELECT ubicator_cabecaja(intX,intY,intZ,intW,intD,intH) INTO boolCabeCaja; + IF (NOT boolCabeCaja) THEN -- Compruebo si la caja cabe en la estanteria sino la coloco en una tabla temporal. + INSERT INTO Ubicator_CajasNoCaben (Id_Cubo,Id_Estanteria) VALUES (strId_Cubo,intId_Estanterias); + SET Id_Article_aux=intId_Article,boolNoNextRecord=FALSE; + ITERATE ITERACION; + END IF; + + SET boolPasarX=FALSE,boolPasarZ=FALSE; + -- Inicializo el contador + REPEAT + SET Cantidad=Cantidad+1; -- Incremento el contador en 1 + IF (intId_Baldas_aux<>intId_Baldas) THEN + SET intId_Baldas_aux=intId_Baldas; + SET intPOSX=0,intPOSY=0,intPOSZ=0; + END IF; + IF (boolESAPILABLE AND intPOSZ>0 AND intZ>0) THEN -- Es Apilable + IF (boolESABIERTO) THEN -- abierto + -- SET intPOSX=intPOSX+intCmNichoExtra,intPOSZ=0,intPOSY=0,Id_Article_aux=intId_Article; + IF (intId_Article=Id_Article_aux) THEN -- mismo articulo + SET boolPasarX=FALSE,boolPasarZ=TRUE; + SET intPOSX=intPOSX-intX; + ELSE -- distinto articulo + SET boolPasarX=TRUE,boolPasarZ=TRUE; + SET intPOSY=intY,intPOSZ=intZ; + SET Id_Article_aux=intId_Article; + SET intPOSX=intPOSX+intCmNichoExtra; + END IF; + ELSE -- cerrado + IF ((intZ=intZ_ant) AND (intY=intY_ant) AND (intX=intX_ant)) THEN -- tienen que ser del mismo tamaño + SET intPOSX=intPOSX-intX; + SET boolPasarX=FALSE,boolPasarZ=FALSE; + ELSE + CALL ubicator_calcularhuecosvacios (alturabalda,ReturnX,ReturnY,intZ_aux,intId_Estanterias,intId_Baldas,contId_Estanterias); -- Calculo las cajas vacias + SET intPOSY=intY,intPOSZ=intZ; + SET boolPasarX=TRUE,boolPasarZ=TRUE; + SET intPOSX=intPOSX+intCmNichoExtra; + END IF; -- article + END IF; + ELSE -- No apilable or posz<>0 + IF (NOT boolESAPILABLE AND boolESABIERTO) THEN + SET boolPasarX=FALSE,boolPasarZ=FALSE; + -- @@@ cambio abierto no apilable + SET intPOSZ=0; -- no se puede subir en altura + ELSE + SET boolPasarX=TRUE,boolPasarZ=TRUE; + SET intPOSY=intY,intPOSZ=intZ; + END IF; + + IF (intPOSX>0) THEN -- SI ES EL PRIMER ELEMENTO (X=0) NO LE INCREMENTE LOS CM EXTRA DEL NICHO + SET intPOSX=intPOSX+intCmNichoExtra; + END IF; + END IF; -- apilable + + Condicional:loop + IF (NOT boolPasarX) THEN + IF (NOT boolPasarZ) THEN + IF (intD-intPOSY>intY) THEN -- cabe de profundo + SET intPOSY=intPOSY+intY; + ELSE + SET intPOSY=intY; + END IF; + END IF; -- boolpasarz (depth) + + IF (intH-intPOSZ>intZ) THEN + SET intPOSZ=intPOSZ+intZ; + ELSE + IF (intD-intPOSY>intY) THEN + SET boolPasarZ=FALSE,boolPasarX=FALSE,intPOSZ=intZ; + ITERATE Condicional; + END IF; + SET intPOSZ=intZ; + SET intPOSY=intY, intPOSX=intPOSX+intX+intCmNichoExtra; + END IF; + END IF; -- boolpasarx + + IF (intW-intPOSX>intX) THEN + SET intPOSX=intPOSX+intX; + ELSE + SET intPOSX=0,boolNoNextRecord=TRUE,Cantidad=Cantidad-1; + LEAVE ITERACION; + END IF; + LEAVE Condicional; + END loop Condicional; + + SET ReturnX=intPOSX-intX; -- Anchura absoluta x del artículo + SET ReturnZ=intSUMAH+intPOSZ-intZ; -- Altura absoluta del cubo + SET ReturnY=intPOSY-intY; -- Profundidad absoluta del artículo + + SET boolPasarZ=FALSE,boolPasarX=FALSE; + + INSERT INTO Ubicator_Cajas (Id_Estanterias,Id_Baldas,modelo,W ,D,H ,Id_Cubo,X,Y,Z,Medida,Id_Article,Article,NumEstanterias) + VALUES (intId_Estanterias,intId_Baldas,strmodelo,ReturnX ,ReturnY,ReturnZ ,strId_Cubo,intX,intY,intZ,intMedida,intId_Article,strArticle,contId_Estanterias); + /* + INSERT INTO Ubicator_Cajas (Id_Estanterias,Id_Baldas,modelo,W ,D,H ,Id_Cubo,X,Y,Z,Medida,Id_Article,Article,NumEstanterias, + NumEtiquetas,POSX,POSY,POSZ,Id_Article_aux) + VALUES (intId_Estanterias,intId_Baldas,strmodelo,ReturnX ,ReturnY,ReturnZ ,strId_Cubo,intX,intY,intZ,intMedida,intId_Article,strArticle,contId_Estanterias, + intEtiquetas,intPOSX,intPOSY,intPOSZ,Id_Article_aux); + */ + SET Id_Article_aux=intId_Article,intZ_aux=intZ,boolNoNextRecord=FALSE; + -- Cambio + SET intZ_ant=intZ,intY_ant=intY,intX_ant=intX; + UNTIL Cantidad=intEtiquetas END REPEAT; + END WHILE ITERACION; + + IF (done) THEN + SET fin=TRUE; + END IF; + +UNTIL fin END REPEAT; +CLOSE cursor_ubicator; +CLOSE cursor_estanterias; + +-- select * from Ubicator_Cajas; +-- select * from ubicator_stock; +-- select * from Ubicator_CajasNoCaben; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ubicator_test` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ubicator_test`(IN i_wh TINYINT, IN d_fecha DATE,IN filtro VARCHAR(255)) +BEGIN + + + DECLARE date_inv DATE; + + +DROP TEMPORARY TABLE IF EXISTS stock_actual; +DROP TEMPORARY TABLE IF EXISTS vn2008.tmp_ubicator_stock; + + +SELECT FechaInventario INTO date_inv + FROM tblContadores LIMIT 1; + + +CREATE TEMPORARY TABLE stock_actual +SELECT Id_Article article_id,SUM(Cantidad) amount FROM ( + SELECT Id_Article,Cantidad + FROM Compres c + JOIN Entradas e USING(Id_Entrada) + JOIN travel t ON t.id = e.travel_id + WHERE landing BETWEEN date_inv AND d_fecha + AND warehouse_id = i_wh AND NOT Redada + + UNION ALL + + SELECT Id_Article,-Cantidad + FROM Compres c + JOIN Entradas e USING(Id_Entrada) + JOIN travel t ON t.id = e.travel_id + WHERE shipment BETWEEN date_inv AND timestampadd(DAY,-1,d_fecha) + AND warehouse_id_out = i_wh AND NOT Redada + + UNION ALL + + SELECT Id_Article, -Cantidad + FROM Movimientos m + JOIN Tickets t USING(Id_Ticket) + WHERE Fecha BETWEEN date_inv AND timestampadd(DAY,-1,d_fecha) + AND warehouse_id = i_wh + + + +) t GROUP BY article_id; + +/* +SELECT * from stock_actual;*/ + +-- TEMPORARY +CALL hedera.sql_query (sql_printf(' + CREATE TEMPORARY TABLE IF NOT EXISTS vn2008.tmp_ubicator_stock AS + SELECT A.Id_Article,A.Article, T.Id_Cubo,IF(Z > 0,Z,0) as z,x,y, + CEIL(S.Suma/T.grouping) as etiquetas,A.Medida,A.Nicho + FROM vn2008.Articles A + INNER JOIN + (SELECT article_id, amount as SUMA + FROM vn2008.stock_actual + WHERE amount > 0 + ) as S ON S.article_id = A.Id_Article + LEFT JOIN ( + SELECT * FROM ( + SELECT c.Id_Article item_id, c.Id_Compra id, c.Id_Cubo,c.grouping + FROM vn2008.Compres c INNER JOIN vn2008.Entradas e USING(Id_Entrada) + INNER JOIN vn2008.travel t ON t.id = e.travel_id + WHERE t.landing BETWEEN vn2008.date_inv() AND CURDATE() + AND c.Novincular = FALSE + AND c.Tarifa2 >= 0 AND Id_Cubo IS NOT NULL + ORDER BY 1 = t.warehouse_id DESC, t.landing DESC + ) t1 GROUP BY item_id + ) as T ON T.item_id = A.Id_Article + LEFT JOIN vn2008.Cubos C USING(Id_Cubo) + WHERE %s AND CEIL(S.Suma/T.grouping) > 0',filtro)); + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `unary_delete` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `unary_delete`(v_node INT, v_delete bool) +BEGIN +/** + * Borra un nodo. Se puede indicar si se quieren mantener los hijos. + * En este caso los hijos pasan al padre del nodo. + * Si no tiene padre, los hijos pasaran a ser padres. + * + * @v_node: Nodo que se quiere borrar. + * @v_delete: Se indica si se borran los nodos. + **/ + + DECLARE v_parent INT; + + SELECT parent + INTO v_parent + FROM unary + WHERE id = v_node; + + IF(v_delete = FALSE) THEN + UPDATE unary + SET parent = v_parent + WHERE parent = v_node; + END IF; + + DELETE FROM unary + WHERE id = v_node; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `unary_insert` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `unary_insert`(OUT v_unary INT, v_parent INT) +BEGIN + + /** + * Inserta un nuevo nodo. Se puede indicar el padre. + * + * @v_parent: Nodo padre. + * @v_unary: Id del nuevo nodo. + **/ + + INSERT INTO unary(parent) VALUES(v_parent); + + SELECT last_insert_id() INTO v_unary; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `unary_leaves` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `unary_leaves`(v_top INT) +BEGIN +/** + * A partir de un nodo devuelve todos sus descendientes. + * + * @table tmp.tree Tabla con los ids de los nodos descendientes; + **/ + DECLARE v_count INT; + DECLARE v_parent INT; + DECLARE v_depth INT DEFAULT 0; + + DROP TEMPORARY TABLE IF EXISTS tmp.tree; + CREATE TEMPORARY TABLE tmp.tree + (INDEX (id)) + ENGINE = MEMORY + SELECT v_top id, v_parent parent, v_depth depth; + + DROP TEMPORARY TABLE IF EXISTS tmp.parent; + CREATE TEMPORARY TABLE tmp.parent + ENGINE = MEMORY + SELECT v_top id; + + l: LOOP + + SET v_depth = v_depth + 1; + + DROP TEMPORARY TABLE IF EXISTS tmp.child; + CREATE TEMPORARY TABLE tmp.child + ENGINE = MEMORY + SELECT c.`id`, c.parent + FROM `unary` c + JOIN tmp.parent p ON c.`parent` = p.id; + + DROP TEMPORARY TABLE tmp.parent; + CREATE TEMPORARY TABLE tmp.parent + ENGINE = MEMORY + SELECT c.id, c.parent + FROM tmp.child c + LEFT JOIN tmp.tree t ON t.id = c.id + WHERE t.id IS NULL; + + INSERT INTO tmp.tree + SELECT id, parent, v_depth FROM tmp.parent; + + SELECT COUNT(*) INTO v_count + FROM tmp.parent; + + IF v_count = 0 THEN + LEAVE l; + END IF; + END LOOP; + + DROP TEMPORARY TABLE + tmp.parent, + tmp.child; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `unary_scan_ident` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `unary_scan_ident`(v_top INT, v_space INT) +BEGIN +/** + * A partir de un nodo devuelve el id y el nombre del nodod y sus hijos. + * El nombre viene identado segun el numero de espacios multiplicado por la profundiad del nodo. + * + * v_top: Id del nodo padre. + * v_space: Spacios a dejar al identar, + * @table tmp.tree_ident Tabla con los ids de los nodos descendientes y su nombre identado; + **/ + + DROP TEMPORARY TABLE IF EXISTS tmp.tree_ident; + CALL tree_leaves(v_top); + + CREATE TEMPORARY TABLE tmp.tree_ident + ENGINE = MEMORY + SELECT t.id, + CONCAT( REPEAT(REPEAT(" ",v_space), t.depth), sp.name) AS name + FROM tmp.tree t + INNER JOIN unary_scan sp + ON t.id = sp.id; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `unary_scan_insert` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `unary_scan_insert`(v_name VARCHAR(45), v_parent INT, v_type VARCHAR(45)) +BEGIN + + /** + * Inserta un nuevo nodo de tipo unary_scan. Se puede indicar el padre. + * + * @v_name: Nombre del nodo. + * @v_parent: Nodo padre. + * @v_type: Tipo del nodo a crear. + **/ + + DECLARE v_unary INT; + + CALL unary_insert(v_unary, v_parent); + + INSERT INTO unary_scan(name, unary_id, type) VALUES(v_name, v_unary, v_type); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `unary_tops` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `unary_tops`() +BEGIN +/** + * Devuelve todos los nodos que no tienen padre. + * + * @table tmp.tree Tabla con los ids de los nodos que no tienen padre; + **/ + + DROP TEMPORARY TABLE IF EXISTS tmp.tree; + CREATE TEMPORARY TABLE tmp.tree + ENGINE = MEMORY + SELECT s.`unary_id` AS id, s.name, s.odbc_date, s.type + FROM `unary_scan` s + INNER JOIN `unary` u ON s.unary_id = u.id + WHERE u.parent IS NULL; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `unary_update` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `unary_update`(v_node INT, v_new_parent INT, v_move bool) +BEGIN +/** + * Cambia el padre de un nodo. Se puede indicar si se quieren mover los hijos. + * En este caso los hijos pasan al padre del nodo. + * Si no tiene padre, los hijos pasaran a ser padres. + * + * @v_node: Nodo que se quiere mover. + * @v_new_parent: Padre al que se quiere mover el nodo. + * @v_move: Se indica si se mueven los nodos. + **/ + + DECLARE v_parent INT; + + SELECT parent + INTO v_parent + FROM unary + WHERE id = v_node; + + IF(v_move = TRUE) THEN + UPDATE unary + SET parent = v_parent + WHERE parent = v_node; + END IF; + + UPDATE unary + SET parent = v_new_parent + WHERE id = v_node; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `valor_faltas` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `valor_faltas`(IN intReino_id INT,IN dateDesde DATE,IN dateHasta DATE,IN wh INT) +BEGIN + + DROP TEMPORARY TABLE IF EXISTS item; + + CREATE TEMPORARY TABLE item + SELECT Id_Article id,Id_Movimiento,Cantidad,Id_Tipo,Fecha + FROM Tickets t + JOIN Movimientos m USING (Id_Ticket) + JOIN Articles a USING (Id_Article) + JOIN Tipos tip USING (tipo_id) + WHERE + Id_Cliente = 400 + AND Fecha BETWEEN dateDesde AND dateHasta + AND reino_id = 4; + + CREATE INDEX pk USING HASH ON item (id); + + CALL item_buy (wh, dateHasta); + CALL item_buy_price (1240,dateDesde,wh); + +SELECT *,Cantidad * price as total FROM item; + +DROP TEMPORARY TABLE item; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `verdecora` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `verdecora`(vDelivered DATE) +BEGIN + +DECLARE vConsigna INT DEFAULT 21025; +DECLARE vAgencia INT DEFAULT 639; + +DROP TEMPORARY TABLE IF EXISTS tmp.bionic_calc; + + CREATE TEMPORARY TABLE tmp.bionic_calc + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT Id_Article AS item_id + FROM Articles + JOIN Tipos using(tipo_id) + WHERE reino_id IN (1,5) + AND Id_Article < 170000; + +CALL vn2008.bionic_calc(vDelivered, vConsigna, vAgencia); + +SELECT + bi.item_id AS 'Ref_VN', + iv.codin, + NULL as Recomendado, + bi.available as Disponible, + CASE c.caja + WHEN 0 THEN 1 + WHEN 1 THEN c.grouping + WHEN 2 THEN c.packing + END AS 'Venta x', + c.Packing AS 'Uds/Caja', + bl.min_price as Precio, + REPLACE(bi.item,'_','') AS 'Artículo', + ita.tag1 as Caracter1, + ita.val1 as Valor1, + ita.tag2 as Caracter2, + ita.val2 as Valor2, + ita.tag3 as Caracter3, + ita.val3 as Valor3, + ita.tag4 as Caracter4, + ita.val4 as Valor4, + ita.tag5 as Caracter5, + ita.val5 as Valor5, + ita.tag6 as Caracter6, + ita.val6 as valor6 + +FROM tmp.bionic_item bi + JOIN vn.itemTagArranged ita ON ita.itemFk = bi.item_id + JOIN bi.Last_buy_id lb ON lb.Id_Article = bi.item_id + JOIN vn2008.Compres c ON c.Id_Compra = lb.Id_Compra + JOIN ( + SELECT MIN(price) min_price, item_id + FROM tmp.bionic_price + GROUP BY item_id + ) bl ON bl.item_id = bi.item_id + LEFT JOIN vn.itemVerdecora iv ON iv.itemFk = bi.item_id +WHERE lb.warehouse_id = 1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `vips_in_a_week` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `vips_in_a_week`(IN strCONDITION varchar(512)) +BEGIN +call sql_query( CONCAT('SELECT C.Id_Cliente, C.Cliente, RED(SUM((M.Cantidad * M.Preu) * 100 - M.Descuento) / 100) as Importe + FROM Clientes C INNER JOIN Tickets T ON T.Id_Cliente = C.Id_Cliente + INNER JOIN Movimientos M ON M.Id_Ticket = T.Id_Ticket + INNER JOIN Articles A ON A.Id_Article = M.Id_Article + JOIN Tipos TP ON A.tipo_id = TP.tipo_id + INNER JOIN Trabajadores TR ON TR.Id_Trabajador = TP.Id_Trabajador + WHERE ', + + strCONDITION, + + + ' GROUP BY Id_Cliente + HAVING Importe > 0 + ORDER BY Importe DESC + ') + + +); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `vips_in_a_week_by_client` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `vips_in_a_week_by_client`(IN strCONDITION varchar(512)) +BEGIN + +call sql_query( CONCAT('SELECT M.Id_Article, A.Article, A.Medida, A.Color, A.Categoria, + SUM(M.Cantidad) Cantidad, M.Preu, M.Descuento, + RED(SUM(M.Cantidad) * M.Preu * (100 - M.Descuento) / 100) as Importe + FROM Clientes C INNER JOIN Tickets T ON T.Id_Cliente = C.Id_Cliente + INNER JOIN Movimientos M ON M.Id_Ticket = T.Id_Ticket + INNER JOIN Articles A ON A.Id_Article = M.Id_Article + JOIN Tipos TP ON A.tipo_id = TP.tipo_id + INNER JOIN Trabajadores TR ON TR.Id_Trabajador = TP.Id_Trabajador + WHERE ', + + strCONDITION, + + ' GROUP BY M.Id_Article, A.Article, A.Medida, A.Color, A.Categoria, M.Preu, M.Descuento ' + + ) + ); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `volumetricoReparto` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `volumetricoReparto`( IN IdTicket INT(11), OUT atot DOUBLE ) +BEGIN + + DECLARE ticket INT(11); + + DECLARE rutaid INT(11); + + DECLARE art INT(11); + + DECLARE ax, ay, az, atot double; + + DECLARE CUR1 CURSOR FOR SELECT a.Id_Article FROM vn2008.Movimientos m, vn2008.Articles a + WHERE m.Id_Ticket = IdTicket AND m.Id_Article = a.Id_Article ; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET @atot = 0; + + set @atot = 0; + + OPEN CUR1; + + REPEAT + + FETCH CUR1 INTO art ; + + SELECT x, y, z into ax,ay,az + FROM vn2008.Cubos cu, vn2008.Compres co + WHERE cu.Id_Cubo = co.Id_Cubo AND Id_Compra = + (SELECT max(Id_Compra) FROM vn2008.Compres c + WHERE c.Id_Article = @art); + + set @atot = @atot +((@ax * @ay * @az)* 1,10); + + UNTIL done END REPEAT; + CLOSE CUR1; + + + select 'hola ',@atot; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `weekly_sales_new` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `weekly_sales_new`(v_wh SMALLINT, v_date_ini DATETIME, v_date_end DATETIME) +BEGIN + IF v_date_end IS NULL THEN + SET v_date_end = v_date_ini; + END IF; + + SET v_date_end = TIMESTAMPADD(DAY, 1, v_date_end); + + CREATE TEMPORARY TABLE weekly_ticket + (INDEX idx USING HASH (Id_Ticket)) + ENGINE = MEMORY + SELECT Id_Ticket, to_weeks (DATE(Fecha)) week, warehouse_id + FROM Tickets t + JOIN warehouse w ON w.id = t.warehouse_id + WHERE Fecha >= v_date_ini AND Fecha < v_date_end + AND Id_Cliente NOT IN (400, 200) + AND NOT w.fuente + AND v_wh IN (t.warehouse_id, 0); + + CREATE TEMPORARY TABLE weekly_sales + ENGINE = MEMORY + SELECT week, warehouse_id, a.Id_Article item_id, SUM(Cantidad) AS amount, + SUM(Cantidad * Preu * (100 - Descuento) / 100) AS price + FROM Movimientos m + JOIN weekly_ticket t USING (Id_Ticket) + JOIN Articles a USING (Id_Article) + INNER JOIN Tipos USING (tipo_id) + WHERE reino_id != 6 + GROUP BY week, warehouse_id, item_id; + + DROP TEMPORARY TABLE weekly_ticket; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `XDiario_Quadrator` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `XDiario_Quadrator`() +BEGIN + +UPDATE XDiario +SET EURODEBE = ROUND(EURODEBE,2), + EUROHABER = ROUND(EUROHABER,2) +WHERE NOT enlazado; + + +UPDATE XDiario XD +INNER JOIN +( +SELECT XD.id, SUBCTA, Quadre FROM XDiario XD +INNER JOIN ( +SELECT ASIEN, SUM(IFNULL(ROUND(Eurodebe,2),0))- SUM(IFNULL(ROUND(EUROHABER,2),0)) as Quadre +FROM XDiario +WHERE enlazado = FALSE +GROUP BY ASIEN +HAVING Quadre != 0 +) sub USING(ASIEN) +WHERE SUBCTA > '5999999999' +GROUP BY ASIEN +) sub2 USING(id) +SET Eurohaber = IF(IFNULL(Eurohaber,0) = 0, Eurohaber, Eurohaber + Quadre), + Eurodebe = IF(IFNULL(Eurodebe,0) = 0, Eurodebe, Eurodebe - Quadre); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `__camiones` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `__camiones`(vWarehouse INT, vDate DATE) +BEGIN + CALL inventario_multiple_reservas(vDate, 7, 4848); + CALL article_multiple_buy(vDate, 7); + + SELECT Temperatura + ,ROUND(SUM(Etiquetas * cm3_2(Id_Cubo, Id_Article))) AS cm3 + ,ROUND(SUM(IF(scanned,Etiquetas,0) * cm3_2(Id_Cubo, Id_Article))) AS cm3s + ,ROUND(SUM(Vida * cm3_2(Id_Cubo, Id_Article))) AS cm3e + FROM ( + SELECT t.Temperatura, c.Etiquetas, c.Id_Cubo, c.Id_Article, b.scanned, c.Vida + FROM Compres c + LEFT JOIN buy_edi b ON b.id = c.buy_edi_id + JOIN Articles a ON a.Id_Article = c.Id_Article + JOIN Tipos t ON t.tipo_id = a.tipo_id + JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada + JOIN travel tr ON tr.id = e.travel_id + WHERE tr.warehouse_id = vWarehouse + AND tr.landing = vDate + UNION ALL + SELECT t.Temperatura, @e:= ai.visible/c.packing, c.Id_Cubo, ai.article_id, @e, @e + FROM article_inventory ai + JOIN Compres c ON c.Id_Compra = ai.buy_id + JOIN Articles a ON a.Id_Article = ai.article_id + JOIN Tipos t ON t.tipo_id = a.tipo_id + WHERE avalaible > 0 + ) sub + GROUP BY Temperatura; + + DROP TEMPORARY TABLE article_inventory; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `__sql_signal` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `__sql_signal`(v_code CHAR(35)) +BEGIN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = v_code; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Current Database: `bi` +-- + +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `bi` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; + +USE `bi`; + +-- +-- Table structure for table `Equalizator` +-- + +DROP TABLE IF EXISTS `Equalizator`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Equalizator` ( + `Vista` int(11) NOT NULL, + `Pedido` int(11) DEFAULT NULL, + `Impreso` int(11) DEFAULT NULL, + `Encajado` int(11) DEFAULT NULL, + PRIMARY KEY (`Vista`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Greuge_Evolution` +-- + +DROP TABLE IF EXISTS `Greuge_Evolution`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Greuge_Evolution` ( + `Id_Cliente` int(11) NOT NULL, + `Fecha` date NOT NULL, + `Greuge` decimal(10,2) NOT NULL DEFAULT '0.00', + `Ventas` decimal(10,2) NOT NULL DEFAULT '0.00', + `Fosil` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT 'greuge fósil, correspondiente a los clientes muertos', + `Recobro` decimal(10,2) NOT NULL DEFAULT '0.00', + PRIMARY KEY (`Id_Cliente`,`Fecha`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacenamos la evolucion del greuge de los ultimos dias '; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Greuge_comercial_recobro` +-- + +DROP TABLE IF EXISTS `Greuge_comercial_recobro`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Greuge_comercial_recobro` ( + `Id_Trabajador` int(11) NOT NULL, + `recobro` decimal(10,2) NOT NULL DEFAULT '0.00', + `peso_cartera` decimal(10,2) NOT NULL DEFAULT '0.00', + PRIMARY KEY (`Id_Trabajador`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Greuges_comercial_detail` +-- + +DROP TABLE IF EXISTS `Greuges_comercial_detail`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Greuges_comercial_detail` ( + `Id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `Id_Trabajador` int(10) unsigned NOT NULL, + `Comentario` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `Importe` decimal(10,2) NOT NULL, + `Fecha` datetime DEFAULT NULL, + PRIMARY KEY (`Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=FIXED; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Last_buy_id` +-- + +DROP TABLE IF EXISTS `Last_buy_id`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Last_buy_id` ( + `Id_Article` int(11) NOT NULL DEFAULT '90', + `Id_Compra` int(11) NOT NULL DEFAULT '0', + `warehouse_id` smallint(6) unsigned NOT NULL, + PRIMARY KEY (`warehouse_id`,`Id_Article`), + UNIQUE KEY `Id_Compra_UNIQUE` (`Id_Compra`), + CONSTRAINT `Id_CompraFK` FOREIGN KEY (`Id_Compra`) REFERENCES `vn2008`.`Compres` (`Id_Compra`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Last_buy_idBackUp` +-- + +DROP TABLE IF EXISTS `Last_buy_idBackUp`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Last_buy_idBackUp` ( + `Id_Article` int(11) NOT NULL DEFAULT '90', + `Id_Compra` int(11) NOT NULL DEFAULT '0', + `warehouse_id` smallint(6) unsigned NOT NULL, + PRIMARY KEY (`Id_Article`,`warehouse_id`), + UNIQUE KEY `Id_Compra_UNIQUE` (`Id_Compra`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Radar` +-- + +DROP TABLE IF EXISTS `Radar`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Radar` ( + `Propio` int(1) NOT NULL DEFAULT '0', + `Credito` double NOT NULL DEFAULT '0', + `Riesgo` double(19,2) DEFAULT NULL, + `Greuge` double DEFAULT NULL, + `Id_Ticket` int(11) NOT NULL DEFAULT '0', + `wh` smallint(6) unsigned NOT NULL DEFAULT '1', + `Fecha` datetime NOT NULL, + `Alias` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Vista` int(11) DEFAULT '0', + `Tipo` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'RECOGIDA', + `Id_Trabajador` int(11) DEFAULT '20', + `Solucion` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `Localizacion` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `Estado` varchar(15) CHARACTER SET utf8 DEFAULT NULL, + `Fecha_Simple` date DEFAULT NULL, + `Id_Comercial` int(11) DEFAULT '20', + `Risk` double NOT NULL DEFAULT '0', + `Rojo` bigint(21) DEFAULT '0', + `Naranja` bigint(21) DEFAULT '0', + `Amarillo` bigint(21) DEFAULT '0' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Ticket_Portes` +-- + +DROP TABLE IF EXISTS `Ticket_Portes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Ticket_Portes` ( + `Id_Ticket` int(11) NOT NULL, + `rate` tinyint(4) NOT NULL COMMENT 'Tarifa', + `real_amount` double NOT NULL COMMENT 'Cantidad pactada con la agencia', + `payed_amount` double NOT NULL COMMENT 'Cantidad reflejada en el Ticket', + PRIMARY KEY (`Id_Ticket`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VelocityKK` +-- + +DROP TABLE IF EXISTS `VelocityKK`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VelocityKK` ( + `tipo_id` int(11) NOT NULL, + `Fecha` datetime NOT NULL, + `Disponible` int(11) DEFAULT NULL, + `Visible` int(11) DEFAULT NULL, + `velocity_id` int(11) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`velocity_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `XDiario_ALL` +-- + +DROP TABLE IF EXISTS `XDiario_ALL`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `XDiario_ALL` ( + `empresa_id` int(5) NOT NULL, + `SUBCTA` varchar(11) COLLATE utf8_unicode_ci NOT NULL, + `Eurodebe` double DEFAULT NULL, + `Eurohaber` double DEFAULT NULL, + `Fecha` date DEFAULT NULL, + `FECHA_EX` date DEFAULT NULL, + KEY `Cuenta` (`SUBCTA`), + KEY `empresa` (`empresa_id`), + KEY `Fecha` (`Fecha`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `analisis_grafico_simple` +-- + +DROP TABLE IF EXISTS `analisis_grafico_simple`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `analisis_grafico_simple` ( + `Año` smallint(5) unsigned NOT NULL, + `Semana` tinyint(3) unsigned NOT NULL, + `Importe` double DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `analisis_grafico_ventas` +-- + +DROP TABLE IF EXISTS `analisis_grafico_ventas`; +/*!50001 DROP VIEW IF EXISTS `analisis_grafico_ventas`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `analisis_grafico_ventas` AS SELECT + 1 AS `Año`, + 1 AS `Semana`, + 1 AS `Importe`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `analisis_ventas` +-- + +DROP TABLE IF EXISTS `analisis_ventas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `analisis_ventas` ( + `Familia` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `Reino` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `Comercial` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `Comprador` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `Provincia` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `almacen` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `Año` smallint(5) unsigned NOT NULL, + `Mes` tinyint(3) unsigned NOT NULL, + `Semana` tinyint(3) unsigned NOT NULL, + `Vista` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `Importe` double NOT NULL, + KEY `Año` (`Año`,`Semana`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `analisis_ventas_almacen_evolution` +-- + +DROP TABLE IF EXISTS `analisis_ventas_almacen_evolution`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `analisis_ventas_almacen_evolution` ( + `Semana` int(11) NOT NULL, + `Almacen` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `Ventas` int(11) NOT NULL, + `Año` int(11) NOT NULL, + `Periodo` int(11) NOT NULL, + KEY `Almacen` (`Almacen`,`Periodo`), + KEY `Periodo` (`Periodo`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `analisis_ventas_comprador_evolution` +-- + +DROP TABLE IF EXISTS `analisis_ventas_comprador_evolution`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `analisis_ventas_comprador_evolution` ( + `semana` int(11) NOT NULL, + `comprador` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `ventas` int(11) NOT NULL, + `año` int(11) NOT NULL, + `periodo` int(11) NOT NULL, + UNIQUE KEY `comprador` (`comprador`,`periodo`), + KEY `periodo` (`periodo`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `analisis_ventas_familia_evolution` +-- + +DROP TABLE IF EXISTS `analisis_ventas_familia_evolution`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `analisis_ventas_familia_evolution` ( + `semana` int(11) NOT NULL, + `familia` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `ventas` int(11) NOT NULL, + `año` int(11) NOT NULL, + `periodo` int(11) NOT NULL, + KEY `familia` (`familia`,`periodo`), + KEY `periodo` (`periodo`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `analisis_ventas_provincia_evolution` +-- + +DROP TABLE IF EXISTS `analisis_ventas_provincia_evolution`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `analisis_ventas_provincia_evolution` ( + `semana` int(11) NOT NULL, + `provincia` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `ventas` int(11) NOT NULL, + `año` int(11) NOT NULL, + `periodo` int(11) NOT NULL, + UNIQUE KEY `provincia` (`provincia`,`periodo`), + KEY `periodo` (`periodo`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `analisis_ventas_reino_evolution` +-- + +DROP TABLE IF EXISTS `analisis_ventas_reino_evolution`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `analisis_ventas_reino_evolution` ( + `semana` int(11) NOT NULL, + `reino` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `ventas` int(11) NOT NULL, + `año` int(11) NOT NULL, + `periodo` int(11) NOT NULL, + UNIQUE KEY `reino` (`reino`,`periodo`), + KEY `periodo` (`periodo`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `analisis_ventas_simple` +-- + +DROP TABLE IF EXISTS `analisis_ventas_simple`; +/*!50001 DROP VIEW IF EXISTS `analisis_ventas_simple`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `analisis_ventas_simple` AS SELECT + 1 AS `Año`, + 1 AS `Semana`, + 1 AS `Importe`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `analisis_ventas_vendedor_evolution` +-- + +DROP TABLE IF EXISTS `analisis_ventas_vendedor_evolution`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `analisis_ventas_vendedor_evolution` ( + `semana` int(11) NOT NULL, + `vendedor` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `ventas` int(11) NOT NULL, + `año` int(11) NOT NULL, + `periodo` int(11) NOT NULL, + UNIQUE KEY `vendedor` (`vendedor`,`periodo`), + KEY `periodo` (`periodo`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `analisis_ventas_vista_evolution` +-- + +DROP TABLE IF EXISTS `analisis_ventas_vista_evolution`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `analisis_ventas_vista_evolution` ( + `semana` int(11) NOT NULL, + `vista` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `ventas` int(11) NOT NULL, + `año` int(11) NOT NULL, + `periodo` int(11) NOT NULL, + UNIQUE KEY `vista` (`vista`,`periodo`), + KEY `periodo` (`periodo`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `calidad_detalle` +-- + +DROP TABLE IF EXISTS `calidad_detalle`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `calidad_detalle` ( + `Id_Cliente` int(11) NOT NULL, + `calidad_parametros_id` int(2) NOT NULL, + `valor` int(3) DEFAULT NULL, + PRIMARY KEY (`Id_Cliente`,`calidad_parametros_id`), + KEY `calidad_parametros_detalle_idx` (`calidad_parametros_id`), + CONSTRAINT `calidad_parametros_detalle` FOREIGN KEY (`calidad_parametros_id`) REFERENCES `calidad_parametros` (`calidad_parametros_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `calidad_parametros` +-- + +DROP TABLE IF EXISTS `calidad_parametros`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `calidad_parametros` ( + `calidad_parametros_id` int(2) NOT NULL, + `descripcion` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`calidad_parametros_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `claims_ratio` +-- + +DROP TABLE IF EXISTS `claims_ratio`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `claims_ratio` ( + `Id_Cliente` int(11) NOT NULL DEFAULT '0', + `Consumo` decimal(10,2) DEFAULT NULL, + `Reclamaciones` decimal(10,2) DEFAULT NULL, + `Ratio` decimal(5,2) DEFAULT NULL, + `recobro` decimal(5,2) DEFAULT NULL, + `inflacion` decimal(5,2) NOT NULL DEFAULT '1.00', + PRIMARY KEY (`Id_Cliente`), + CONSTRAINT `claims_ratio_ibfk_1` FOREIGN KEY (`Id_Cliente`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `comparativa_clientes` +-- + +DROP TABLE IF EXISTS `comparativa_clientes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `comparativa_clientes` ( + `Fecha` date NOT NULL DEFAULT '0000-00-00', + `Id_Cliente` int(11) NOT NULL DEFAULT '0', + `Propietario` int(11) DEFAULT NULL, + `titular` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `suplente` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `trabajador` int(11) DEFAULT NULL, + `actual` double DEFAULT NULL, + `pasado` double DEFAULT NULL, + `concepto` varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT '', + KEY `cc_data_indez` (`Fecha`), + KEY `cc_Id_Cliente_index` (`Id_Cliente`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `customerDebtInventory` +-- + +DROP TABLE IF EXISTS `customerDebtInventory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `customerDebtInventory` ( + `Id_Cliente` int(11) NOT NULL, + `Debt` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT 'CREATE TABLE bi.customerDebtInventory\n\nSELECT Id_Cliente, sum(Euros) as Debt\n\nFROM \n(\nSELECT Id_Cliente, Entregado as Euros\n\nFROM Recibos \n\nWHERE Fechacobro < ''2017-01-01\n''\nUNION ALL\n\nSELECT Id_Cliente, - Importe \nFROM Facturas\nWHERE Fecha < ''2017-01-01''\n) sub \nGROUP BY Id_Cliente', + PRIMARY KEY (`Id_Cliente`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `customerRiskOverdue` +-- + +DROP TABLE IF EXISTS `customerRiskOverdue`; +/*!50001 DROP VIEW IF EXISTS `customerRiskOverdue`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `customerRiskOverdue` AS SELECT + 1 AS `customer_id`, + 1 AS `amount`, + 1 AS `company_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `customer_risk` +-- + +DROP TABLE IF EXISTS `customer_risk`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `customer_risk` ( + `customer_id` int(11) NOT NULL DEFAULT '0', + `company_id` smallint(6) unsigned NOT NULL DEFAULT '0', + `amount` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`customer_id`,`company_id`), + KEY `company_id` (`company_id`), + CONSTRAINT `customer_risk_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `customer_risk_ibfk_2` FOREIGN KEY (`company_id`) REFERENCES `vn2008`.`empresa` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Saldo de apertura < 2015-01-01'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `daily_task_log` +-- + +DROP TABLE IF EXISTS `daily_task_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `daily_task_log` ( + `state` varchar(250) COLLATE utf8_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='No he encontrado el lugar en el que vicente almacena la hora en que se ejecutan las daily tasks, asi que he hecho esta tabla, a eliminar cuando se considere oportuno'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `defaulters` +-- + +DROP TABLE IF EXISTS `defaulters`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `defaulters` ( + `client` int(11) NOT NULL, + `date` date NOT NULL, + `amount` double NOT NULL DEFAULT '0', + `defaulterSince` date DEFAULT NULL, + `hasChanged` tinyint(1) DEFAULT NULL, + PRIMARY KEY (`client`,`date`), + KEY `client` (`client`), + KEY `date` (`date`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `defaulting` +-- + +DROP TABLE IF EXISTS `defaulting`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `defaulting` ( + `date` date NOT NULL, + `amount` double NOT NULL, + PRIMARY KEY (`date`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `f_tvc` +-- + +DROP TABLE IF EXISTS `f_tvc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `f_tvc` ( + `Id_Ticket` int(11) NOT NULL, + PRIMARY KEY (`Id_Ticket`), + CONSTRAINT `id_ticket_to_comisionantes` FOREIGN KEY (`Id_Ticket`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacenamos la lista de tickets para agilizar la consulta. Corresponde a los clientes REAL y en los almacenes COMISIONANTES'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `facturacion_media_anual` +-- + +DROP TABLE IF EXISTS `facturacion_media_anual`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `facturacion_media_anual` ( + `Id_Cliente` int(11) NOT NULL, + `Consumo` double(17,0) DEFAULT NULL, + PRIMARY KEY (`Id_Cliente`), + CONSTRAINT `fmaId_Cliente` FOREIGN KEY (`Id_Cliente`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `last_Id_Cubo` +-- + +DROP TABLE IF EXISTS `last_Id_Cubo`; +/*!50001 DROP VIEW IF EXISTS `last_Id_Cubo`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `last_Id_Cubo` AS SELECT + 1 AS `Id_Compra`, + 1 AS `Id_Article`, + 1 AS `warehouse_id`, + 1 AS `Id_Cubo`, + 1 AS `Packing`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `lastaction` +-- + +DROP TABLE IF EXISTS `lastaction`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `lastaction` ( + `Id_Cliente` int(11) unsigned NOT NULL, + `Cliente` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `Ultima_accion` date DEFAULT NULL, + `Comercial` varchar(3) CHARACTER SET utf8 DEFAULT NULL, + PRIMARY KEY (`Id_Cliente`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `live_counter` +-- + +DROP TABLE IF EXISTS `live_counter`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `live_counter` ( + `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `amount` double NOT NULL, + PRIMARY KEY (`odbc_date`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mana_inventory_kk` +-- + +DROP TABLE IF EXISTS `mana_inventory_kk`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mana_inventory_kk` ( + `Id_Trabajador` int(11) NOT NULL, + `mana` double NOT NULL DEFAULT '0', + `dated` date NOT NULL, + PRIMARY KEY (`Id_Trabajador`,`dated`), + CONSTRAINT `fk_trabajador_mana_inventory` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `movimientos_log` +-- + +DROP TABLE IF EXISTS `movimientos_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `movimientos_log` ( + `idmovimientos_log` int(11) NOT NULL AUTO_INCREMENT, + `Id_Movimiento` int(11) NOT NULL, + `odbc_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `Id_Trabajador` int(11) NOT NULL, + `field_name` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, + `new_value` double DEFAULT NULL, + PRIMARY KEY (`idmovimientos_log`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `partitioning_information` +-- + +DROP TABLE IF EXISTS `partitioning_information`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `partitioning_information` ( + `schema_name` varchar(10) CHARACTER SET utf8 NOT NULL, + `table_name` varchar(20) CHARACTER SET utf8 NOT NULL, + `date_field` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `table_depending` varchar(15) CHARACTER SET utf8 DEFAULT NULL, + `execution_order` tinyint(3) unsigned NOT NULL, + PRIMARY KEY (`schema_name`,`table_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `primer_pedido` +-- + +DROP TABLE IF EXISTS `primer_pedido`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `primer_pedido` ( + `Id_Cliente` int(11) NOT NULL, + `Id_Ticket` int(11) NOT NULL, + `month` tinyint(1) NOT NULL, + `year` smallint(2) NOT NULL, + `total` decimal(10,2) NOT NULL DEFAULT '0.00', + PRIMARY KEY (`Id_Cliente`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `rotacion` +-- + +DROP TABLE IF EXISTS `rotacion`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `rotacion` ( + `Id_Article` int(11) NOT NULL, + `warehouse_id` smallint(6) unsigned NOT NULL, + `total` int(10) NOT NULL DEFAULT '0', + `rotacion` decimal(10,4) NOT NULL DEFAULT '0.0000', + `cm3` int(11) NOT NULL DEFAULT '0', + `almacenaje` decimal(10,4) NOT NULL DEFAULT '0.0000', + `manipulacion` decimal(10,4) NOT NULL DEFAULT '0.0000', + `auxiliar` decimal(10,4) NOT NULL DEFAULT '0.0000', + `mermas` decimal(10,4) NOT NULL DEFAULT '0.0000', + PRIMARY KEY (`Id_Article`,`warehouse_id`), + KEY `id_article_rotacion_idx` (`Id_Article`), + KEY `warehouse_id_rotacion_idx` (`warehouse_id`), + CONSTRAINT `id_article_rotaci` FOREIGN KEY (`Id_Article`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `warehouse_id_rotaci` FOREIGN KEY (`warehouse_id`) REFERENCES `vn2008`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena los valores de rotacion en los ultimos 365 dias'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `saldos_bancos` +-- + +DROP TABLE IF EXISTS `saldos_bancos`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `saldos_bancos` ( + `Semana` int(2) NOT NULL, + `Mes` int(2) NOT NULL, + `Año` int(4) NOT NULL, + `Entrada` double DEFAULT NULL, + `Salida` decimal(32,2) DEFAULT NULL, + `Saldo` double DEFAULT NULL, + `Id_Banco` int(11) NOT NULL DEFAULT '0', + `empresa_id` int(5) unsigned NOT NULL DEFAULT '0', + `Empresa` varchar(3) CHARACTER SET utf8 NOT NULL DEFAULT '' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `saldos_bancos_pordia` +-- + +DROP TABLE IF EXISTS `saldos_bancos_pordia`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `saldos_bancos_pordia` ( + `Fecha` date NOT NULL, + `Entrada` double DEFAULT NULL, + `Salida` decimal(32,2) DEFAULT NULL, + `Saldo` double DEFAULT NULL, + `Id_Banco` int(11) NOT NULL DEFAULT '0', + `empresa_id` int(5) unsigned NOT NULL DEFAULT '0', + `Empresa` varchar(3) CHARACTER SET utf8 NOT NULL DEFAULT '', + `Año` int(4) NOT NULL, + `Mes` int(2) NOT NULL, + `Dia` int(2) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `sales` +-- + +DROP TABLE IF EXISTS `sales`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `sales` ( + `Id_Trabajador` int(10) unsigned NOT NULL, + `year` int(10) unsigned NOT NULL, + `month` int(10) unsigned NOT NULL, + `weight` int(11) NOT NULL DEFAULT '0', + `boss_aid` int(10) NOT NULL DEFAULT '0', + `boss_id` int(10) NOT NULL DEFAULT '0', + `comision` int(11) DEFAULT NULL, + PRIMARY KEY (`Id_Trabajador`,`year`,`month`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tarifa_componentes` +-- + +DROP TABLE IF EXISTS `tarifa_componentes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tarifa_componentes` ( + `Id_Componente` int(11) NOT NULL AUTO_INCREMENT, + `Componente` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `tarifa_componentes_series_id` int(11) NOT NULL, + `tarifa_class` smallint(6) DEFAULT NULL, + `tax` double DEFAULT NULL, + `is_renewable` tinyint(2) NOT NULL DEFAULT '1', + PRIMARY KEY (`Id_Componente`), + KEY `series_componentes_idx` (`tarifa_componentes_series_id`), + KEY `comp` (`tarifa_class`), + CONSTRAINT `serie_componente` FOREIGN KEY (`tarifa_componentes_series_id`) REFERENCES `tarifa_componentes_series` (`tarifa_componentes_series_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tarifa_componentes_series` +-- + +DROP TABLE IF EXISTS `tarifa_componentes_series`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tarifa_componentes_series` ( + `tarifa_componentes_series_id` int(11) NOT NULL AUTO_INCREMENT, + `Serie` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `base` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Marca aquellas series que se utilizan para calcular el precio base de las ventas, a efectos estadisticos', + `margen` tinyint(4) NOT NULL DEFAULT '0', + PRIMARY KEY (`tarifa_componentes_series_id`), + UNIQUE KEY `Serie_UNIQUE` (`Serie`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Permite organizar de forma ordenada los distintos componentes'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tarifa_premisas` +-- + +DROP TABLE IF EXISTS `tarifa_premisas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tarifa_premisas` ( + `Id_Premisa` int(11) NOT NULL AUTO_INCREMENT, + `premisa` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`Id_Premisa`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tarifa_warehouse` +-- + +DROP TABLE IF EXISTS `tarifa_warehouse`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tarifa_warehouse` ( + `Id_Tarifa_Warehouse` int(11) NOT NULL AUTO_INCREMENT, + `warehouse_id` int(11) NOT NULL, + `Id_Premisa` int(11) NOT NULL, + `Valor` double NOT NULL, + PRIMARY KEY (`Id_Tarifa_Warehouse`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena los valores de gasto por almacen'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `v_clientes_jerarquia` +-- + +DROP TABLE IF EXISTS `v_clientes_jerarquia`; +/*!50001 DROP VIEW IF EXISTS `v_clientes_jerarquia`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_clientes_jerarquia` AS SELECT + 1 AS `Id_Cliente`, + 1 AS `Cliente`, + 1 AS `Comercial`, + 1 AS `Jefe`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `v_ventas_contables` +-- + +DROP TABLE IF EXISTS `v_ventas_contables`; +/*!50001 DROP VIEW IF EXISTS `v_ventas_contables`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_ventas_contables` AS SELECT + 1 AS `year`, + 1 AS `month`, + 1 AS `importe`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `variablesKK` +-- + +DROP TABLE IF EXISTS `variablesKK`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `variablesKK` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `variable` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `value` double DEFAULT NULL, + `date` datetime DEFAULT NULL, + `text` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping routines for database 'bi' +-- +/*!50003 DROP FUNCTION IF EXISTS `nz` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `nz`(dblCANTIDAD DOUBLE) RETURNS double +BEGIN + +DECLARE dblRESULT DOUBLE; + +SET dblRESULT = IFNULL(dblCANTIDAD,0); + +RETURN dblRESULT; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `analisis_ventas_evolution_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `analisis_ventas_evolution_add`() +BEGIN + DECLARE vPreviousPeriod INT; + DECLARE vCurrentPeriod INT; + DECLARE vLastPeriod INT; + DECLARE vMinPeriod INT DEFAULT 201400; + DECLARE vMaxPeriod INT DEFAULT vn2008.vnperiod(CURDATE()); + + DECLARE vYear INT; + DECLARE vWeek INT; + + -- Almacen + + SET vCurrentPeriod = IFNULL(vLastPeriod, vMinPeriod); + + WHILE vCurrentPeriod < vMaxPeriod + DO + SELECT MAX(Periodo) INTO vPreviousPeriod + FROM bi.analisis_ventas_almacen_evolution + WHERE Periodo < vMaxPeriod; + + SELECT MIN(period) INTO vCurrentPeriod + FROM vn2008.time + WHERE period > vPreviousPeriod; + + SET vYear = FLOOR(vCurrentPeriod / 100); + SET vWeek = vCurrentPeriod - (vYear * 100); + + DELETE FROM bi.analisis_ventas_almacen_evolution + WHERE Periodo = vCurrentPeriod; + + REPLACE bi.analisis_ventas_almacen_evolution(Almacen, Ventas, Semana,Año, Periodo) + SELECT Almacen, sum(Ventas) AS Ventas, vWeek, vYear, vCurrentPeriod + FROM ( + SELECT almacen, sum(Importe) AS Ventas + FROM bi.analisis_ventas + WHERE vYear = Año + AND vWeek = Semana + GROUP BY almacen + UNION ALL + SELECT almacen, - sum(Importe) AS Ventas + FROM bi.analisis_ventas + WHERE vYear - 1 = Año + AND vWeek = Semana + GROUP BY almacen + UNION ALL + SELECT Almacen, Ventas + FROM bi.analisis_ventas_almacen_evolution + WHERE Periodo = vPreviousPeriod + ) sub + GROUP BY Almacen; + END WHILE; + + -- Reino + + SET vCurrentPeriod = vMinPeriod; + + WHILE vCurrentPeriod < vMaxPeriod + DO + SELECT MAX(periodo) INTO vPreviousPeriod + FROM bi.analisis_ventas_reino_evolution + WHERE periodo < vMaxPeriod; + + SELECT MIN(period) INTO vCurrentPeriod + FROM vn2008.time + WHERE period > vPreviousPeriod; + + SET vYear = FLOOR(vCurrentPeriod / 100); + SET vWeek = vCurrentPeriod - (vYear * 100); + + DELETE FROM bi.analisis_ventas_reino_evolution + WHERE Periodo = vCurrentPeriod; + + REPLACE bi.analisis_ventas_reino_evolution(reino, ventas, semana,año, periodo) + SELECT reino, sum(ventas) AS ventas, vWeek, vYear, vCurrentPeriod + FROM ( + SELECT Reino, sum(Importe) AS ventas + FROM bi.analisis_ventas + WHERE vYear = Año + AND vWeek = Semana + GROUP BY Reino + UNION ALL + SELECT Reino, - sum(Importe) AS ventas + FROM bi.analisis_ventas + WHERE vYear - 1 = Año + AND vWeek = Semana + GROUP BY Reino + UNION ALL + SELECT reino, ventas + FROM bi.analisis_ventas_reino_evolution + WHERE Periodo = vPreviousPeriod + ) sub + GROUP BY reino; + END WHILE; + + -- Familia + + SET vCurrentPeriod = vMinPeriod; + + WHILE vCurrentPeriod < vMaxPeriod + DO + SELECT MAX(periodo) INTO vPreviousPeriod + FROM bi.analisis_ventas_familia_evolution + WHERE periodo < vMaxPeriod; + + SELECT MIN(period) INTO vCurrentPeriod + FROM vn2008.time + WHERE period > vPreviousPeriod; + + SET vYear = FLOOR(vCurrentPeriod / 100); + SET vWeek = vCurrentPeriod - (vYear * 100); + + DELETE FROM bi.analisis_ventas_familia_evolution + WHERE Periodo = vCurrentPeriod; + + REPLACE bi.analisis_ventas_familia_evolution(familia, ventas, semana,año, periodo) + SELECT Familia, sum(ventas) AS ventas, vWeek, vYear, vCurrentPeriod + FROM ( + SELECT Familia, sum(Importe) AS ventas + FROM bi.analisis_ventas + WHERE vYear = Año + AND vWeek = Semana + GROUP BY familia + UNION ALL + SELECT Familia, - sum(Importe) AS ventas + FROM bi.analisis_ventas + WHERE vYear - 1 = Año + AND vWeek = Semana + GROUP BY familia + UNION ALL + SELECT familia, ventas + FROM bi.analisis_ventas_familia_evolution + WHERE Periodo = vPreviousPeriod + ) sub + GROUP BY Familia; + END WHILE; + + -- Comprador + -- FIXME: Bucle infinito porque la tabla está vacía +/* + SET vCurrentPeriod = vMinPeriod; + + WHILE vCurrentPeriod < vMaxPeriod + DO + SELECT IFNULL(MAX(periodo),vMinPeriod) INTO vPreviousPeriod + FROM bi.analisis_ventas_comprador_evolution + WHERE periodo < vMaxPeriod; + + SELECT MIN(period) INTO vCurrentPeriod + FROM vn2008.time + WHERE period > vPreviousPeriod; + + SET vYear = FLOOR(vCurrentPeriod / 100); + SET vWeek = vCurrentPeriod - (vYear * 100); + + DELETE FROM bi.analisis_ventas_comprador_evolution + WHERE Periodo = vCurrentPeriod; + + REPLACE bi.analisis_ventas_comprador_evolution(comprador, ventas, semana,año, periodo) + SELECT Comprador, sum(ventas) AS ventas, vWeek, vYear, vCurrentPeriod + FROM ( + SELECT Comprador, sum(Importe) AS ventas + FROM bi.analisis_ventas + WHERE vYear = Año + AND vWeek = Semana + GROUP BY Comprador + UNION ALL + SELECT Comprador, - sum(Importe) AS ventas + FROM bi.analisis_ventas + WHERE vYear - 1 = Año + AND vWeek = Semana + GROUP BY Comprador + UNION ALL + SELECT comprador, IFNULL(ventas,0) + FROM bi.analisis_ventas_comprador_evolution + WHERE Periodo = vPreviousPeriod + ) sub + GROUP BY Comprador; + END WHILE; +*/ + -- Provincia + + SET vCurrentPeriod = vMinPeriod; + + WHILE vCurrentPeriod < vMaxPeriod + DO + SELECT MAX(periodo) INTO vPreviousPeriod + FROM bi.analisis_ventas_provincia_evolution + WHERE periodo < vMaxPeriod; + + SELECT MIN(period) INTO vCurrentPeriod + FROM vn2008.time + WHERE period > vPreviousPeriod; + + SET vYear = FLOOR(vCurrentPeriod / 100); + SET vWeek = vCurrentPeriod - (vYear * 100); + + DELETE FROM bi.analisis_ventas_provincia_evolution + WHERE Periodo = vCurrentPeriod; + + REPLACE bi.analisis_ventas_provincia_evolution(provincia, ventas, semana,año, periodo) + SELECT Provincia, sum(ventas) AS ventas, vWeek, vYear, vCurrentPeriod + FROM ( + SELECT Provincia, sum(Importe) AS ventas + FROM bi.analisis_ventas + WHERE vYear = Año + AND vWeek = Semana + GROUP BY Provincia + UNION ALL + SELECT Provincia, - sum(Importe) AS ventas + FROM bi.analisis_ventas + WHERE vYear - 1 = Año + AND vWeek = Semana + GROUP BY Provincia + UNION ALL + SELECT provincia, ventas + FROM bi.analisis_ventas_provincia_evolution + WHERE Periodo = vPreviousPeriod + ) sub + GROUP BY Provincia; + END WHILE; + + -- Vista + + SET vCurrentPeriod = vMinPeriod; + + WHILE vCurrentPeriod < vMaxPeriod + DO + SELECT MAX(periodo) INTO vPreviousPeriod + FROM bi.analisis_ventas_vista_evolution + WHERE periodo < vMaxPeriod; + + SELECT MIN(period) INTO vCurrentPeriod + FROM vn2008.time + WHERE period > vPreviousPeriod; + + SET vYear = FLOOR(vCurrentPeriod / 100); + SET vWeek = vCurrentPeriod - (vYear * 100); + + DELETE FROM bi.analisis_ventas_vista_evolution + WHERE Periodo = vCurrentPeriod; + + REPLACE bi.analisis_ventas_vista_evolution(vista, ventas, semana,año, periodo) + SELECT vista, sum(ventas) AS ventas, vWeek, vYear, vCurrentPeriod + FROM ( + SELECT Vista, sum(Importe) AS ventas + FROM bi.analisis_ventas + WHERE vYear = Año + AND vWeek = Semana + GROUP BY Vista + UNION ALL + SELECT Vista, - sum(Importe) AS ventas + FROM bi.analisis_ventas + WHERE vYear - 1 = Año + AND vWeek = Semana + GROUP BY Vista + UNION ALL + SELECT vista, ventas + FROM bi.analisis_ventas_vista_evolution + WHERE Periodo = vPreviousPeriod + ) sub + GROUP BY Vista; + END WHILE; + + -- Vendedor + + SET vCurrentPeriod = vMinPeriod; + + WHILE vCurrentPeriod < vMaxPeriod + DO + SELECT MAX(periodo) INTO vPreviousPeriod + FROM bi.analisis_ventas_vendedor_evolution + WHERE periodo < vMaxPeriod; + + SELECT MIN(period) INTO vCurrentPeriod + FROM vn2008.time + WHERE period > vPreviousPeriod; + + SET vYear = FLOOR(vCurrentPeriod / 100); + SET vWeek = vCurrentPeriod - (vYear * 100); + + DELETE FROM bi.analisis_ventas_vendedor_evolution + WHERE Periodo = vCurrentPeriod; + + REPLACE bi.analisis_ventas_vendedor_evolution(vendedor, ventas, semana,año, periodo) + SELECT Comercial AS vendedor, sum(ventas) AS ventas, vWeek, vYear, vCurrentPeriod + FROM ( + SELECT Comercial, sum(Importe) AS ventas + from bi.analisis_ventas + WHERE vYear = Año + AND vWeek = Semana + GROUP BY Comercial + UNION ALL + SELECT Comercial, - sum(Importe) AS ventas + from bi.analisis_ventas + WHERE vYear - 1 = Año + AND vWeek = Semana + GROUP BY Comercial + UNION ALL + SELECT vendedor, ventas + FROM bi.analisis_ventas_vendedor_evolution + WHERE Periodo = vPreviousPeriod + ) sub + GROUP BY vendedor; + END WHILE; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `analisis_ventas_simple` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `analisis_ventas_simple`() +BEGIN + +TRUNCATE bi.analisis_grafico_simple; + +INSERT INTO bi.analisis_grafico_simple SELECT * FROM bi.analisis_grafico_ventas; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `analisis_ventas_update` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `analisis_ventas_update`() +BEGIN + + DECLARE vLastMonth DATE; + + SET vLastMonth = util.firstDayOfMonth(TIMESTAMPADD(MONTH, -1, CURDATE())); + + DELETE FROM bi.analisis_ventas + WHERE Año > YEAR(vLastMonth) + OR (Año = YEAR(vLastMonth) AND Mes >= MONTH(vLastMonth)); + + INSERT INTO bi.analisis_ventas + + SELECT + `tp`.`Tipo` AS `Familia`, + `r`.`reino` AS `Reino`, + `tr`.`CodigoTrabajador` AS `Comercial`, + `tr2`.`CodigoTrabajador` AS `Comprador`, + `p`.`name` AS `Provincia`, + `w`.`name` AS `almacen`, + `time`.`year` AS `Año`, + `time`.`month` AS `Mes`, + `time`.`week` AS `Semana`, + `v`.`vista` AS `Vista`, + `bt`.`importe` AS `Importe` + FROM + (((((((((`bs`.`ventas` `bt` + LEFT JOIN `vn2008`.`Tipos` `tp` ON ((`tp`.`tipo_id` = `bt`.`tipo_id`))) + LEFT JOIN `vn2008`.`reinos` `r` ON ((`r`.`id` = `tp`.`reino_id`))) + LEFT JOIN `vn2008`.`Clientes` c on c.Id_Cliente = bt.Id_Cliente + LEFT JOIN `vn2008`.`Trabajadores` `tr` ON ((`tr`.`Id_Trabajador` = `c`.`Id_Trabajador`))) + LEFT JOIN `vn2008`.`Trabajadores` `tr2` ON ((`tr2`.`Id_Trabajador` = `tp`.`Id_Trabajador`))) + JOIN vn2008.time on time.date = bt.fecha + JOIN vn2008.Movimientos m on m.Id_Movimiento = bt.Id_Movimiento + LEFT JOIN `vn2008`.`Tickets` `t` ON ((`t`.`Id_Ticket` = `m`.`Id_Ticket`))) + JOIN vn2008.Agencias a on a.Id_Agencia = t.Id_Agencia + LEFT JOIN `vn2008`.`Vistas` `v` ON ((`v`.`vista_id` = `a`.`Vista`))) + LEFT JOIN `vn2008`.`Consignatarios` `cs` ON ((`cs`.`Id_Consigna` = `t`.`Id_Consigna`))) + LEFT JOIN `vn2008`.`province` `p` ON ((`p`.`province_id` = `cs`.`province_id`))) + LEFT JOIN `vn2008`.`warehouse` `w` ON ((`w`.`id` = `t`.`warehouse_id`))) + WHERE bt.fecha >= vLastMonth AND r.mercancia; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `call_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `call_add`() +BEGIN + +DECLARE datSTART DATETIME DEFAULT '2012-03-01'/*CURDATE()*/ ; +-- control +INSERT INTO vn2008.daily_task_log(consulta) VALUES('bi.call_add'); + +-- Seleccionamos la ultima fecha introducida +SELECT MAX(Fecha) INTO datSTART FROM `call`; + + +-- Borramos todas las entradas del dia datSTART por si hubiese registros nuevos +DELETE FROM `call` WHERE Fecha = datSTART; + +INSERT INTO bi.`call`(CodTrabajadorCartera,CodTrabajadorTelefono,dur_in,dur_out,Fecha,`year`,`month`,`week`,`hour`,phone) +SELECT vn2008.Averiguar_ComercialCliente(pb.Id_Cliente,Fecha) CodTrabajadorCartera,ll.CodigoTrabajador, dur_in, + dur_out, ll.Fecha,YEAR(ll.Fecha) `year`, MONTH(ll.Fecha) `month`,WEEK(ll.Fecha,7) `week`, Hora,phone +FROM +( +SELECT Id_Trabajador,CodigoTrabajador, IFNULL(billsec,0) dur_in, 0 dur_out, 1 as Recibidas, NULL as Emitidas, calldate as Fecha, + hour(calldate) as Hora,src as phone +FROM vn2008.Trabajadores T +INNER JOIN vn2008.cdr C ON C.dstchannel LIKE CONCAT('%', T.extension, '%') +WHERE calldate >= datSTART AND LENGTH(C.src) >=9 AND disposition = 'ANSWERED' AND duration +UNION ALL +SELECT Id_Trabajador,CodigoTrabajador,0 dur_in, IFNULL(billsec,0) dur_out, NULL as Recibidas, 1 as Emitidas, date(calldate), hour(calldate),dst +FROM vn2008.Trabajadores T +INNER JOIN vn2008.cdr C ON C.src = T.extension +WHERE calldate >= datSTART AND LENGTH(C.dst) >=9 AND disposition = 'ANSWERED' AND duration +) ll +INNER JOIN vn2008.Permisos USING(Id_Trabajador) +LEFT JOIN vn2008.v_phonebook pb ON pb.Telefono = ll.phone +WHERE Id_Grupo = 6; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `claim_ratio_routine` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `claim_ratio_routine`() +BEGIN + +DECLARE vMonthToRefund INT DEFAULT 4; + +-- control +INSERT INTO vn2008.daily_task_log(consulta) + VALUES('bi.claim_ratio_routine START'); + +/* +* PAK 2015-11-20 +* Se trata de añadir a la tabla Greuges todos los +* cargos que luego vamos a utilizar para calcular el recobro +*/ + +-- descuentos comerciales COD 11 + +INSERT INTO vn2008.Greuges(Fecha, Id_Cliente, Comentario, Importe, Id_Ticket) + SELECT Fecha, Id_Cliente, Concat('COD11 : ',Concepte), - round(Cantidad * + Preu * (100 - Descuento) / 100 ,2) AS Importe, t.Id_Ticket + FROM vn2008.Tickets t + JOIN vn2008.Movimientos m ON m.Id_Ticket = t.Id_Ticket + WHERE Id_Article = 11 + AND Concepte NOT LIKE '$%' + AND Fecha > '2014-01-01' + HAVING nz(Importe) <> 0; + +DELETE mc.* + FROM vn2008.Movimientos_componentes mc + JOIN vn2008.Movimientos m ON m.Id_Movimiento = mc.Id_Movimiento + JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket + WHERE m.Id_Article = 11 + AND m.Concepte NOT LIKE '$%' + AND t.Fecha > '2017-01-01'; + +INSERT INTO vn2008.Movimientos_componentes(Id_Movimiento, Id_Componente, Valor) + SELECT m.Id_Movimiento, 34, round(m.Preu * (100 - m.Descuento)/100,4) + FROM vn2008.Movimientos m + JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket + WHERE m.Id_Article = 11 + AND m.Concepte NOT LIKE '$%' + AND t.Fecha > '2017-01-01'; + +UPDATE vn2008.Movimientos m + JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket + SET Concepte = CONCAT('$ ',Concepte) + WHERE Id_Article = 11 + AND Concepte NOT LIKE '$%' + AND Fecha > '2014-01-01'; + +-- Reclamaciones demasiado sensibles + +INSERT INTO vn2008.Greuges(Fecha, Id_Cliente, Comentario, + Importe, Greuges_type_id,Id_Ticket) + SELECT cm.Fecha + , cm.Id_Cliente + , concat('Claim ',cm.id,' : ', m.Concepte) + ,round( -1 * ((sensib -1)/4) * Cantidad * + Preu * (100 - Descuento) / 100, 2) AS Reclamaciones + , 4 + , m.Id_Ticket + FROM vn2008.Movimientos m + JOIN vn2008.cl_act ca USING(Id_Movimiento) + JOIN vn2008.cl_main cm ON cm.id = ca.cl_main_id + WHERE ca.cl_sol_id NOT IN (1,5) + AND ca.greuge = 0 + AND cm.cl_est_id = 3; + + -- Reclamaciones que pasan a Maná + +INSERT INTO vn2008.Greuges(Fecha, Id_Cliente, Comentario, + Importe , Greuges_type_id,Id_Ticket) + SELECT cm.Fecha + , cm.Id_Cliente + , concat('Claim_mana ',cm.id,' : ', m.Concepte) + ,round( ((sensib -1)/4) * Cantidad * Preu * (100 - Descuento) / 100, 2) + AS Reclamaciones + ,3 + ,m.Id_Ticket + FROM vn2008.Movimientos m + JOIN vn2008.cl_act ca USING(Id_Movimiento) + JOIN vn2008.cl_main cm ON cm.id = ca.cl_main_id + WHERE ca.cl_sol_id NOT IN (1,5) + AND ca.greuge = 0 + AND cm.cl_est_id = 3 + AND cm.mana; + + -- Marcamos para no repetir +UPDATE vn2008.cl_act ca + JOIN vn2008.cl_main cm ON cm.id = ca.cl_main_id + SET greuge = 1 + WHERE ca.cl_sol_id NOT IN (1,5) + AND ca.greuge = 0 + AND cm.cl_est_id = 3; + + + +-- Recobros + +DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; +CREATE TEMPORARY TABLE tmp.ticket_list +(PRIMARY KEY (Id_Ticket)) +SELECT DISTINCT t.Id_Ticket + FROM vn2008.Movimientos_componentes mc + JOIN vn2008.Movimientos m ON mc.Id_Movimiento = m.Id_Movimiento + JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket + JOIN vn2008.Tickets_state ts ON ts.Id_Ticket = t.Id_Ticket + JOIN vncontrol.inter i ON i.inter_id = ts.inter_id + JOIN vn2008.state s ON s.id = i.state_id + WHERE mc.Id_Componente = 17 + AND mc.greuge = 0 + AND t.Fecha >= '2016-10-01' + AND t.Fecha < CURDATE() + AND t.warehouse_id <> 41 + AND s.alert_level >= 3; + +DELETE g.* + FROM vn2008.Greuges g + JOIN tmp.ticket_list t ON g.Id_Ticket = t.Id_Ticket + WHERE Greuges_type_id = 2; + +INSERT INTO vn2008.Greuges (Id_Cliente,Comentario,Importe,Fecha, + Greuges_type_id, Id_Ticket) + SELECT Id_Cliente + ,concat('recobro ', m.Id_Ticket), - round(SUM(mc.Valor*Cantidad),2) + AS dif + ,date(t.Fecha) + , 2 + ,tt.Id_Ticket + FROM vn2008.Movimientos m + JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket + JOIN tmp.ticket_list tt ON tt.Id_Ticket = t.Id_Ticket + JOIN vn2008.Movimientos_componentes mc + ON mc.Id_Movimiento = m.Id_Movimiento AND mc.Id_Componente = 17 + GROUP BY t.Id_Ticket + HAVING ABS(dif) > 1; + +UPDATE vn2008.Movimientos_componentes mc + JOIN vn2008.Movimientos m ON m.Id_Movimiento = mc.Id_Movimiento + JOIN tmp.ticket_list tt ON tt.Id_Ticket = m.Id_Ticket + SET greuge = 1 + WHERE Id_Componente = 17; + +/* +* Recalculamos la ratio de las reclamaciones, que luego +* se va a utilizar en el recobro +*/ + +DELETE FROM bi.claims_ratio; + +REPLACE bi.claims_ratio(Id_Cliente, Consumo, Reclamaciones, Ratio, recobro) + SELECT fm.Id_Cliente, 12 * fm.Consumo, Reclamaciones, + round(Reclamaciones / (12*fm.Consumo),4) AS Ratio, 0 + FROM bi.facturacion_media_anual fm + LEFT JOIN( + SELECT cm.Id_Cliente, round(sum(-1 * ((sensib -1)/4) * + Cantidad * Preu * (100 - Descuento) / 100)) + AS Reclamaciones + FROM vn2008.Movimientos m + JOIN vn2008.cl_act ca + ON ca.Id_Movimiento = m.Id_Movimiento + JOIN vn2008.cl_main cm ON cm.id = ca.cl_main_id + WHERE ca.cl_sol_id NOT IN (1,5) + AND cm.cl_est_id = 3 + AND cm.Fecha >= TIMESTAMPADD(YEAR, -1, CURDATE()) + GROUP BY cm.Id_Cliente + ) claims ON claims.Id_Cliente = fm.Id_Cliente; + + +-- Calculamos el porcentaje del recobro para añadirlo al precio de venta +UPDATE bi.claims_ratio cr + JOIN ( + SELECT Id_Cliente, nz(SUM(Importe)) AS Greuge + FROM vn2008.Greuges + WHERE Fecha <= CURDATE() + GROUP BY Id_Cliente + ) g ON g.Id_Cliente = cr.Id_Cliente + SET recobro = GREATEST(0,round(nz(Greuge) / + (nz(Consumo) * vMonthToRefund / 12 ) ,3)); + +-- control +INSERT INTO vn2008.daily_task_log(consulta) + VALUES('bi.claim_ratio_routine END'); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `clean` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `clean`() +BEGIN +DECLARE vDateShort DATETIME; +DECLARE vDateLong DATETIME; + +SET vDateShort = TIMESTAMPADD(MONTH, -2, CURDATE()); +SET vDateLong = TIMESTAMPADD(MONTH, -18,CURDATE()); + +INSERT INTO bi.daily_task_log(state) VALUES('clean START'); + +DELETE FROM bi.comparativa_clientes WHERE Fecha < vDateLong; +DELETE FROM bi.Greuge_Evolution WHERE Fecha < vDateShort AND weekday(Fecha) != 1; + +INSERT INTO bi.daily_task_log(state) VALUES('clean END'); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `clean_launcher` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `clean_launcher`() +BEGIN + + call vn2008.clean(0); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `comparativa_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `comparativa_add`() +BEGIN + DECLARE lastCOMP INT; # Se trata de una variable para almacenar el ultimo valor del Periodo + + SELECT MAX(Periodo) INTO lastCOMP FROM vn2008.Comparativa; + -- Fijaremos las ventas con más de un mes de antiguedad en la tabla Comparativa + + IF lastCOMP < vn2008.vnperiod(CURDATE())- 3 AND vn2008.vnweek(CURDATE()) > 3 THEN + + REPLACE vn2008.Comparativa(Periodo, Id_Article, warehouse_id, Cantidad,price) + SELECT vn2008.vnperiod(T.Fecha) AS Periodo + , Id_Article + , warehouse_id + , SUM(Cantidad) AS Total + , SUM(Cantidad * Preu * (100 - Descuento) / 100) precio + FROM vn2008.Movimientos M + JOIN vn2008.Tickets T USING (Id_Ticket) + JOIN vn2008.Articles A USING (Id_Article) + LEFT JOIN vn2008.Tipos ti ON ti.tipo_id = A.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = ti.reino_id + WHERE T.Fecha BETWEEN TIMESTAMPADD(DAY,-60,CURDATE()) AND TIMESTAMPADD(DAY,-30,CURDATE()) + AND T.Id_Cliente NOT IN(400,200) + AND display <> 0 AND warehouse_id NOT IN (0,13) + GROUP BY Id_Article, Periodo, warehouse_id; + + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `comparativa_add_manual` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `comparativa_add_manual`(IN dat_START DATE, IN dat_END DATE) +BEGIN + + DECLARE datINI DATETIME; + DECLARE datFIN DATETIME; + + -- Seleccionamos la fecha minima/maxima del periodo que vamos a consultar + SELECT MIN(`date`) INTO datINI FROM vn2008.`time` WHERE period = vn2008.vnperiod(dat_START); + SELECT TIMESTAMP(MAX(`date`),'23:59:59') INTO datFIN FROM vn2008.`time` WHERE period = vn2008.vnperiod(dat_END); + + DELETE FROM vn2008.Comparativa WHERE Periodo BETWEEN vn2008.vnperiod(dat_START) and vn2008.vnperiod(dat_END); + + REPLACE vn2008.Comparativa(Periodo, Id_Article, warehouse_id, Cantidad,price) + SELECT tm.period AS Periodo + , M.Id_Article + , t.warehouse_id + , SUM(Cantidad) AS Total + , sum(v.importe) AS precio + FROM vn2008.Movimientos M + JOIN vn2008.Tickets t on t.Id_Ticket = M.Id_Ticket + JOIN bs.ventas v on v.Id_Movimiento = M.Id_Movimiento + JOIN vn2008.time tm on tm.date = v.fecha + JOIN vn2008.Tipos tp on v.tipo_id = tp.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id + WHERE v.fecha BETWEEN datINI and datFIN + AND r.display <> 0 AND t.warehouse_id NOT IN (0,13) + GROUP BY Id_Article, Periodo, t.warehouse_id; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `customer_risk_update` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `customer_risk_update`(v_customer INT, v_company INT, v_amount DECIMAL(10,2)) +BEGIN + IF v_amount IS NOT NULL + THEN + INSERT INTO bi.customer_risk + SET + customer_id = v_customer, + company_id = v_company, + amount = v_amount + ON DUPLICATE KEY UPDATE + amount = amount + VALUES(amount); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `defaultersFromDate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `defaultersFromDate`(IN vDate DATE) +BEGIN + +SELECT t1.*, c.Cliente, w.workerCode, c.pay_met_id,c.Vencimiento +FROM ( +-- Filtramos aquellos clientes cuyo saldo se ha incrementado de ayer a hoy + select * from( + select today.client, today.amount todayAmount, yesterday.amount yesterdayAmount, round(yesterday.amount - today.amount,2) as difference, defaulterSince + from + (select client, amount, defaulterSince + from defaulters + where date = vDate and hasChanged) today + join + (select client, amount + from defaulters + where date = TIMESTAMPADD(DAY,-1,vDate)) yesterday using(client) + + having today.amount > 0 and difference <> 0 + ) newDefaulters +)t1 left join vn2008.Clientes c ON t1.client = c.Id_Cliente + left join vn.worker w ON w.id = c.Id_Trabajador; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `defaulting` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `defaulting`(IN vDate DATE) +BEGIN + DECLARE vDone BOOLEAN; + DECLARE vClient INT; + DECLARE vAmount INT; + DECLARE vDateInvoice DATE; + DECLARE vAmountInvoice DECIMAL(10,2); + DECLARE vDueDay INT; + DECLARE vGraceDays INT; + DECLARE defaulters CURSOR FOR + SELECT client, amount, Vencimiento, graceDays FROM bi.defaulters d + JOIN vn2008.Clientes c ON c.Id_Cliente = d.client + JOIN vn2008.pay_met pm ON pm.id = c.pay_met_id + WHERE hasChanged AND date = vDate; + + DECLARE invoices CURSOR FOR + SELECT Fecha, importe FROM vn2008.Facturas f + WHERE f.Fecha >= '2016-01-01' AND f.Id_Cliente = vClient ORDER BY f.Fecha DESC; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + -- Control + + INSERT INTO vn2008.daily_task_log(consulta) VALUES('defaulting'); + + DELETE FROM bi.defaulters WHERE date = vDate; + + INSERT INTO bi.defaulters(client, date, amount) + SELECT customer_id, vDate, FLOOR(SUM(amount)) AS amount + FROM bi.customerRiskOverdue + GROUP BY customer_id; + + -- marcamos si ha cambiado y heredamos la fecha defaulterSince + UPDATE bi.defaulters d + JOIN ( + SELECT * FROM( + SELECT client, amount , defaulterSince FROM bi.defaulters + WHERE date <= TIMESTAMPADD(DAY,-1, vDate) + ORDER BY date DESC) t GROUP BY client + ) yesterday using(client) + SET d.hasChanged = IF(d.amount <> yesterday.amount, 1, 0), + d.defaulterSince = yesterday.defaulterSince + WHERE d.date = vDate ; + + OPEN defaulters; + defaulters: LOOP + SET vDone = FALSE; + SET vAmount = 0; + FETCH defaulters INTO vClient,vAmount, vDueDay, vGraceDays; + IF vDone THEN + LEAVE defaulters; + END IF; + OPEN invoices; + invoices:LOOP + + FETCH invoices INTO vDateInvoice, vAmountInvoice; + IF vDone THEN + LEAVE invoices; + END IF; + + IF TIMESTAMPADD(DAY, vGraceDays, vn2008.paymentday(vDateInvoice, vDueDay)) <= vDate THEN + SET vAmount = vAmount - vAmountInvoice; + IF vAmount <= 0 THEN + UPDATE defaulters SET defaulterSince = vn2008.paymentday(vDateInvoice, vDueDay) + WHERE client = vClient and date = vDate; + + SET vAmount = 0; + LEAVE invoices; + END IF; + END IF; + END LOOP; + CLOSE invoices; + END LOOP; + CLOSE defaulters; + DELETE FROM bi.defaulting WHERE date = vDate; + + INSERT INTO bi.defaulting(date, amount) + SELECT vDate, SUM(amount) + FROM bi.defaulters + WHERE date = vDate and amount > 0; + + CALL vn.clientFreeze(); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `defaultingkk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `defaultingkk`(IN vDate DATE) +BEGIN + DECLARE done BIT DEFAULT 0; + DECLARE vClient INT; + DECLARE vAmount INT; + DECLARE vDateInvoice DATE; + DECLARE vAmountInvoice DECIMAL(10,2); + DECLARE vDueDay INT; + DECLARE vGraceDays INT; + DECLARE defaulters CURSOR FOR + SELECT client, amount, Vencimiento, graceDays FROM bi.defaulters d + JOIN vn2008.Clientes c ON c.Id_Cliente = d.client + JOIN vn2008.pay_met pm ON pm.id = c.pay_met_id + WHERE hasChanged AND date = vDate; + + DECLARE invoices CURSOR FOR + SELECT Fecha, importe FROM vn2008.Facturas f + WHERE f.Fecha >= '2016-01-01' AND f.Id_Cliente = vClient ORDER BY f.Fecha DESC; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + -- Control + + INSERT INTO vn2008.daily_task_log(consulta) VALUES('defaulting'); + + DELETE FROM bi.defaulters WHERE date = vDate; + + INSERT INTO bi.defaulters(client, date, amount) + SELECT customer_id, vDate, FLOOR(SUM(amount)) AS amount + FROM bi.customerRiskOverdue + GROUP BY customer_id; + + -- marcamos si ha cambiado y heredamos la fecha defaulterSince + UPDATE bi.defaulters d + JOIN ( + SELECT client, amount , defaulterSince FROM bi.defaulters + WHERE date = TIMESTAMPADD(DAY,-1, vDate) + GROUP BY client + ) yesterday using(client) + SET d.hasChanged = IF(d.amount <> yesterday.amount, 1, 0), + d.defaulterSince = yesterday.defaulterSince + WHERE d.date = vDate ; + + OPEN defaulters; + defaulters: BEGIN + REPEAT + FETCH defaulters INTO vClient,vAmount, vDueDay, vGraceDays; + OPEN invoices; + invoices:BEGIN + REPEAT + + FETCH invoices INTO vDateInvoice, vAmountInvoice; + IF TIMESTAMPADD(DAY, vGraceDays, vn2008.paymentday(vDateInvoice, vDueDay)) <= vDate THEN + SET vAmount = vAmount - vAmountInvoice; + IF vAmount < 0 THEN + UPDATE defaulters SET defaulterSince = vn2008.paymentday(vDateInvoice, vDueDay) + WHERE client = vClient and date = vDate; + SET vAmount = 0; + LEAVE invoices; + END IF; + END IF; + UNTIL done END REPEAT; + END invoices; + CLOSE invoices; + UNTIL done OR vClient IS NULL END REPEAT; + END defaulters; + CLOSE defaulters; + DELETE FROM bi.defaulting WHERE date = vDate; + + INSERT INTO bi.defaulting(date, amount) + SELECT vDate, SUM(amount) + FROM bi.defaulters + WHERE date = vDate and amount > 0; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `defaulting_launcher` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `defaulting_launcher`() +BEGIN + + CALL bi.defaulting(curdate()); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `equaliza` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `equaliza`(IN wh_id INT) +BEGIN + +DECLARE datEQ DATETIME; +/* JGF 2017-03-20 cuelga el sistema + +SELECT `date` INTO datEQ FROM bi.variables WHERE variable = IF(wh_id = 17,'eq_mcf','equalizator'); + + +IF TIMEDIFF(now(), datEQ) > '00:05:00' THEN + + UPDATE bi.Equalizator e + JOIN + ( + SELECT + Vista, + sum(1) as pedido, + sum(PedidoImpreso) as impreso, + sum(t.Factura IS NOT NULL + OR t.Etiquetasemitidas + OR nz(ticket_id) <> 0) as encajado + FROM + vn2008.Movimientos + JOIN + vn2008.Tickets t USING (Id_Ticket) + JOIN + vn2008.Agencias a ON t.Id_Agencia = a.Id_Agencia + JOIN + vn2008.Clientes C USING (Id_Cliente) + LEFT JOIN + (SELECT distinct + ticket_id + FROM + vn2008.expeditions e JOIN vn2008.Tickets t ON t.Id_Ticket = e.ticket_id WHERE Fecha >= curDate()) exp ON ticket_id = Id_Ticket + WHERE + invoice And Fecha >= curDate() + AND t.warehouse_id = wh_id + AND fecha < (TIMESTAMPADD(DAY, 1, CURDATE())) + GROUP BY Vista) sub using(Vista) + SET e.Pedido = sub.pedido, e.Impreso = sub.impreso, e.Encajado = sub.encajado; + + UPDATE bi.variables SET `date`= now() WHERE variable = IF(wh_id = 17,'eq_mcf','equalizator'); + + +END IF; +*/ +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `facturacion_media_anual_update` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `facturacion_media_anual_update`() +BEGIN + +-- control +INSERT INTO vn2008.daily_task_log(consulta) VALUES('bi.facturacion_media_anual_update'); + +TRUNCATE TABLE bi.facturacion_media_anual; + +REPLACE bi.facturacion_media_anual(Id_Cliente, Consumo) +select Id_Cliente, avg(Consumo) +from ( + Select Id_Cliente, YEAR(fecha) year, MONTH(fecha) month, sum(importe) as Consumo + from bs.ventas + where fecha >= TIMESTAMPADD(YEAR,-1,CURDATE()) + group by Id_Cliente, year, month +) vol +group by Id_Cliente; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `greuge_dif_porte_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `greuge_dif_porte_add`() +BEGIN + +DECLARE datSTART DATETIME DEFAULT TIMESTAMPADD(DAY,-10,CURDATE()); +DECLARE datEND DATETIME DEFAULT TIMESTAMPADD(DAY,-1,CURDATE()); + +DROP TEMPORARY TABLE IF EXISTS tmp.dp; + +CREATE TEMPORARY TABLE tmp.dp + (PRIMARY KEY (Id_Ticket)) + SELECT + t.Id_Ticket, + SUM(az.price * IF( + e.EsBulto = 71 + AND ISNULL(e.Id_Article) + AND a.Vista = 2, + 0.75, + 1 + ) + ) AS teorico, + 00000.00 as practico, + 00000.00 as greuge + FROM + vn2008.Tickets t + JOIN vn2008.Clientes cli ON cli.Id_cliente = t.Id_Cliente + LEFT JOIN vn2008.expeditions e ON e.ticket_id = t.Id_Ticket + JOIN vn2008.Consignatarios c ON c.Id_Consigna = t.Id_Consigna + JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia + JOIN vn2008.Agencias_province ap ON t.warehouse_id = ap.warehouse_id + AND ap.province_id = c.province_id + AND ap.agency_id = a.agency_id + JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = t.Id_Agencia + AND az.zona = ap.zona + AND t.warehouse_id = az.warehouse_id + AND az.Id_Article = e.EsBulto + WHERE + t.Fecha between datSTART AND datEND + AND cli.`real` + AND t.empresa_id IN (442 , 567) + GROUP BY t.Id_Ticket; + +DROP TEMPORARY TABLE IF EXISTS tmp.dp_aux; + +CREATE TEMPORARY TABLE tmp.dp_aux + (PRIMARY KEY (Id_Ticket)) + SELECT t.Id_Ticket, sum(freight) as porte + FROM tmp.dp + JOIN vn2008.Tickets t ON t.Id_Ticket = dp.Id_Ticket + JOIN vn2008.Rutas r on r.Id_Ruta = t.Id_Ruta + JOIN vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia + JOIN ( + SELECT + M.Id_Ticket, + M.Cantidad * (vn2008.CM3(b.Id_Compra) / 1000000 / C.Packing) * (az.price / 0.08) AS freight + FROM + vn2008.Movimientos M + JOIN vn2008.Tickets t ON t.Id_Ticket = M.Id_Ticket + JOIN vn2008.Consignatarios c ON c.Id_Consigna = t.Id_Consigna + JOIN bi.Last_buy_id b ON M.Id_Article = b.Id_Article + AND t.warehouse_id = b.warehouse_id + JOIN vn2008.Compres C ON b.Id_Compra = C.Id_Compra + JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia + JOIN vn2008.Agencias_province ap ON t.warehouse_id = ap.warehouse_id + AND ap.province_id = c.province_id + AND ap.agency_id = a.agency_id + JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = t.Id_Agencia + AND az.zona = ap.zona + AND t.warehouse_id = az.warehouse_id + AND az.Id_Article = 71 + WHERE t.Fecha between datSTART AND datEND + ) vmv ON vmv.Id_Ticket = t.Id_Ticket + WHERE a.is_volumetric + GROUP BY t.Id_Ticket; + + UPDATE tmp.dp + JOIN tmp.dp_aux using(Id_Ticket) + SET teorico = porte; + +DROP TEMPORARY TABLE IF EXISTS tmp.dp_aux; + +CREATE TEMPORARY TABLE tmp.dp_aux + (PRIMARY KEY (Id_Ticket)) + SELECT dp.Id_Ticket, sum(Cantidad * Valor) as valor + FROM tmp.dp + JOIN vn2008.Movimientos m using(Id_Ticket) + JOIN vn2008.Movimientos_componentes mc using(Id_Movimiento) + WHERE Id_Componente = 15 + GROUP BY m.Id_Ticket; + +UPDATE tmp.dp + JOIN tmp.dp_aux using(Id_Ticket) + SET practico = valor; + +DROP TEMPORARY TABLE tmp.dp_aux; + +CREATE TEMPORARY TABLE tmp.dp_aux + (PRIMARY KEY (Id_Ticket)) + SELECT dp.Id_Ticket, Importe + FROM tmp.dp + JOIN + ( + SELECT Id_Ticket, sum(Importe) as Importe + FROM vn2008.Greuges g + WHERE Greuges_type_id = 1 + GROUP BY Id_Ticket + ) sub using(Id_Ticket); + +UPDATE tmp.dp + JOIN tmp.dp_aux using(Id_Ticket) + SET greuge = Importe; + + +INSERT INTO vn2008.Greuges (Id_Cliente,Comentario,Importe,Fecha, Greuges_type_id, Id_Ticket) +SELECT t.Id_Cliente + , concat('dif_porte ', dp.Id_Ticket) + , round(teorico - practico - greuge,2) as Importe + , date(t.Fecha) + , 1 + ,t.Id_Ticket + FROM tmp.dp + JOIN vn2008.Tickets t on dp.Id_Ticket = t.Id_Ticket + WHERE ABS(teorico - practico - greuge) > 1; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Greuge_Evolution_Add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Greuge_Evolution_Add`() +BEGIN + + /* + + Inserta en la tabla Greuge_Evolution el saldo acumulado de cada cliente, así como las ventas acumuladas en los ultimos 365 dias + , para poder controlar su evolucion + + */ + + + + DECLARE datFEC DATE; + DECLARE datFEC_TOMORROW DATE; + DECLARE datFEC_LASTYEAR DATE; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN + + GET DIAGNOSTICS CONDITION 2 @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SELECT CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto')); + INSERT INTO vn2008.mail (`to`,`subject`,`text`) VALUES ('jgallego@verdnatura.es', 'Greuge_Evolution_Add' ,CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto'))); + INSERT INTO vn2008.mail (`to`,`subject`,`text`) VALUES ('pako@verdnatura.es', 'Greuge_Evolution_Add' ,CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto'))); + + END; + + SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; + + + INSERT INTO vn2008.daily_task_log(consulta) VALUES('Greuge Evolution Add START'); + + SELECT TIMESTAMPADD(DAY,1,MAX(Fecha)),TIMESTAMPADD(DAY,2,MAX(Fecha)) INTO datFEC, datFEC_TOMORROW FROM bi.Greuge_Evolution; + + SET datFEC_LASTYEAR = TIMESTAMPADD(YEAR,-1,datFEC); + + DELETE FROM bi.Greuge_Evolution WHERE Fecha >= datFEC; + + DROP TEMPORARY TABLE IF EXISTS maxInvoice; + + CREATE TEMPORARY TABLE maxInvoice + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT DISTINCT Id_Cliente, max(Fecha) as maxFecha + FROM vn2008.Facturas + GROUP BY Id_Cliente + HAVING maxFecha < timestampadd(month,-2,datFEC); + + INSERT INTO vn2008.daily_task_log(consulta) VALUES('Greuge Evolution Add MIDDLE'); + + WHILE datFEC < CURDATE() DO + + REPLACE bi.Greuge_Evolution(Id_Cliente, Fecha, Greuge, Ventas) + + SELECT Id_Cliente, datFEC as Fecha, Greuge, Ventas + + FROM + + ( + SELECT Id_Cliente, sum(Importe) as Greuge + FROM vn2008.Greuges + where Fecha <= datFEC + group by Id_Cliente + + ) sub + + RIGHT JOIN + + ( + + SELECT Id_Cliente, sum(Ventas) as Ventas + FROM + ( + + SELECT Id_Cliente, IF (fecha != datFEC, -1,1) * (importe + recargo) as Ventas + FROM bs.ventas + WHERE fecha = datFEC or fecha = datFEC_LASTYEAR + + UNION ALL + + SELECT Id_Cliente, Ventas + FROM bi.Greuge_Evolution + WHERE Fecha = TIMESTAMPADD(DAY, -1, datFEC) + + ) sub + group by Id_Cliente + + ) v using(Id_Cliente) + ; + + + -- Ahora calcularemos el greuge muerto + + -- + UPDATE bi.Greuge_Evolution ge + JOIN maxInvoice using(Id_Cliente) + SET FOSIL = GREUGE + WHERE ge.Fecha = datFEC; + + + -- Recobro + + UPDATE bi.Greuge_Evolution ge + JOIN ( + SELECT cs.Id_Cliente, sum(Valor * Cantidad) as Importe + FROM vn2008.Tickets t + JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna + JOIN vn2008.Movimientos m on m.Id_Ticket = t.Id_Ticket + JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento + WHERE t.Fecha >= datFEC + AND t.Fecha < datFEC_TOMORROW + AND mc.Id_Componente = 17 -- Recobro + GROUP BY cs.Id_Cliente + ) sub using(Id_Cliente) + SET Recobro = Importe + WHERE ge.Fecha = datFEC; + + INSERT INTO vn2008.daily_task_log(consulta) VALUES(CONCAT('Greuge Evolution ',datFEC)); + + SET datFEC = datFEC_TOMORROW; + SET datFEC_TOMORROW = TIMESTAMPADD(DAY,1,datFEC_TOMORROW); + SET datFEC_LASTYEAR = TIMESTAMPADD(YEAR,-1,datFEC); + + + END WHILE; + + DROP TEMPORARY TABLE IF EXISTS maxInvoice; + + INSERT INTO vn2008.daily_task_log(consulta) VALUES('Greuge Evolution Add END'); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `last_buy_id_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `last_buy_id_add`() +BEGIN + +-- control +-- INSERT INTO vn2008.daily_task_log(consulta) VALUES('bi.last_buy_id_add'); + +-- DELETE FROM bi.Last_buy_id; +TRUNCATE TABLE bi.Last_buy_id; + + +-- Primero metemos las del futuro, por si no hay en el presente + +INSERT INTO bi.Last_buy_id SELECT * FROM + (SELECT + Id_Article, Id_Compra, warehouse_id + FROM + vn2008.Compres c + JOIN vn2008.Entradas e USING (Id_Entrada) + JOIN vn2008.travel tr ON tr.id = e.travel_id + WHERE + Novincular = FALSE AND tarifa2 > 0 AND NOT Redada + AND landing > curdate() + ORDER BY landing DESC) t1 +GROUP BY Id_Article , warehouse_id; + +-- Ahora el presente machaca al futuro + +REPLACE bi.Last_buy_id SELECT * FROM + (SELECT + Id_Article, Id_Compra, warehouse_id + FROM + vn2008.Compres c + JOIN vn2008.Entradas e USING (Id_Entrada) + JOIN vn2008.travel tr ON tr.id = e.travel_id + WHERE + Novincular = FALSE AND tarifa2 > 0 AND NOT Redada + AND landing BETWEEN vn2008.date_inv() AND curdate() + ORDER BY landing DESC) t1 +GROUP BY Id_Article , warehouse_id; + + TRUNCATE TABLE bi.Last_buy_idBackUp; + INSERT INTO bi.Last_buy_idBackUp + SELECT * FROM Last_buy_id; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `margenes` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `margenes`() +BEGIN + +TRUNCATE TABLE bi.margenes; + +INSERT INTO bi.margenes +SELECT Id_Article, Cantidad as Unidades, Cantidad * round(nz(Costefijo) + nz(Embalajefijo) + nz(Comisionfija) + nz(Portefijo),3) as Coste , w.name as almacen, month(landing) as Mes, year(landing) as Year, 0 as Venta +FROM vn2008.Compres C +JOIN vn2008.Entradas E using(Id_Entrada) +JOIN vn2008.travel tr on tr.id = travel_id +JOIN vn2008.warehouse w on w.id = tr.warehouse_id +LEFT JOIN vn2008.Articles A using(Id_Article) +JOIN vn2008.Tipos TP using(tipo_id) +WHERE landing between '2013-01-01' and ' 2013-12-31' +AND E.Id_Proveedor <> 4 +AND not redada +AND not inventario +union all +SELECT Id_Article, Cantidad as Unidades, 0 as Coste , w.name, month(Fecha) as Mes, year(Fecha) as Year, Cantidad * round(Preu * (100 - M.Descuento) / 100,2) as Venta +FROM vn2008.Movimientos M +JOIN vn2008.Articles A using(Id_Article) +JOIN vn2008.Tipos TP using(tipo_id) +JOIN vn2008.Tickets T using(Id_Ticket) +JOIN vn2008.Clientes C using(Id_Cliente) +JOIN vn2008.warehouse w on w.id = warehouse_id +WHERE Fecha between '2013-01-01' and ' 2013-12-31' +AND (Id_Cliente = 31 or invoice) +AND Id_Cliente NOT IN (2066,2067,2068); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nightly_tasks` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nightly_tasks`() +BEGIN + +call bi.analisis_ventas_evolution_add; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nigthlyAnalisisVentas` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nigthlyAnalisisVentas`() +BEGIN + + INSERT INTO vn2008.daily_task_log(consulta) VALUES('analisis ventas START'); + + CALL bi.analisis_ventas_update; + CALL bi.analisis_ventas_simple; + CALL bi.analisis_ventas_evolution_add; + + INSERT INTO vn2008.daily_task_log(consulta) VALUES('analisis ventas END'); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `partitioning` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `partitioning`(IN intyear INT) +BEGIN + + DECLARE v_sql TEXT; + DECLARE strSquemaName VARCHAR(10); + DECLARE strTableName VARCHAR(20); + DECLARE strFieldName VARCHAR(20); + DECLARE strDateField VARCHAR(20); + DECLARE strTableDependingOn VARCHAR(20); + DECLARE strFieldDependingOn VARCHAR(20); + DECLARE done BIT DEFAULT 0; + DECLARE strCacheSchema VARCHAR(5); + DECLARE dat_start,dat_end DATE; + DECLARE cur1 CURSOR FOR + SELECT `schema_name`,`table_name` FROM `cache`.partitioning_information ORDER BY execution_order; + DECLARE cur2 CURSOR FOR + SELECT `schema_name`,`table_name`,`date_field` FROM `cache`.partitioning_information WHERE date_field > '' ORDER BY execution_order; + DECLARE cur3 CURSOR FOR + SELECT `schema_name`,`table_name`,`table_depending` FROM `cache`.partitioning_information WHERE table_depending > '' ORDER BY execution_order; + DECLARE cur4 CURSOR FOR + SELECT `schema_name`,`table_name`,`table_depending` FROM `cache`.partitioning_information WHERE table_depending > '' ORDER BY execution_order DESC; + DECLARE cur5 CURSOR FOR + SELECT `schema_name`,`table_name`,`date_field` FROM `cache`.partitioning_information WHERE date_field > '' ORDER BY execution_order DESC; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + + SET FOREIGN_KEY_CHECKS=0; + IF LENGTH(intyear) <> 4 THEN + CALL el_año_debe_contener_4_caracteres_yyyy(); + END IF; + SET dat_start = STR_TO_DATE(CONCAT('01,01,',intyear),'%d,%m,%Y'); + SET dat_end = STR_TO_DATE(CONCAT('31,12,',intyear),'%d,%m,%Y'); + SET strCacheSchema = CONCAT('vn_',right(intyear,2)); + SET v_sql = sql_printf ('CREATE SCHEMA IF NOT EXISTS %t',strCacheSchema); + CALL vn2008.sql_query (v_sql); + + -- Insertamos en las tablas del cur1 + OPEN cur1; + FETCH cur1 INTO strSquemaName,strTableName; + WHILE NOT done DO + SET v_sql = sql_printf ('CREATE TABLE IF NOT EXISTS %t.%t LIKE %t.%t', + strCacheSchema, + strTableName, + strSquemaName, + strTableName); + + CALL vn2008.sql_query (v_sql); + + FETCH cur1 INTO strSquemaName,strTableName; + + END WHILE; + CLOSE cur1; + + -- Insertamos en las tablas del cur2 + OPEN cur2; + FETCH cur2 INTO strSquemaName,strTableName,strDateField; + WHILE NOT done DO + SET v_sql = sql_printf ('REPLACE INTO %t.%t SELECT * FROM %t.%t WHERE %t BETWEEN %v AND %v', + strCacheSchema, + strTableName, + strSquemaName, + strTableName, + strDateField, + dat_start, + dat_end); + + SELECT v_sql; + CALL vn2008.sql_query (v_sql); + + FETCH cur2 INTO strSquemaName,strTableName,strDateField; + + END WHILE; + CLOSE cur2; + + -- Insertamos en las tablas del cur3 + OPEN cur3; + SET done = 0; + FETCH cur3 INTO strSquemaName,strTableName,strTableDependingOn; + WHILE NOT done DO + + + -- Torna la columna per la qual vincular amb el seu pare + SELECT kcu.column_name INTO strFieldName + FROM information_schema.key_column_usage kcu + WHERE table_schema = CONVERT(strSquemaName USING utf8) COLLATE utf8_general_ci + AND REFERENCED_TABLE_NAME = CONVERT(strTableDependingOn USING utf8) COLLATE utf8_general_ci + AND table_name = CONVERT(strTableName USING utf8) COLLATE utf8_general_ci; + + -- Torna la columna per la qual vincular amb el seu fill + SELECT kcu.column_name INTO strFieldDependingOn + FROM information_schema.key_column_usage kcu + WHERE table_schema = CONVERT(strSquemaName USING utf8) COLLATE utf8_general_ci -- FIX mirar l'esquema del pare + AND constraint_name = 'PRIMARY' + AND table_name = CONVERT(strTableDependingOn USING utf8) COLLATE utf8_general_ci; + + SET v_sql = sql_printf ('REPLACE INTO %t.%t SELECT a.* FROM %t.%t a JOIN %t.%t b ON a.%t = b.%t', + strCacheSchema, + strTableName, + strSquemaName, + strTableName, + strCacheSchema, + strTableDependingOn, + strFieldName, + strFieldDependingOn); + select v_sql; + CALL vn2008.sql_query (v_sql); + + FETCH cur3 INTO strSquemaName,strTableName,strTableDependingOn; + END WHILE; + + CLOSE cur3; + + -- Borramos en las tablas del cur4 que es igual que el dos pero en sentido descendente + -- para evitar errores con las foreign key + OPEN cur4; + SET done = 0; + FETCH cur4 INTO strSquemaName,strTableName,strTableDependingOn; + WHILE NOT done DO + + + -- Torna la columna per la qual vincular amb el seu pare + SELECT kcu.column_name INTO strFieldName + FROM information_schema.key_column_usage kcu + WHERE table_schema = CONVERT(strSquemaName USING utf8) COLLATE utf8_general_ci + AND REFERENCED_TABLE_NAME = CONVERT(strTableDependingOn USING utf8) COLLATE utf8_general_ci + AND table_name = CONVERT(strTableName USING utf8) COLLATE utf8_general_ci; + + -- Torna la columna per la qual vincular amb el seu fill + SELECT kcu.column_name INTO strFieldDependingOn + FROM information_schema.key_column_usage kcu + WHERE table_schema = CONVERT(strSquemaName USING utf8) COLLATE utf8_general_ci + AND constraint_name = 'PRIMARY' + AND table_name = CONVERT(strTableDependingOn USING utf8) COLLATE utf8_general_ci; + + SELECT v_sql; + SET v_sql = sql_printf ('DELETE a.* FROM %t.%t a JOIN %t.%t b ON a.%t = b.%t', + strSquemaName, + strTableName, + strCacheSchema, + strTableDependingOn, + strFieldName, + strFieldDependingOn); + CALL vn2008.sql_query (v_sql); + + FETCH cur4 INTO strSquemaName,strTableName,strTableDependingOn; + END WHILE; + + CLOSE cur4; + + -- Borramos en las tablas del cur5 + OPEN cur5; + SET done = 0; + FETCH cur5 INTO strSquemaName,strTableName,strDateField; + WHILE NOT done DO + + SET v_sql = sql_printf ('DELETE FROM %t WHERE %t BETWEEN %v AND %v', + strTableName, + strDateField, + dat_start, + dat_end); + CALL vn2008.sql_query (v_sql); + + FETCH cur5 INTO strSquemaName,strTableName,strDateField; + + END WHILE; + CLOSE cur5; + SET FOREIGN_KEY_CHECKS=1; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `primer_pedido_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `primer_pedido_add`() +BEGIN + INSERT IGNORE INTO bi.primer_pedido(Id_Ticket, Id_Cliente, month, year, total) + SELECT * + FROM + (SELECT + `m`.`Id_Ticket` , + `v`.`Id_Cliente` , + `t`.`month`, + `t`.`year`, + v.importe + v.recargo as total + FROM + bs.ventas v + JOIN + vn2008.Movimientos m on m.Id_Movimiento = v.Id_Movimiento + JOIN + vn2008.time t on t.date = v.fecha + WHERE + fecha > CURDATE() + INTERVAL -(1) YEAR + ORDER BY fecha) `s` + GROUP BY `s`.`Id_Cliente`; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `regularidad` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `regularidad`() +BEGIN + +select Id_Cliente, Meses, IF(Antiguedad = 13,12,Antiguedad) , Meses / IF(Antiguedad = 13,12,Antiguedad) as Regularidad from ( +SELECT Id_Cliente, count(*) as Meses, FLOOR(DATEDIFF('2012-07-31', IF(Created < '2011-08-01','2011-08-01', Created)) / 30) +1 as Antiguedad from +( + +SELECT DISTINCT Id_Cliente, Periodo(Fecha) as periodo from Facturas +where Fecha between '2011-08-01' AND '2012-07-31' + +) sub + +join Clientes using(Id_Cliente) +where Created <= '2012-07-31' + +group by Id_Cliente +having Antiguedad > 0 + +) sub44 +order by Antiguedad ; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `rotacion_update` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `rotacion_update`() +BEGIN + +-- control +INSERT INTO vn2008.daily_task_log(consulta) VALUES('bi.rotation_update'); + +-- Sólo hace la consulta gorda los sábados de madrugada. Necesita casi dos horas. + +IF DAY(CURDATE()) = 5 THEN + + call rotacion_update_manual(1, 999999, TIMESTAMPADD(YEAR,-1,CURDATE()), CURDATE()) ; + +END if; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `rotacion_update_manual` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `rotacion_update_manual`(IN intART_DESDE INT, IN intART_HASTA INT, IN datSTART DATE, IN datEND DATE) +BEGIN + + +DECLARE intLAPSO INT DEFAULT DATEDIFF(datEND,datSTART ); + + + + + REPLACE bi.rotacion(Id_Article,warehouse_id,total,rotacion) + SELECT Id_Article, warehouse_id, Total, round((sum(Saldo_Ponderado)/Total),2) as rotacion -- round(avg(Saldo_Ponderado) / (Total / intLAPSO),1) as Rotacion + FROM + ( + SELECT Id_Article, warehouse_id, + @intervalo:= IF(warehouse_id = @wh AND Id_Article = @art , DATEDIFF(Fecha, @fec),1) as Dias, + IF(warehouse_id = @wh AND Id_Article = @art , IF(@sd < 0,0,@sd) * @intervalo, IF(Unidades<0,0,Unidades)) as Saldo_Ponderado, + IF(warehouse_id = @wh AND Id_Article = @art , @sd:= @sd + Unidades, @sd:= Unidades) as Saldo + + , @fec:= Fecha, @art:= Id_Article, @wh:= warehouse_id + FROM + ( + SELECT Id_Article, landing as Fecha, sum(Cantidad) as Unidades, warehouse_id, @fec:= datSTART, @art := 0, @d := 0, @sd:= 0, @wh := 0, @intervalo := 0 + FROM + ( + SELECT Id_Article, landing, Cantidad, warehouse_id + FROM vn2008.Compres C + JOIN vn2008.Entradas E using(Id_Entrada) + JOIN vn2008.Articles A using(Id_Article) + JOIN vn2008.Tipos tp ON tp.tipo_id = A.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id + JOIN vn2008.travel tr on tr.id = travel_id + JOIN vn2008.warehouse w on w.id = tr.warehouse_id + WHERE landing between datSTART and datEND + AND Id_Article between intART_DESDE and intART_HASTA + AND Id_Proveedor <> 4 + AND r.display <> 0 + AND NOT E.Inventario + AND NOT fuente + AND NOT redada + UNION ALL + SELECT Id_Article, shipment, -Cantidad, warehouse_id_out + FROM vn2008.Compres C + JOIN vn2008.Entradas E using(Id_Entrada) + JOIN vn2008.Articles A using(Id_Article) + JOIN vn2008.Tipos tp ON tp.tipo_id = A.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id + JOIN vn2008.travel tr on tr.id = travel_id + JOIN vn2008.warehouse w on w.id = tr.warehouse_id_out + WHERE shipment between datSTART and datEND + AND Id_Article between intART_DESDE and intART_HASTA + AND Id_Proveedor <> 4 + AND r.display <> 0 + AND NOT fuente + AND NOT E.Inventario + AND NOT redada + UNION ALL + SELECT Id_Article, date(Fecha), -Cantidad, warehouse_id + FROM vn2008.Movimientos M + JOIN vn2008.Articles A using(Id_Article) + JOIN vn2008.Tipos tp ON tp.tipo_id = A.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id + JOIN vn2008.Tickets t using(Id_Ticket) + JOIN vn2008.warehouse w on w.id = t.warehouse_id + WHERE Fecha between datSTART and datEND + AND r.display <> 0 + AND NOT fuente + AND Id_Article between intART_DESDE and intART_HASTA + AND Id_Cliente NOT IN (2066,2067,2068) + ) sub + GROUP BY Id_Article, warehouse_id, Fecha + ) sub2 + ) sub4 + JOIN + ( + SELECT Id_Article, sum(Cantidad) as Total, warehouse_id + FROM vn2008.Compres C + JOIN vn2008.Entradas E using(Id_Entrada) + JOIN vn2008.Articles A using(Id_Article) + JOIN vn2008.Tipos tp ON tp.tipo_id = A.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id + JOIN vn2008.travel tr on tr.id = travel_id + JOIN vn2008.warehouse w on w.id = tr.warehouse_id + WHERE landing between datSTART and datEND + AND Id_Article between intART_DESDE and intART_HASTA + AND Id_Proveedor <> 4 + AND NOT E.Inventario + AND r.display <> 0 + AND NOT redada + AND NOT fuente + GROUP BY Id_Article, warehouse_id + ) sub3 using(Id_Article, warehouse_id) + + GROUP BY Id_Article, warehouse_id; + + + + CALL vn2008.item_last_buy_(NULL,datSTART); + + -- Añadimos el volumen por unidad de venta + update bi.rotacion r + JOIN vn2008.t_item_last_buy b ON r.Id_Article = b.item_id AND r.warehouse_id = b.warehouse_id + join vn2008.Compres ON Id_Compra = b.buy_id + set cm3 = vn2008.cm3_2(Id_Cubo, r.Id_Article) / Packing + where r.Id_Article between intART_DESDE and intART_HASTA; + +-- Añadimos el coste de almacenamiento y manipulacion +UPDATE bi.rotacion +JOIN ( + SELECT warehouse_id, sum(total*rotacion*cm3) as Operacion + FROM bi.rotacion + WHERE Id_Article between intART_DESDE and intART_HASTA + GROUP BY warehouse_id + ) sub using(warehouse_id) + +JOIN ( + SELECT warehouse_id, sum(Valor) as Coste_Auxiliar + FROM bi.tarifa_warehouse + WHERE Id_Premisa = 1 + GROUP BY warehouse_id + ) sub2 using(warehouse_id) + +JOIN ( + SELECT warehouse_id, sum(Valor) as Coste_Operativo + FROM bi.tarifa_warehouse + WHERE Id_Premisa IN (2,3) + GROUP BY warehouse_id + ) sub3 using(warehouse_id) + +JOIN ( + SELECT warehouse_id, sum(Valor) as Coste_Manipulacion + FROM bi.tarifa_warehouse + WHERE Id_Premisa = 4 + GROUP BY warehouse_id + ) sub4 using(warehouse_id) + +SET auxiliar = if(rotacion < 0,0,round(rotacion *cm3 * Coste_Auxiliar / Operacion,4)) + ,almacenaje = if(rotacion < 0,0,round(rotacion *cm3 * Coste_Operativo / Operacion,4)) + , manipulacion = if(rotacion < 0,0,round(rotacion *cm3 * Coste_Manipulacion / Operacion,4)) + WHERE Id_Article between intART_DESDE and intART_HASTA; + + +-- Añadimos todos los productos de los que no tenemos histórico, con la media de su familia como valor por defecto + +INSERT INTO bi.rotacion(Id_Article, warehouse_id, rotacion, cm3, almacenaje, manipulacion, auxiliar, mermas) +SELECT a.Id_Article, warehouse_id, rotacion_m, cm3_m, alm_m, man_m, aux_m, merm_m +FROM vn2008.Articles a +JOIN (SELECT tipo_id, warehouse_id, Id_Tipo, avg(rotacion) rotacion_m, avg(cm3) cm3_m, avg(almacenaje) alm_m, avg(manipulacion) man_m + , avg(auxiliar) aux_m, avg(mermas) merm_m + from bi.rotacion + join vn2008.Articles a using(Id_Article) + join vn2008.Tipos tp using(tipo_id) + group by tipo_id, warehouse_id) sub using(tipo_id) + +WHERE a.Id_Article between intART_DESDE and intART_HASTA +ON DUPLICATE KEY UPDATE rotacion = rotacion; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `rotacion_update_manual_PCA` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `rotacion_update_manual_PCA`(IN datSTART DATE, IN datEND DATE) +BEGIN + + +DECLARE intLAPSO INT DEFAULT DATEDIFF(datEND,datSTART ); +DECLARE intART_DESDE BIGINT DEFAULT 1; +DECLARE intART_HASTA BIGINT DEFAULT 100; + +WHILE intART_HASTA < 999999 DO + + IF intART_HASTA MOD 1000 = 0 THEN + + SELECT intART_HASTA; + + END IF; + + REPLACE bi.rotacion(Id_Article,warehouse_id,total,rotacion) + SELECT Id_Article, warehouse_id, Total, round((sum(Saldo_Ponderado)/Total),2) as rotacion -- round(avg(Saldo_Ponderado) / (Total / intLAPSO),1) as Rotacion + FROM + ( + SELECT Id_Article, warehouse_id, + @intervalo:= IF(warehouse_id = @wh AND Id_Article = @art , DATEDIFF(Fecha, @fec),1) as Dias, + IF(warehouse_id = @wh AND Id_Article = @art , IF(@sd < 0,0,@sd) * @intervalo, IF(Unidades<0,0,Unidades)) as Saldo_Ponderado, + IF(warehouse_id = @wh AND Id_Article = @art , @sd:= @sd + Unidades, @sd:= Unidades) as Saldo + + , @fec:= Fecha, @art:= Id_Article, @wh:= warehouse_id + FROM + ( + SELECT Id_Article, landing as Fecha, sum(Cantidad) as Unidades, warehouse_id, @fec:= datSTART, @art := 0, @d := 0, @sd:= 0, @wh := 0, @intervalo := 0 + FROM + ( + SELECT Id_Article, landing, Cantidad, warehouse_id + FROM vn2008.Compres C + JOIN vn2008.Entradas E using(Id_Entrada) + JOIN vn2008.Articles A using(Id_Article) + JOIN vn2008.Tipos using(tipo_id) + JOIN vn2008.travel tr on tr.id = travel_id + JOIN vn2008.warehouse w on w.id = tr.warehouse_id + WHERE landing between datSTART and datEND + AND warehouse_id = 44 + AND Id_Article between intART_DESDE and intART_HASTA + AND Id_Proveedor <> 4 + AND reino_id IN (3,4) + AND NOT E.Inventario + AND NOT fuente + AND NOT redada + UNION ALL + SELECT Id_Article, shipment, -Cantidad, warehouse_id_out + FROM vn2008.Compres C + JOIN vn2008.Entradas E using(Id_Entrada) + JOIN vn2008.Articles A using(Id_Article) + JOIN vn2008.Tipos using(tipo_id) + JOIN vn2008.travel tr on tr.id = travel_id + JOIN vn2008.warehouse w on w.id = tr.warehouse_id_out + WHERE shipment between datSTART and datEND + AND warehouse_id_out = 44 + AND Id_Article between intART_DESDE and intART_HASTA + AND Id_Proveedor <> 4 + AND reino_id IN (3,4) + AND NOT fuente + AND NOT E.Inventario + AND NOT redada + UNION ALL + SELECT Id_Article, date(Fecha), -Cantidad, warehouse_id + FROM vn2008.Movimientos M + JOIN vn2008.Articles A using(Id_Article) + JOIN vn2008.Tipos using(tipo_id) + JOIN vn2008.Tickets t using(Id_Ticket) + JOIN vn2008.warehouse w on w.id = t.warehouse_id + WHERE Fecha between datSTART and datEND + AND t.warehouse_id = 44 + AND reino_id IN (3,4) + AND NOT fuente + AND Id_Article between intART_DESDE and intART_HASTA + AND Id_Cliente NOT IN (2066,2067,2068) + ) sub + GROUP BY Id_Article, warehouse_id, Fecha + ) sub2 + ) sub4 + JOIN + ( + SELECT Id_Article, sum(Cantidad) as Total, warehouse_id + FROM vn2008.Compres C + JOIN vn2008.Entradas E using(Id_Entrada) + JOIN vn2008.Articles A using(Id_Article) + JOIN vn2008.Tipos using(tipo_id) + JOIN vn2008.travel tr on tr.id = travel_id + JOIN vn2008.warehouse w on w.id = tr.warehouse_id + WHERE landing between datSTART and datEND + AND warehouse_id = 44 + AND Id_Article between intART_DESDE and intART_HASTA + AND Id_Proveedor <> 4 + AND NOT E.Inventario + AND reino_id IN (3,4) + AND NOT redada + AND NOT fuente + GROUP BY Id_Article, warehouse_id + ) sub3 using(Id_Article, warehouse_id) + GROUP BY Id_Article, warehouse_id; + +SET intART_DESDE = intART_DESDE + 100; +SET intART_DESDE = intART_HASTA + 100; + +END WHILE; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `rotacion_volumen_update` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `rotacion_volumen_update`(IN vIdCompra BIGINT) +BEGIN + +UPDATE bi.rotacion r +JOIN vn2008.travel tr ON r.warehouse_id = tr.warehouse_id +JOIN vn2008.Entradas e ON e.travel_id = tr.id +JOIN vn2008.Compres c ON e.Id_Entrada = c.Id_Entrada AND c.Id_Article = r.Id_Article +SET r.cm3 = vn2008.cm3_2(c.Id_Cubo, c.Id_Article) / c.Packing +where c.Id_Compra = vIdCompra; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `rutas_m3_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `rutas_m3_add`() +BEGIN + + DECLARE datSTART DATE DEFAULT TIMESTAMPADD(DAY,-90,CURDATE()); + DECLARE datEND DATE DEFAULT CURDATE(); + DECLARE datFEC DATE; + + IF hour(now()) between 5 and 24 then + + SET datSTART = CURDATE(); + SET datEND = TIMESTAMPADD(DAY,1,CURDATE()); + + end if; + + SET datFEC = datSTART; + + CALL vn2008.item_last_buy_(NULL,CURDATE()); + WHILE datFEC <= datEND DO + + UPDATE vn2008.Rutas R + JOIN (SELECT R.Id_Ruta, sum(Cantidad * vn2008.cm3_unidad(b.buy_id)) / 1000000 as m3 + from vn2008.Rutas R + join vn2008.Tickets t using(Id_Ruta) + join vn2008.Movimientos m using(Id_Ticket) + join vn2008.t_item_last_buy b ON Id_Article = b.item_id AND b.warehouse_id = t.warehouse_id + where R.Fecha = datFEC AND R.m3 IS NULL + group by R.Id_Ruta + ) t using(Id_Ruta) + SET R.m3 = t.m3 + WHERE R.m3 IS NULL; + + SET datFEC = TIMESTAMPADD(DAY,1,datFEC); + + END WHILE; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_add2kk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_add2kk`(intNUMDAYS INTEGER) +BEGIN + +DECLARE datSTART,datEND DATETIME; +-- Seleccionamos los tickets a tratar añadiendolos a la tabla bi.ticket + + SET @@session.max_sp_recursion_depth=250; -- Habilito la recursión en mysql hasta un límite de 250. + SET datSTART = TIMESTAMPADD(DAY, -intNUMDAYS, CURDATE()); + + + SET datEND = vn2008.DAYEND(datSTART); + + + + + -- Actualiza el valor de costfixat en Movimientos a efectos estadisticos +update vn2008.Movimientos m +join +( +select Id_Movimiento, round(IFNULL(sum(Valor) , IFNULL( Preu * (100 - m.Descuento) /100,0 ) ),2) as Cost +from vn2008.Tickets t +join vn2008.Movimientos m using(Id_Ticket) +left join vn2008.Movimientos_componentes mc using(Id_Movimiento) +join bi.tarifa_componentes tc using(Id_Componente) +join bi.tarifa_componentes_series tcs on tcs.tarifa_componentes_series_id = tc.tarifa_componentes_series_id AND tcs.base +where t.Fecha between datSTART AND datEND +group by Id_Movimiento +) sub using(Id_Movimiento) +set CostFixat = Cost; + + + + + REPLACE INTO bi.ticket(Id_Ticket,Id_Cliente,`date`, tipo_id, `year`,`week`,`month`,`day`,`view`,amount,Id_Trabajador,Id_propietario ) + SELECT t.Id_Ticket,c.Id_Cliente,t.Fecha `date`,tipo_id, year(Fecha) as `year`, vn2008.vnweek(Fecha) as `week`, + month(Fecha) as `month`,vn2008.vnday(Fecha) as `day`, A.Vista `view`, + IFNULL( round( sum(cantidad * Preu * (100 - m.Descuento)/100) ,2) ,0) as amount, + c.Id_Trabajador, c.Id_Trabajador + FROM vn2008.Tickets t + JOIN vn2008.Consignatarios cs using(Id_Consigna) + JOIN vn2008.warehouse W ON W.id = t.warehouse_id + INNER JOIN vn2008.Clientes c on cs.Id_Cliente = c.Id_Cliente + INNER JOIN vn2008.Movimientos m USING(Id_Ticket) + INNER JOIN vn2008.Articles USING(Id_Article) + INNER JOIN vn2008.Agencias A on A.Id_Agencia = t.Id_Agencia + INNER JOIN vn2008.Tipos TP USING(tipo_id) + WHERE Fecha BETWEEN datSTART AND datEND + AND NOT W.fuente + AND c.`Real` + AND (reino_id <> 6 OR m.Id_Article IN (95,98)) + GROUP BY t.Id_Ticket,tipo_id ; + + /* + UPDATE bi.ticket + JOIN vn2008.Tickets using(Id_Ticket) + JOIN vn2008.Agencias using(Id_Agencia) + JOIN vn2008.agency_warehouse aw using(agency_id,warehouse_id) + SET `view` = aw.Vista + WHERE Tickets.Fecha BETWEEN datSTART AND datEND; + */ + + + + IF (intNUMDAYS>0) THEN + CALL `bi`.`ticket_add2` (intNUMDAYS-1); + END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_addkk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_addkk`(intNUMDAYS INTEGER) +BEGIN + +DECLARE datSTART DATETIME; + + IF (intNUMDAYS > 0) THEN + SET datSTART = TIMESTAMPADD(DAY, -intNUMDAYS, CURDATE()); + DELETE FROM bi.ticket where `date` >= datSTART ; + CALL `bi`.`ticket_add2` (intNUMDAYS); + DELETE FROM bi.ticket where `date` < '2001-01-01'; + END IF; + +UPDATE bi.ticket bt +JOIN vn2008.Tickets USING(Id_Ticket) +JOIN vn2008.Consignatarios C USING(Id_Consigna) +SET bt.Id_Cliente = C.Id_Cliente +, bt.Id_Trabajador = @idT := vn2008.Averiguar_ComercialCliente_Id(C.Id_Cliente,bt.date) +, bt.Id_propietario = @idT +WHERE Tickets.Id_Cliente = 31 AND bt.date >= datSTART; + + +-- Almacena los tickets que comisionan, para consultas rapidas + +truncate table bi.f_tvc; + +insert into bi.f_tvc +select Id_Ticket +from vn2008.Tickets t +join vn2008.Consignatarios cs using(Id_Consigna) +join vn2008.Clientes c on c.Id_Cliente = cs.Id_Cliente +join vn2008.warehouse w on w.id = t.warehouse_id +where c.`Real` = TRUE +and w.comisionantes = TRUE; + + + + +-- Quita las horas de los tickets del mes anterior +IF DAY(CURDATE()) = 15 THEN + update vn2008.Tickets + set Fecha = date(Fecha) + where Fecha between TIMESTAMPADD(DAY,-46,CURDATE()) and TIMESTAMPADD(DAY, -1 - DAY(CURDATE()), CURDATE()); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_add_bydaykk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_add_bydaykk`(datFEC DATE) +BEGIN + + DECLARE datSTART DATETIME; + DECLARE datEND DATETIME; + +-- Seleccionamos los tickets a tratar añadiendolos a la tabla bi.ticket + + SET @@session.max_sp_recursion_depth=2500; -- Habilito la recursión en mysql hasta un límite de 2500. + + SET datSTART = DATE(datFEC); + SET datEND = TIMESTAMPADD(DAY,30,datSTART); + + DELETE FROM bi.ticket WHERE `date` between datSTART and datEND; + + INSERT INTO bi.ticket(Id_Ticket,`date`, tipo_id, `year`,`week`,`month`,`view`,amount,Id_Trabajador, Id_Cliente, Id_Propietario ) + SELECT t.Id_Ticket,t.Fecha `date`,tipo_id, vn2008.vnyear(Fecha) as `year`, vn2008.vnweek(Fecha) as `week`, + vn2008.vnmonth(Fecha) as `month`, A.Vista `view`, IFNULL(round(sum(cantidad * preu * (100 - m.Descuento)/100),2),0) as amount, + c.Id_Trabajador, c.Id_Cliente, ifnull(c.Id_Trabajador,20) + FROM vn2008.Tickets t + JOIN vn2008.Consignatarios cs using(Id_Consigna) + JOIN vn2008.warehouse W ON W.id = t.warehouse_id + INNER JOIN vn2008.Clientes c on c.Id_Cliente = cs.Id_Cliente + INNER JOIN vn2008.Movimientos m USING(Id_Ticket) + INNER JOIN vn2008.Articles USING(Id_Article) + INNER JOIN vn2008.Agencias A on A.Id_Agencia = t.Id_Agencia + INNER JOIN vn2008.Tipos TP USING(tipo_id) + LEFT JOIN vn2008.reinos r ON r.id = TP.reino_id + WHERE Fecha >= datSTART + AND Fecha < datEND + AND NOT W.fuente + AND (invoice or t.Id_Cliente in (5,31)) + AND r.display <> 0 + GROUP BY t.Id_Ticket,tipo_id + ON DUPLICATE KEY UPDATE amount = amount, + `view` = `view`, + `date` = `date`, + `week` = `week`, + `year` = `year`, + `month` = `month`, + tipo_id = tipo_id, + Id_Trabajador = Id_Trabajador, + Id_Cliente = Id_Cliente, + Id_Propietario = ifnull(Id_Trabajador,20); + + UPDATE bi.ticket + JOIN vn2008.Tickets using(Id_Ticket) + JOIN vn2008.Agencias using(Id_Agencia) + JOIN vn2008.agency_warehouse aw using(agency_id,warehouse_id) + SET `view` = aw.Vista + WHERE Tickets.Fecha BETWEEN datSTART AND datEND; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Ultima_Accion` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Ultima_Accion`() +BEGIN + +REPLACE INTO bi.lastaction(Id_Cliente, Cliente, Ultima_accion, Comercial) + +SELECT Id_Cliente, Cliente, Ultima_accion, Comercial +FROM vn2008.Clientes +JOIN +( +SELECT Id_Cliente, MAX(calldate) as Ultima_accion, vn2008.Averiguar_ComercialCliente(Id_Cliente, CURDATE()) as Comercial +FROM +( +SELECT Id_Cliente, calldate +FROM vn2008.cdr +JOIN vn2008.Contactos CT on CT.Telefono = dst +JOIN vn2008.Relaciones using(Id_Contacto) +WHERE Id_Cliente IS NOT NULL +AND duration > 30 +UNION ALL +SELECT Id_Cliente, calldate +FROM vn2008.cdr +JOIN vn2008.Contactos CT on CT.Movil = dst +JOIN vn2008.Relaciones using(Id_Contacto) +WHERE Id_Cliente IS NOT NULL +AND duration > 30 +UNION ALL +SELECT Id_Cliente, calldate +FROM vn2008.cdr +JOIN vn2008.Clientes CT on CT.Telefono = dst +WHERE duration > 30 +UNION ALL +SELECT Id_Cliente, calldate +FROM vn2008.cdr +JOIN vn2008.Clientes CT on CT.Movil = dst +WHERE duration > 30 +UNION ALL +SELECT C.Id_Cliente, Fecha +FROM vn2008.Tickets JOIN vn2008.Consignatarios C using(Id_Consigna) +) sub +GROUP BY Id_Cliente ) sub2 USING(Id_Cliente); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `Velocity_Add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `Velocity_Add`() +BEGIN + +DECLARE bol_EXISTS BOOL; +DECLARE datMAX DATETIME; +DECLARE v_buffer VARCHAR(11); +DECLARE v_sql VARCHAR(255); + + + +SELECT MAX(Fecha) INTO datMAX FROM bi.Velocity; + +IF Date(datMAX) = CURDATE() AND hour(datMAX) > hour(now()) THEN + + + SET v_buffer = vn2008.buffer_name(CURDATE(),1); + + SELECT count(*) INTO bol_EXISTS FROM information_schema.`TABLES` + WHERE TABLE_NAME = CONVERT(v_buffer using utf8) collate utf8_general_ci; + + IF bol_EXISTS THEN + + SET v_sql = sql_printf ( + 'INSERT INTO bi.Velocity(tipo_id, Fecha, Disponible, Visible) + SELECT A.tipo_id, NOW(), sum(avalaible), sum(visible) + FROM vn2008.%t b + JOIN Articles A ON b.item_id = A.Id_Article GROUP BY tipo_id; + ', + v_buffer + ); + + + CALL sql_query (v_sql); + + END IF; + +END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Current Database: `vn` +-- + +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `vn` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; + +USE `vn`; + +-- +-- Temporary view structure for view `accounting` +-- + +DROP TABLE IF EXISTS `accounting`; +/*!50001 DROP VIEW IF EXISTS `accounting`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `accounting` AS SELECT + 1 AS `id`, + 1 AS `bank`, + 1 AS `account`, + 1 AS `accountingTypeFk`, + 1 AS `entityFk`, + 1 AS `isActive`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `accountingType` +-- + +DROP TABLE IF EXISTS `accountingType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `accountingType` ( + `id` smallint(6) NOT NULL DEFAULT '0', + `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='descripcio dels valors de la columna "cash" de la taula vn2008.Bancios'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `activityTaxDismissed` +-- + +DROP TABLE IF EXISTS `activityTaxDismissed`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `activityTaxDismissed` ( + `clientFk` int(11) NOT NULL, + `isNotified` tinyint(1) DEFAULT '0', + `isDismissed` tinyint(1) DEFAULT '0', + `notified` int(11) DEFAULT '0', + PRIMARY KEY (`clientFk`), + CONSTRAINT `clientFk` FOREIGN KEY (`clientFk`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `address` +-- + +DROP TABLE IF EXISTS `address`; +/*!50001 DROP VIEW IF EXISTS `address`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `address` AS SELECT + 1 AS `customer`, + 1 AS `warehouse`, + 1 AS `street`, + 1 AS `city`, + 1 AS `province`, + 1 AS `postalCode`, + 1 AS `phone`, + 1 AS `celular`, + 1 AS `nickname`, + 1 AS `id`, + 1 AS `defaultAddress`, + 1 AS `agency`, + 1 AS `active`, + 1 AS `longitude`, + 1 AS `latitude`, + 1 AS `clientFk`, + 1 AS `warehouseFk`, + 1 AS `provinceFk`, + 1 AS `mobile`, + 1 AS `agencyFk`, + 1 AS `isEqualizated`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `addressForPackaging` +-- + +DROP TABLE IF EXISTS `addressForPackaging`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `addressForPackaging` ( + `addressFk` int(11) NOT NULL, + `packagingValue` decimal(10,2) NOT NULL DEFAULT '0.04', + PRIMARY KEY (`addressFk`), + CONSTRAINT `addresForPackaging_fk1` FOREIGN KEY (`addressFk`) REFERENCES `vn2008`.`Consignatarios` (`id_consigna`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `addressObservation` +-- + +DROP TABLE IF EXISTS `addressObservation`; +/*!50001 DROP VIEW IF EXISTS `addressObservation`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `addressObservation` AS SELECT + 1 AS `id`, + 1 AS `addressFk`, + 1 AS `observationTypeFk`, + 1 AS `description`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `agency` +-- + +DROP TABLE IF EXISTS `agency`; +/*!50001 DROP VIEW IF EXISTS `agency`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `agency` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `warehouse`, + 1 AS `warehouseFk`, + 1 AS `isVolumetric`, + 1 AS `bank`, + 1 AS `bankFk`, + 1 AS `warehouseNickname`, + 1 AS `warehouseAliasFk`, + 1 AS `own`, + 1 AS `labelZone`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `agencyHour` +-- + +DROP TABLE IF EXISTS `agencyHour`; +/*!50001 DROP VIEW IF EXISTS `agencyHour`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `agencyHour` AS SELECT + 1 AS `id`, + 1 AS `agency`, + 1 AS `weekDay`, + 1 AS `warehouse`, + 1 AS `province`, + 1 AS `substractDay`, + 1 AS `maxHour`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `agencyMode` +-- + +DROP TABLE IF EXISTS `agencyMode`; +/*!50001 DROP VIEW IF EXISTS `agencyMode`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `agencyMode` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `description`, + 1 AS `view`, + 1 AS `deliveryMethod`, + 1 AS `m3`, + 1 AS `cod71`, + 1 AS `web`, + 1 AS `agency`, + 1 AS `agencyFk`, + 1 AS `agencyService`, + 1 AS `agencyServiceFk`, + 1 AS `inflacion`, + 1 AS `isVolumetric`, + 1 AS `reportMail`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `agencyWarehouse` +-- + +DROP TABLE IF EXISTS `agencyWarehouse`; +/*!50001 DROP VIEW IF EXISTS `agencyWarehouse`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `agencyWarehouse` AS SELECT + 1 AS `agencyFk`, + 1 AS `warehouseFk`, + 1 AS `agencyType`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `autonomousRegion` +-- + +DROP TABLE IF EXISTS `autonomousRegion`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `autonomousRegion` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(50) CHARACTER SET utf8 NOT NULL, + `geoFk` int(11) DEFAULT NULL, + `countryFk` mediumint(8) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `countryFk` (`countryFk`), + CONSTRAINT `countryFk` FOREIGN KEY (`countryFk`) REFERENCES `vn2008`.`Paises` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `awb` +-- + +DROP TABLE IF EXISTS `awb`; +/*!50001 DROP VIEW IF EXISTS `awb`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `awb` AS SELECT + 1 AS `id`, + 1 AS `code`, + 1 AS `package`, + 1 AS `weight`, + 1 AS `created`, + 1 AS `transitoryFk`, + 1 AS `taxFk`, + 1 AS `docFk`, + 1 AS `amount`, + 1 AS `freightFk`, + 1 AS `m3`, + 1 AS `stems`, + 1 AS `flightFk`, + 1 AS `volumeWeight`, + 1 AS `hb`, + 1 AS `rate`, + 1 AS `booked`, + 1 AS `issued`, + 1 AS `operated`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `bank` +-- + +DROP TABLE IF EXISTS `bank`; +/*!50001 DROP VIEW IF EXISTS `bank`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `bank` AS SELECT + 1 AS `id`, + 1 AS `bank`, + 1 AS `account`, + 1 AS `cash`, + 1 AS `entityFk`, + 1 AS `isActive`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `bookingPlanner` +-- + +DROP TABLE IF EXISTS `bookingPlanner`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `bookingPlanner` ( + `id` int(10) NOT NULL AUTO_INCREMENT, + `effectived` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `pgcFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `taxAreaFk` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'SPAIN', + `priority` int(2) unsigned DEFAULT NULL, + `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT '1', + `countryFk` mediumint(8) unsigned NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + KEY `taxArea_bookingPlanner_idx` (`taxAreaFk`), + KEY `pgcFk_bookingPlanner_idx` (`pgcFk`), + KEY `taxClassFk` (`taxClassFk`), + KEY `countryFk` (`countryFk`), + CONSTRAINT `bookingPlanner_ibfk_1` FOREIGN KEY (`pgcFk`) REFERENCES `pgc` (`code`) ON DELETE CASCADE, + CONSTRAINT `bookingPlanner_ibfk_2` FOREIGN KEY (`taxClassFk`) REFERENCES `vn2008`.`iva_group` (`iva_group_id`) ON DELETE CASCADE, + CONSTRAINT `bookingPlanner_ibfk_3` FOREIGN KEY (`countryFk`) REFERENCES `vn2008`.`Paises` (`Id`) ON DELETE CASCADE, + CONSTRAINT `taxArea_bookingPlanner` FOREIGN KEY (`taxAreaFk`) REFERENCES `taxArea` (`code`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `botanicExport` +-- + +DROP TABLE IF EXISTS `botanicExport`; +/*!50001 DROP VIEW IF EXISTS `botanicExport`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `botanicExport` AS SELECT + 1 AS `id`, + 1 AS `ediGenusFk`, + 1 AS `ediSpecieFk`, + 1 AS `countryFk`, + 1 AS `restriction`, + 1 AS `description`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `buy` +-- + +DROP TABLE IF EXISTS `buy`; +/*!50001 DROP VIEW IF EXISTS `buy`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `buy` AS SELECT + 1 AS `id`, + 1 AS `entryFk`, + 1 AS `itemFk`, + 1 AS `amount`, + 1 AS `buyingValue`, + 1 AS `quantity`, + 1 AS `packageFk`, + 1 AS `stickers`, + 1 AS `freightValue`, + 1 AS `packageValue`, + 1 AS `comissionValue`, + 1 AS `packing`, + 1 AS `grouping`, + 1 AS `groupingMode`, + 1 AS `location`, + 1 AS `price1`, + 1 AS `price2`, + 1 AS `price3`, + 1 AS `minPrice`, + 1 AS `producer`, + 1 AS `printedStickers`, + 1 AS `isChecked`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `category` +-- + +DROP TABLE IF EXISTS `category`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `category` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `nick` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `city` +-- + +DROP TABLE IF EXISTS `city`; +/*!50001 DROP VIEW IF EXISTS `city`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `city` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `provinceFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `client` +-- + +DROP TABLE IF EXISTS `client`; +/*!50001 DROP VIEW IF EXISTS `client`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `client` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `fi`, + 1 AS `phone`, + 1 AS `fax`, + 1 AS `email`, + 1 AS `iban`, + 1 AS `dueDay`, + 1 AS `accountingAccount`, + 1 AS `isEqualizated`, + 1 AS `city`, + 1 AS `province`, + 1 AS `provinceFk`, + 1 AS `postcode`, + 1 AS `socialName`, + 1 AS `contact`, + 1 AS `Reexpedicion`, + 1 AS `hasToInvoice`, + 1 AS `Notas`, + 1 AS `notas_administracion`, + 1 AS `Copiafactura`, + 1 AS `Retener`, + 1 AS `Congelado`, + 1 AS `Id_Trabajador`, + 1 AS `workerFk`, + 1 AS `credit`, + 1 AS `cyc`, + 1 AS `Id_Pais`, + 1 AS `countryFk`, + 1 AS `activo`, + 1 AS `active`, + 1 AS `gestdoc`, + 1 AS `gestdocFk`, + 1 AS `calidad`, + 1 AS `paymentMethod`, + 1 AS `paymentMethodFk`, + 1 AS `registerDate`, + 1 AS `invoiceByEmail`, + 1 AS `isToBeMailed`, + 1 AS `channel`, + 1 AS `channelFk`, + 1 AS `VIES`, + 1 AS `sepavnl`, + 1 AS `corevnl`, + 1 AS `riskCalculated`, + 1 AS `corevnh`, + 1 AS `clientes_tipo_id`, + 1 AS `clientTypeFk`, + 1 AS `postcode_id`, + 1 AS `postcodeFk`, + 1 AS `mail_address`, + 1 AS `codpos`, + 1 AS `cplusTerIdNifFk`, + 1 AS `postalAddress`, + 1 AS `invoiceByAddress`, + 1 AS `isTaxDataChecked`, + 1 AS `isFreezed`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `clientCreditLimit` +-- + +DROP TABLE IF EXISTS `clientCreditLimit`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `clientCreditLimit` ( + `id` int(11) NOT NULL, + `maxAmount` int(10) unsigned NOT NULL, + `roleFk` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `clientManaCache` +-- + +DROP TABLE IF EXISTS `clientManaCache`; +/*!50001 DROP VIEW IF EXISTS `clientManaCache`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `clientManaCache` AS SELECT + 1 AS `clientFk`, + 1 AS `mana`, + 1 AS `dated`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `clientObservation` +-- + +DROP TABLE IF EXISTS `clientObservation`; +/*!50001 DROP VIEW IF EXISTS `clientObservation`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `clientObservation` AS SELECT + 1 AS `id`, + 1 AS `client`, + 1 AS `worker`, + 1 AS `text`, + 1 AS `creationDate`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `clientType` +-- + +DROP TABLE IF EXISTS `clientType`; +/*!50001 DROP VIEW IF EXISTS `clientType`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `clientType` AS SELECT + 1 AS `id`, + 1 AS `code`, + 1 AS `type`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `company` +-- + +DROP TABLE IF EXISTS `company`; +/*!50001 DROP VIEW IF EXISTS `company`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `company` AS SELECT + 1 AS `id`, + 1 AS `code`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `confectionType` +-- + +DROP TABLE IF EXISTS `confectionType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `confectionType` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `config` +-- + +DROP TABLE IF EXISTS `config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `config` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `mdbServer` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `fakeEmail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `defaultersMaxAmount` int(10) DEFAULT '200' COMMENT 'maxima deuda permitida a partir de la cual se bloquea a un usuario', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `country` +-- + +DROP TABLE IF EXISTS `country`; +/*!50001 DROP VIEW IF EXISTS `country`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `country` AS SELECT + 1 AS `id`, + 1 AS `country`, + 1 AS `CEE`, + 1 AS `isUeeMember`, + 1 AS `Code`, + 1 AS `currencyFk`, + 1 AS `politicalCountryFk`, + 1 AS `geoFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `cplusCorrectingType` +-- + +DROP TABLE IF EXISTS `cplusCorrectingType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cplusCorrectingType` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cplusInvoiceType472` +-- + +DROP TABLE IF EXISTS `cplusInvoiceType472`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cplusInvoiceType472` ( + `id` int(10) unsigned NOT NULL, + `description` varchar(255) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*18) TIPO FACTURA (Asientos)SOPORTADO – DEDUCIBLE (472)'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cplusInvoiceType477` +-- + +DROP TABLE IF EXISTS `cplusInvoiceType477`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cplusInvoiceType477` ( + `id` int(10) unsigned NOT NULL, + `description` varchar(255) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*18) TIPO FACTURA (Asientos)REPERCUTIDO - DEVENGADO (477)'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cplusRectificationType` +-- + +DROP TABLE IF EXISTS `cplusRectificationType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cplusRectificationType` ( + `id` int(10) unsigned NOT NULL, + `description` varchar(255) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*20) TIPO RECTIFICATIVA (Asientos)'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cplusSubjectOp` +-- + +DROP TABLE IF EXISTS `cplusSubjectOp`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cplusSubjectOp` ( + `id` int(10) unsigned NOT NULL, + `description` varchar(255) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*17) TIPO OPERACIÓN SUJETA/NO SUJETA (Asientos)'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cplusTaxBreak` +-- + +DROP TABLE IF EXISTS `cplusTaxBreak`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cplusTaxBreak` ( + `id` int(10) unsigned NOT NULL, + `description` varchar(255) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*16) TIPO EXENCIÓN (Asientos)'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cplusTerIdNif` +-- + +DROP TABLE IF EXISTS `cplusTerIdNif`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cplusTerIdNif` ( + `id` int(11) NOT NULL, + `description` varchar(255) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cplusTrascendency472` +-- + +DROP TABLE IF EXISTS `cplusTrascendency472`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cplusTrascendency472` ( + `id` int(10) unsigned NOT NULL, + `description` varchar(255) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*15) CLAVE DE RÉGIMEN ESPECIAL O TRASCENDENCIA(Asientos)SOPORTADO – DEDUCIBLE (472)'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cplusTrascendency477` +-- + +DROP TABLE IF EXISTS `cplusTrascendency477`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cplusTrascendency477` ( + `id` int(10) unsigned NOT NULL, + `description` varchar(255) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='(*15) CLAVE DE RÉGIMEN ESPECIAL O TRASCENDENCIA(Asientos) REPERCUTIDO - DEVENGADO (477)'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `creditClassification` +-- + +DROP TABLE IF EXISTS `creditClassification`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `creditClassification` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `client` int(11) NOT NULL, + `dateStart` date NOT NULL, + `dateEnd` date DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `creditClassifClientFk_idx` (`client`), + KEY `creditClassifdateEnd_idx` (`dateEnd`), + CONSTRAINT `creditClassifClientFk` FOREIGN KEY (`client`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`creditClassification_BEFORE_UPDATE` BEFORE UPDATE ON `creditClassification` FOR EACH ROW +BEGIN + IF NEW.client <> OLD.client THEN + CALL util.throw('NOT_ALLOWED_CHANGE_CLIENT'); + END IF; + IF NEW.dateEnd IS NOT NULL AND OLD.dateEnd IS NULL THEN + UPDATE vn2008.Clientes c + SET creditInsurance = 0 WHERE c.Id_cliente = NEW.client; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Table structure for table `creditInsurance` +-- + +DROP TABLE IF EXISTS `creditInsurance`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `creditInsurance` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `creditClassification` int(11) DEFAULT NULL, + `credit` int(11) DEFAULT NULL, + `creationDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `grade` tinyint(1) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `CreditInsurance_Fk1_idx` (`creditClassification`), + CONSTRAINT `CreditInsurance_Fk1` FOREIGN KEY (`creditClassification`) REFERENCES `creditClassification` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalla los clientes que tienen seguro de credito'; +/*!40101 SET character_set_client = @saved_cs_client */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`creditInsurance_AFTER_INSERT` AFTER INSERT ON `creditInsurance` FOR EACH ROW +BEGIN + UPDATE vn2008.Clientes c + JOIN vn.creditClassification cc ON cc.client = c.Id_Cliente + SET creditInsurance = NEW.credit WHERE cc.id = NEW.creditClassification; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Table structure for table `dailyTaskLog` +-- + +DROP TABLE IF EXISTS `dailyTaskLog`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `dailyTaskLog` ( + `state` varchar(250) COLLATE utf8_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `deliveryError` +-- + +DROP TABLE IF EXISTS `deliveryError`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `deliveryError` ( + `ticket` int(11) NOT NULL, + `description` varchar(255) CHARACTER SET latin1 NOT NULL, + `worker` int(11) NOT NULL, + `creation_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + KEY `errorTickets_idx` (`ticket`), + KEY `errorWorker_idx` (`worker`), + CONSTRAINT `errorTickets` FOREIGN KEY (`ticket`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `errorWorker` FOREIGN KEY (`worker`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `deliveryMethod` +-- + +DROP TABLE IF EXISTS `deliveryMethod`; +/*!50001 DROP VIEW IF EXISTS `deliveryMethod`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `deliveryMethod` AS SELECT + 1 AS `id`, + 1 AS `code`, + 1 AS `description`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ediGenus` +-- + +DROP TABLE IF EXISTS `ediGenus`; +/*!50001 DROP VIEW IF EXISTS `ediGenus`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ediGenus` AS SELECT + 1 AS `id`, + 1 AS `latinGenusName`, + 1 AS `entried`, + 1 AS `dued`, + 1 AS `modified`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ediSpecie` +-- + +DROP TABLE IF EXISTS `ediSpecie`; +/*!50001 DROP VIEW IF EXISTS `ediSpecie`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ediSpecie` AS SELECT + 1 AS `id`, + 1 AS `genusFk`, + 1 AS `latinSpeciesName`, + 1 AS `entried`, + 1 AS `dued`, + 1 AS `modified`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `entry` +-- + +DROP TABLE IF EXISTS `entry`; +/*!50001 DROP VIEW IF EXISTS `entry`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `entry` AS SELECT + 1 AS `id`, + 1 AS `supplierFk`, + 1 AS `ref`, + 1 AS `isInventory`, + 1 AS `isConfirmed`, + 1 AS `isOrdered`, + 1 AS `isRaid`, + 1 AS `commission`, + 1 AS `created`, + 1 AS `evaNotes`, + 1 AS `travelFk`, + 1 AS `currencyFk`, + 1 AS `companyFk`, + 1 AS `gestDocFk`, + 1 AS `invoiceReceivedFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `especialPrice` +-- + +DROP TABLE IF EXISTS `especialPrice`; +/*!50001 DROP VIEW IF EXISTS `especialPrice`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `especialPrice` AS SELECT + 1 AS `id`, + 1 AS `clientFk`, + 1 AS `itemFk`, + 1 AS `value`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `excuse` +-- + +DROP TABLE IF EXISTS `excuse`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `excuse` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `txt` varchar(255) CHARACTER SET latin1 NOT NULL, + `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `expedition` +-- + +DROP TABLE IF EXISTS `expedition`; +/*!50001 DROP VIEW IF EXISTS `expedition`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `expedition` AS SELECT + 1 AS `id`, + 1 AS `agency`, + 1 AS `agencyFk`, + 1 AS `ticket`, + 1 AS `ticketFk`, + 1 AS `isBox`, + 1 AS `printingTime`, + 1 AS `item`, + 1 AS `itemFk`, + 1 AS `counter`, + 1 AS `checked`, + 1 AS `workerFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `expence` +-- + +DROP TABLE IF EXISTS `expence`; +/*!50001 DROP VIEW IF EXISTS `expence`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `expence` AS SELECT + 1 AS `id`, + 1 AS `taxTypeFk`, + 1 AS `name`, + 1 AS `isWithheld`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `family` +-- + +DROP TABLE IF EXISTS `family`; +/*!50001 DROP VIEW IF EXISTS `family`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `family` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `life`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `grant` +-- + +DROP TABLE IF EXISTS `grant`; +/*!50001 DROP VIEW IF EXISTS `grant`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `grant` AS SELECT + 1 AS `group`, + 1 AS `worker`, + 1 AS `company`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `grantGroup` +-- + +DROP TABLE IF EXISTS `grantGroup`; +/*!50001 DROP VIEW IF EXISTS `grantGroup`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `grantGroup` AS SELECT + 1 AS `id`, + 1 AS `description`, + 1 AS `observationType`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ink` +-- + +DROP TABLE IF EXISTS `ink`; +/*!50001 DROP VIEW IF EXISTS `ink`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ink` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `picture`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `intrastat` +-- + +DROP TABLE IF EXISTS `intrastat`; +/*!50001 DROP VIEW IF EXISTS `intrastat`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `intrastat` AS SELECT + 1 AS `id`, + 1 AS `description`, + 1 AS `taxGroupFk`, + 1 AS `taxCodeFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `invoiceCorrection` +-- + +DROP TABLE IF EXISTS `invoiceCorrection`; +/*!50001 DROP VIEW IF EXISTS `invoiceCorrection`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `invoiceCorrection` AS SELECT + 1 AS `correctingFk`, + 1 AS `correctedFk`, + 1 AS `cplusRectificationTypeFk`, + 1 AS `cplusInvoiceType477Fk`, + 1 AS `invoiceCorrectionTypeFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `invoiceCorrectionDataSource` +-- + +DROP TABLE IF EXISTS `invoiceCorrectionDataSource`; +/*!50001 DROP VIEW IF EXISTS `invoiceCorrectionDataSource`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `invoiceCorrectionDataSource` AS SELECT + 1 AS `itemFk`, + 1 AS `quantity`, + 1 AS `concept`, + 1 AS `price`, + 1 AS `discount`, + 1 AS `refFk`, + 1 AS `saleFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `invoiceCorrectionType` +-- + +DROP TABLE IF EXISTS `invoiceCorrectionType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `invoiceCorrectionType` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `description` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `description_UNIQUE` (`description`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `invoiceIn` +-- + +DROP TABLE IF EXISTS `invoiceIn`; +/*!50001 DROP VIEW IF EXISTS `invoiceIn`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `invoiceIn` AS SELECT + 1 AS `id`, + 1 AS `serialNumber`, + 1 AS `serial`, + 1 AS `supplierFk`, + 1 AS `issued`, + 1 AS `supplierRef`, + 1 AS `isBooked`, + 1 AS `currencyFk`, + 1 AS `created`, + 1 AS `companyFk`, + 1 AS `docFk`, + 1 AS `booked`, + 1 AS `operated`, + 1 AS `cplusInvoiceType472Fk`, + 1 AS `cplusRectificationTypeFk`, + 1 AS `cplusSubjectOpFk`, + 1 AS `cplusTaxBreakFk`, + 1 AS `cplusTrascendency472Fk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `invoiceInAwb` +-- + +DROP TABLE IF EXISTS `invoiceInAwb`; +/*!50001 DROP VIEW IF EXISTS `invoiceInAwb`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `invoiceInAwb` AS SELECT + 1 AS `invoiceInFk`, + 1 AS `awbFk`, + 1 AS `dua`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `invoiceInEntry` +-- + +DROP TABLE IF EXISTS `invoiceInEntry`; +/*!50001 DROP VIEW IF EXISTS `invoiceInEntry`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `invoiceInEntry` AS SELECT + 1 AS `id`, + 1 AS `invoiceInFk`, + 1 AS `entryFk`, + 1 AS `percentage`, + 1 AS `invoiceInAwbFk`, + 1 AS `isBooked`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `invoiceInIntrastat` +-- + +DROP TABLE IF EXISTS `invoiceInIntrastat`; +/*!50001 DROP VIEW IF EXISTS `invoiceInIntrastat`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `invoiceInIntrastat` AS SELECT + 1 AS `invoiceInFk`, + 1 AS `intrastatFk`, + 1 AS `amount`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `invoiceInSerial` +-- + +DROP TABLE IF EXISTS `invoiceInSerial`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `invoiceInSerial` ( + `code` varchar(2) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `cplusTerIdNifFk` int(11) NOT NULL DEFAULT '1', + PRIMARY KEY (`code`), + KEY `InvoiceInSerial_Fk1_idx` (`cplusTerIdNifFk`), + CONSTRAINT `InvoiceInSerial_Fk1` FOREIGN KEY (`cplusTerIdNifFk`) REFERENCES `cplusTerIdNif` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `invoiceInTax` +-- + +DROP TABLE IF EXISTS `invoiceInTax`; +/*!50001 DROP VIEW IF EXISTS `invoiceInTax`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `invoiceInTax` AS SELECT + 1 AS `id`, + 1 AS `invoiceInFk`, + 1 AS `taxCodeFk`, + 1 AS `taxableBase`, + 1 AS `expenceFk`, + 1 AS `foreignValue`, + 1 AS `created`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `invoiceOut` +-- + +DROP TABLE IF EXISTS `invoiceOut`; +/*!50001 DROP VIEW IF EXISTS `invoiceOut`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `invoiceOut` AS SELECT + 1 AS `id`, + 1 AS `ref`, + 1 AS `serial`, + 1 AS `issued`, + 1 AS `amount`, + 1 AS `clientFk`, + 1 AS `created`, + 1 AS `companyFk`, + 1 AS `dued`, + 1 AS `booked`, + 1 AS `cplusInvoiceType477Fk`, + 1 AS `cplusTaxBreakFk`, + 1 AS `cplusSubjectOpFk`, + 1 AS `cplusTrascendency477Fk`, + 1 AS `pdf`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `invoiceOutExpence` +-- + +DROP TABLE IF EXISTS `invoiceOutExpence`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `invoiceOutExpence` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `invoiceOutFk` int(10) unsigned NOT NULL, + `amount` decimal(10,2) NOT NULL DEFAULT '0.00', + `expenceFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `invoiceOutExpence_restriccion` (`expenceFk`,`invoiceOutFk`), + KEY `invoiceOutExpence_FK_1_idx` (`invoiceOutFk`), + KEY `invoiceOutExpence_FK_2_idx` (`expenceFk`), + CONSTRAINT `invoiceOutExpence_FK_1` FOREIGN KEY (`invoiceOutFk`) REFERENCES `vn2008`.`Facturas` (`factura_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `invoiceOutExpence_FK_2` FOREIGN KEY (`expenceFk`) REFERENCES `vn2008`.`Gastos` (`Id_Gasto`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Desglosa la base imponible de una factura en funcion del tipo de gasto/venta'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `invoiceOutSerial` +-- + +DROP TABLE IF EXISTS `invoiceOutSerial`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `invoiceOutSerial` ( + `code` varchar(2) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `isTaxed` tinyint(1) NOT NULL DEFAULT '1', + `taxAreaFk` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'NATIONAL', + `isCEE` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`code`), + KEY `taxAreaFk_idx` (`taxAreaFk`), + CONSTRAINT `invoiceOutSerial_ibfk_1` FOREIGN KEY (`taxAreaFk`) REFERENCES `taxArea` (`code`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `invoiceOutTax` +-- + +DROP TABLE IF EXISTS `invoiceOutTax`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `invoiceOutTax` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `invoiceOutFk` int(10) unsigned NOT NULL, + `taxableBase` decimal(10,2) NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `vat` decimal(10,2) NOT NULL DEFAULT '0.00', + `pgcFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0000000000', + PRIMARY KEY (`id`), + UNIQUE KEY `invoiceOutTax_Resctriccion` (`invoiceOutFk`,`pgcFk`), + KEY `invoiceOutFk_idx` (`invoiceOutFk`), + KEY `pgcFk` (`pgcFk`), + CONSTRAINT `invoiceOutFk` FOREIGN KEY (`invoiceOutFk`) REFERENCES `vn2008`.`Facturas` (`factura_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `invoiceOutTax_ibfk_1` FOREIGN KEY (`pgcFk`) REFERENCES `pgc` (`code`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `item` +-- + +DROP TABLE IF EXISTS `item`; +/*!50001 DROP VIEW IF EXISTS `item`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `item` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `familyFk`, + 1 AS `size`, + 1 AS `inkFk`, + 1 AS `category`, + 1 AS `stems`, + 1 AS `originFk`, + 1 AS `description`, + 1 AS `producerFk`, + 1 AS `intrastatFk`, + 1 AS `expenceFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `itemBotanical` +-- + +DROP TABLE IF EXISTS `itemBotanical`; +/*!50001 DROP VIEW IF EXISTS `itemBotanical`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `itemBotanical` AS SELECT + 1 AS `itemFk`, + 1 AS `botanical`, + 1 AS `genusFk`, + 1 AS `specieFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `itemBotanicalWithGenus` +-- + +DROP TABLE IF EXISTS `itemBotanicalWithGenus`; +/*!50001 DROP VIEW IF EXISTS `itemBotanicalWithGenus`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `itemBotanicalWithGenus` AS SELECT + 1 AS `itemFk`, + 1 AS `ediBotanic`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `itemConversor` +-- + +DROP TABLE IF EXISTS `itemConversor`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `itemConversor` ( + `espItemFk` int(11) NOT NULL, + `genItemFk` int(11) DEFAULT NULL, + PRIMARY KEY (`espItemFk`), + KEY `itemConversor_fk2_idx` (`genItemFk`), + CONSTRAINT `itemConversor_fk1` FOREIGN KEY (`espItemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `itemConversor_fk2` FOREIGN KEY (`genItemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relaciona los item específicos con los genéricos'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `itemTag` +-- + +DROP TABLE IF EXISTS `itemTag`; +/*!50001 DROP VIEW IF EXISTS `itemTag`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `itemTag` AS SELECT + 1 AS `id`, + 1 AS `itemFk`, + 1 AS `tagFk`, + 1 AS `value`, + 1 AS `priority`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `itemTagArranged` +-- + +DROP TABLE IF EXISTS `itemTagArranged`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `itemTagArranged` ( + `itemFk` int(11) NOT NULL, + `tag1` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `val1` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `tag2` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `val2` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `tag3` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `val3` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `tag4` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `val4` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `tag5` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `val5` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `tag6` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `val6` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`itemFk`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Cache de columnas de características de artículo'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `itemTagged` +-- + +DROP TABLE IF EXISTS `itemTagged`; +/*!50001 DROP VIEW IF EXISTS `itemTagged`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `itemTagged` AS SELECT + 1 AS `itemFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `itemTaxCountry` +-- + +DROP TABLE IF EXISTS `itemTaxCountry`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `itemTaxCountry` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `itemFk` int(11) DEFAULT NULL, + `countryFk` mediumint(8) unsigned DEFAULT NULL, + `taxClassFk` tinyint(3) unsigned NOT NULL DEFAULT '1', + `effectived` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `taxClassFK_idx` (`taxClassFk`), + KEY `countryFK_paises_idx` (`countryFk`), + KEY `itemFK_Article_idx` (`itemFk`), + CONSTRAINT `countryFK_paises` FOREIGN KEY (`countryFk`) REFERENCES `vn2008`.`Paises` (`Id`) ON UPDATE CASCADE, + CONSTRAINT `itemFK_Article` FOREIGN KEY (`itemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `taxClassFK_Iva_Group` FOREIGN KEY (`taxClassFk`) REFERENCES `vn2008`.`iva_group` (`iva_group_id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Define la clase de iva por artículo y pais'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `itemVerdecora` +-- + +DROP TABLE IF EXISTS `itemVerdecora`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `itemVerdecora` ( + `itemFk` int(11) NOT NULL, + `codin` int(11) DEFAULT NULL, + PRIMARY KEY (`itemFk`), + CONSTRAINT `itemVerdecora_fk1` FOREIGN KEY (`itemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relaciona nuestros articulos con los de Verdecora'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `logClient` +-- + +DROP TABLE IF EXISTS `logClient`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `logClient` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `originFk` int(11) NOT NULL, + `userFk` int(10) unsigned NOT NULL, + `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `description` text COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + KEY `originFk` (`originFk`), + KEY `userFk` (`userFk`), + CONSTRAINT `logClient_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `logClient_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `logEntry` +-- + +DROP TABLE IF EXISTS `logEntry`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `logEntry` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `originFk` int(11) NOT NULL, + `userFk` int(10) unsigned NOT NULL, + `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `description` text COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + KEY `userFk` (`userFk`), + KEY `logEntry_ibfk_1` (`originFk`), + CONSTRAINT `logEntry_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Entradas` (`Id_Entrada`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `logEntry_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `logTicket` +-- + +DROP TABLE IF EXISTS `logTicket`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `logTicket` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `originFk` int(11) NOT NULL, + `userFk` int(10) unsigned NOT NULL, + `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `description` text COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + KEY `logTicketoriginFk` (`originFk`), + KEY `logTicketuserFk` (`userFk`), + CONSTRAINT `logTicket_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `logTicket_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `logType` +-- + +DROP TABLE IF EXISTS `logType`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `logType` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `code` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `originTableName` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `logTableName` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `logWorker` +-- + +DROP TABLE IF EXISTS `logWorker`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `logWorker` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `originFk` int(11) NOT NULL, + `userFk` int(10) unsigned NOT NULL, + `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, + `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `description` text COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + KEY `workerFk_idx` (`originFk`), + KEY `userFk_idx` (`userFk`), + CONSTRAINT `userFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `workerFk` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `mail` +-- + +DROP TABLE IF EXISTS `mail`; +/*!50001 DROP VIEW IF EXISTS `mail`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `mail` AS SELECT + 1 AS `id`, + 1 AS `senderFk`, + 1 AS `recipientFk`, + 1 AS `sender`, + 1 AS `replyTo`, + 1 AS `subject`, + 1 AS `body`, + 1 AS `plainTextBody`, + 1 AS `attachment`, + 1 AS `creationDate`, + 1 AS `sent`, + 1 AS `status`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `mailTemplates` +-- + +DROP TABLE IF EXISTS `mailTemplates`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mailTemplates` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(50) CHARACTER SET utf8 NOT NULL, + `attachmentPath` text CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `manaSpellers` +-- + +DROP TABLE IF EXISTS `manaSpellers`; +/*!50001 DROP VIEW IF EXISTS `manaSpellers`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `manaSpellers` AS SELECT + 1 AS `worker`, + 1 AS `size`, + 1 AS `used`, + 1 AS `pricesModifierRate`, + 1 AS `pricesModifierActivated`, + 1 AS `workerCode`, + 1 AS `firstname`, + 1 AS `name`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `message` +-- + +DROP TABLE IF EXISTS `message`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `message` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `uuid` varchar(50) CHARACTER SET utf8 NOT NULL, + `sender` varchar(50) CHARACTER SET utf8 NOT NULL, + `recipient` varchar(50) CHARACTER SET utf8 NOT NULL, + `message` longtext CHARACTER SET utf8, + `sendDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `sender` (`sender`), + KEY `recipient` (`recipient`), + KEY `uuid` (`uuid`(8)) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `messageInbox` +-- + +DROP TABLE IF EXISTS `messageInbox`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `messageInbox` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `uuid` varchar(50) CHARACTER SET utf8 NOT NULL, + `sender` varchar(50) CHARACTER SET utf8 NOT NULL, + `recipient` varchar(45) CHARACTER SET utf8 NOT NULL, + `finalRecipient` varchar(50) CHARACTER SET utf8 NOT NULL, + `message` longtext CHARACTER SET utf8, + `sendDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `read` varchar(45) CHARACTER SET utf8 NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `uuid` (`uuid`(8)), + KEY `finalRecipient` (`finalRecipient`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `movement` +-- + +DROP TABLE IF EXISTS `movement`; +/*!50001 DROP VIEW IF EXISTS `movement`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `movement` AS SELECT + 1 AS `id`, + 1 AS `item`, + 1 AS `ticket`, + 1 AS `concept`, + 1 AS `amount`, + 1 AS `quantity`, + 1 AS `price`, + 1 AS `discount`, + 1 AS `cost`, + 1 AS `reservado`, + 1 AS `od`, + 1 AS `priceFixed`, + 1 AS `lastUpdate`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `noticeCategory` +-- + +DROP TABLE IF EXISTS `noticeCategory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `noticeCategory` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `keyName` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `subject` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8_unicode_ci, + `isEnabled` tinyint(1) NOT NULL DEFAULT '1', + `requiredRole` int(11) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `keyName_UNIQUE` (`keyName`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `noticeSubscription` +-- + +DROP TABLE IF EXISTS `noticeSubscription`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `noticeSubscription` ( + `noticeCategoryFk` int(11) NOT NULL DEFAULT '0', + `userFk` int(10) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`noticeCategoryFk`,`userFk`), + KEY `noticeSubscription_ibfk_2` (`userFk`), + CONSTRAINT `noticeSubscription_ibfk_1` FOREIGN KEY (`noticeCategoryFk`) REFERENCES `noticeCategory` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `noticeSubscription_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `observationType` +-- + +DROP TABLE IF EXISTS `observationType`; +/*!50001 DROP VIEW IF EXISTS `observationType`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `observationType` AS SELECT + 1 AS `id`, + 1 AS `description`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `origin` +-- + +DROP TABLE IF EXISTS `origin`; +/*!50001 DROP VIEW IF EXISTS `origin`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `origin` AS SELECT + 1 AS `id`, + 1 AS `code`, + 1 AS `name`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `outgoingInvoice` +-- + +DROP TABLE IF EXISTS `outgoingInvoice`; +/*!50001 DROP VIEW IF EXISTS `outgoingInvoice`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `outgoingInvoice` AS SELECT + 1 AS `id`, + 1 AS `serie`, + 1 AS `dateInvoice`, + 1 AS `total`, + 1 AS `dueDate`, + 1 AS `bank`, + 1 AS `client`, + 1 AS `remittance`, + 1 AS `remit`, + 1 AS `worker`, + 1 AS `creationDate`, + 1 AS `company`, + 1 AS `liquidacion?`, + 1 AS `isPdf`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `outgoingInvoiceVat` +-- + +DROP TABLE IF EXISTS `outgoingInvoiceVat`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `outgoingInvoiceVat` ( + `outgoingInvoice` mediumint(8) NOT NULL, + `taxBase` decimal(12,2) DEFAULT NULL, + `equalizationTax` decimal(12,2) DEFAULT NULL, + `Vat` decimal(12,2) DEFAULT NULL, + PRIMARY KEY (`outgoingInvoice`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `package` +-- + +DROP TABLE IF EXISTS `package`; +/*!50001 DROP VIEW IF EXISTS `package`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `package` AS SELECT + 1 AS `id`, + 1 AS `volume`, + 1 AS `width`, + 1 AS `height`, + 1 AS `depth`, + 1 AS `isPackageReturnable`, + 1 AS `created`, + 1 AS `itemFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `payMethod` +-- + +DROP TABLE IF EXISTS `payMethod`; +/*!50001 DROP VIEW IF EXISTS `payMethod`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `payMethod` AS SELECT + 1 AS `id`, + 1 AS `name`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `pgc` +-- + +DROP TABLE IF EXISTS `pgc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `pgc` ( + `code` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `rate` decimal(10,2) NOT NULL, + `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `cplusTaxBreakFk` int(10) unsigned DEFAULT '1', + `mod340` tinyint(1) NOT NULL DEFAULT '0', + `mod347` tinyint(1) NOT NULL DEFAULT '0', + `cplusTrascendency477Fk` int(10) unsigned DEFAULT '1', + PRIMARY KEY (`code`), + KEY `pgc_fk1_idx` (`cplusTaxBreakFk`), + KEY `pgc_fk2_idx` (`cplusTrascendency477Fk`), + CONSTRAINT `pgc_fk1` FOREIGN KEY (`cplusTaxBreakFk`) REFERENCES `cplusTaxBreak` (`id`) ON UPDATE CASCADE, + CONSTRAINT `pgc_fk2` FOREIGN KEY (`cplusTrascendency477Fk`) REFERENCES `cplusTrascendency477` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Plan General Contable'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `pgcEqu` +-- + +DROP TABLE IF EXISTS `pgcEqu`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `pgcEqu` ( + `vatFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Cuenta de IVA', + `equFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Cuenta de recargo de equivalencia', + PRIMARY KEY (`vatFk`,`equFk`), + KEY `pgcEqu_fk2_idx` (`equFk`), + CONSTRAINT `pgcEqu_fk1` FOREIGN KEY (`vatFk`) REFERENCES `pgc` (`code`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `pgcEqu_fk2` FOREIGN KEY (`equFk`) REFERENCES `pgc` (`code`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Recoge las cuentas contables con recargo de equivalencia e identifica a la que corresponde al iva y la que corresponde al recargo'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `plantpassport` +-- + +DROP TABLE IF EXISTS `plantpassport`; +/*!50001 DROP VIEW IF EXISTS `plantpassport`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `plantpassport` AS SELECT + 1 AS `producerFk`, + 1 AS `plantpassportAuthorityFk`, + 1 AS `number`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `plantpassportAuthority` +-- + +DROP TABLE IF EXISTS `plantpassportAuthority`; +/*!50001 DROP VIEW IF EXISTS `plantpassportAuthority`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `plantpassportAuthority` AS SELECT + 1 AS `id`, + 1 AS `denomination`, + 1 AS `countryFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `priceFixed` +-- + +DROP TABLE IF EXISTS `priceFixed`; +/*!50001 DROP VIEW IF EXISTS `priceFixed`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `priceFixed` AS SELECT + 1 AS `itemFk`, + 1 AS `rate0`, + 1 AS `rate1`, + 1 AS `rate2`, + 1 AS `rate3`, + 1 AS `started`, + 1 AS `ended`, + 1 AS `bonus`, + 1 AS `warehouseFk`, + 1 AS `created`, + 1 AS `id`, + 1 AS `grouping`, + 1 AS `packing`, + 1 AS `box`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `printServerQueue` +-- + +DROP TABLE IF EXISTS `printServerQueue`; +/*!50001 DROP VIEW IF EXISTS `printServerQueue`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `printServerQueue` AS SELECT + 1 AS `id`, + 1 AS `printerFk`, + 1 AS `priorityFk`, + 1 AS `reportFk`, + 1 AS `statusFk`, + 1 AS `started`, + 1 AS `finished`, + 1 AS `param1`, + 1 AS `workerFk`, + 1 AS `param2`, + 1 AS `param3`, + 1 AS `error`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `printingQueue` +-- + +DROP TABLE IF EXISTS `printingQueue`; +/*!50001 DROP VIEW IF EXISTS `printingQueue`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `printingQueue` AS SELECT + 1 AS `id`, + 1 AS `printer`, + 1 AS `priority`, + 1 AS `report`, + 1 AS `state`, + 1 AS `startingTime`, + 1 AS `endingTime`, + 1 AS `text`, + 1 AS `worker`, + 1 AS `text2`, + 1 AS `text3`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `producer` +-- + +DROP TABLE IF EXISTS `producer`; +/*!50001 DROP VIEW IF EXISTS `producer`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `producer` AS SELECT + 1 AS `id`, + 1 AS `name`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `province` +-- + +DROP TABLE IF EXISTS `province`; +/*!50001 DROP VIEW IF EXISTS `province`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `province` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `countryFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `referenceRate` +-- + +DROP TABLE IF EXISTS `referenceRate`; +/*!50001 DROP VIEW IF EXISTS `referenceRate`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `referenceRate` AS SELECT + 1 AS `currencyFk`, + 1 AS `dated`, + 1 AS `value`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `role` +-- + +DROP TABLE IF EXISTS `role`; +/*!50001 DROP VIEW IF EXISTS `role`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `role` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `description`, + 1 AS `hasLogin`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `route` +-- + +DROP TABLE IF EXISTS `route`; +/*!50001 DROP VIEW IF EXISTS `route`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `route` AS SELECT + 1 AS `id`, + 1 AS `workerFk`, + 1 AS `created`, + 1 AS `vehicleFk`, + 1 AS `agencyFk`, + 1 AS `agencyModeFk`, + 1 AS `time`, + 1 AS `isOk`, + 1 AS `kmStart`, + 1 AS `kmEnd`, + 1 AS `started`, + 1 AS `finished`, + 1 AS `gestdocFk`, + 1 AS `cost`, + 1 AS `m3`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `sale` +-- + +DROP TABLE IF EXISTS `sale`; +/*!50001 DROP VIEW IF EXISTS `sale`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `sale` AS SELECT + 1 AS `id`, + 1 AS `itemFk`, + 1 AS `ticketFk`, + 1 AS `concept`, + 1 AS `quantity`, + 1 AS `price`, + 1 AS `discount`, + 1 AS `reserved`, + 1 AS `isPicked`, + 1 AS `created`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `saleComponent` +-- + +DROP TABLE IF EXISTS `saleComponent`; +/*!50001 DROP VIEW IF EXISTS `saleComponent`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `saleComponent` AS SELECT + 1 AS `saleFk`, + 1 AS `componentFk`, + 1 AS `value`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `solunionCAP` +-- + +DROP TABLE IF EXISTS `solunionCAP`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `solunionCAP` ( + `creditInsurance` int(11) NOT NULL, + `dateStart` date NOT NULL, + `dateEnd` date NOT NULL, + `dateLeaving` date DEFAULT NULL, + PRIMARY KEY (`creditInsurance`,`dateStart`), + KEY `solunionCAPdateLeavingIdx` (`dateLeaving`), + CONSTRAINT `solunionCAP` FOREIGN KEY (`creditInsurance`) REFERENCES `creditInsurance` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`solunionCAP_AFTER_INSERT` AFTER INSERT ON `solunionCAP` FOR EACH ROW +BEGIN + UPDATE vn2008.Clientes c + JOIN creditClassification cc ON c.Id_Cliente = cc.client + JOIN creditInsurance ci ON ci.creditClassification = cc.id + SET creditInsurance = ci.credit * 2 WHERE ci.id = NEW.creditInsurance; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`solunionCAP_AFTER_UPDATE` AFTER UPDATE ON `solunionCAP` FOR EACH ROW +BEGIN + IF NEW.dateLeaving IS NOT NULL THEN + UPDATE vn2008.Clientes c + JOIN creditClassification cc ON c.Id_Cliente = cc.client + JOIN creditInsurance ci ON ci.creditClassification = cc.id + SET creditInsurance = ci.credit WHERE ci.id = OLD.creditInsurance; + ELSE + UPDATE vn2008.Clientes c + JOIN creditClassification cc ON c.Id_Cliente = cc.client + JOIN creditInsurance ci ON ci.creditClassification = cc.id + SET creditInsurance = ci.credit * 2 WHERE ci.id = OLD.creditInsurance; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`solunionCAP_BEFORE_DELETE` BEFORE DELETE ON `solunionCAP` FOR EACH ROW +BEGIN + UPDATE vn2008.Clientes c + JOIN creditClassification cc ON c.Id_Cliente = cc.client + JOIN creditInsurance ci ON ci.creditClassification = cc.id + SET creditInsurance = ci.credit WHERE ci.id = OLD.creditInsurance; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Temporary view structure for view `state` +-- + +DROP TABLE IF EXISTS `state`; +/*!50001 DROP VIEW IF EXISTS `state`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `state` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `order`, + 1 AS `alertLevel`, + 1 AS `code`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `stockBuyed` +-- + +DROP TABLE IF EXISTS `stockBuyed`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `stockBuyed` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `user` int(10) unsigned DEFAULT NULL, + `buyed` decimal(10,2) DEFAULT NULL, + `date` date DEFAULT NULL, + `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `reserved` decimal(10,2) DEFAULT NULL, + `requested` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `date_UNIQUE` (`date`,`user`), + KEY `stockBuyed_user_idx` (`user`), + CONSTRAINT `stockBuyedUserFk` FOREIGN KEY (`user`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `supplier` +-- + +DROP TABLE IF EXISTS `supplier`; +/*!50001 DROP VIEW IF EXISTS `supplier`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `supplier` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `account`, + 1 AS `countryFk`, + 1 AS `nif`, + 1 AS `isFarmer`, + 1 AS `retAccount`, + 1 AS `commission`, + 1 AS `created`, + 1 AS `postcodeFk`, + 1 AS `isActive`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `tag` +-- + +DROP TABLE IF EXISTS `tag`; +/*!50001 DROP VIEW IF EXISTS `tag`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `tag` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `free`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `taxArea` +-- + +DROP TABLE IF EXISTS `taxArea`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `taxArea` ( + `code` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `taxClass` +-- + +DROP TABLE IF EXISTS `taxClass`; +/*!50001 DROP VIEW IF EXISTS `taxClass`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `taxClass` AS SELECT + 1 AS `id`, + 1 AS `description`, + 1 AS `code`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `taxClassCode` +-- + +DROP TABLE IF EXISTS `taxClassCode`; +/*!50001 DROP VIEW IF EXISTS `taxClassCode`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `taxClassCode` AS SELECT + 1 AS `taxClassFk`, + 1 AS `effectived`, + 1 AS `taxCodeFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `taxCode` +-- + +DROP TABLE IF EXISTS `taxCode`; +/*!50001 DROP VIEW IF EXISTS `taxCode`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `taxCode` AS SELECT + 1 AS `id`, + 1 AS `dated`, + 1 AS `code`, + 1 AS `taxTypeFk`, + 1 AS `rate`, + 1 AS `equalizationTax`, + 1 AS `type`, + 1 AS `linkFk`, + 1 AS `isActive`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `taxType` +-- + +DROP TABLE IF EXISTS `taxType`; +/*!50001 DROP VIEW IF EXISTS `taxType`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `taxType` AS SELECT + 1 AS `id`, + 1 AS `nickname`, + 1 AS `serial`, + 1 AS `TIPOOPE`, + 1 AS `description`, + 1 AS `countryFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ticket` +-- + +DROP TABLE IF EXISTS `ticket`; +/*!50001 DROP VIEW IF EXISTS `ticket`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ticket` AS SELECT + 1 AS `id`, + 1 AS `clientFk`, + 1 AS `warehouseFk`, + 1 AS `shipped`, + 1 AS `landed`, + 1 AS `nickname`, + 1 AS `refFk`, + 1 AS `addressFk`, + 1 AS `isSigned`, + 1 AS `location`, + 1 AS `blocked`, + 1 AS `solution`, + 1 AS `path`, + 1 AS `routeFk`, + 1 AS `company`, + 1 AS `companyFk`, + 1 AS `agencyModeFk`, + 1 AS `loadingOrder`, + 1 AS `created`, + 1 AS `shipment`, + 1 AS `landing`, + 1 AS `customer`, + 1 AS `warehouse`, + 1 AS `client`, + 1 AS `address`, + 1 AS `agencyMode`, + 1 AS `signed`, + 1 AS `creationDate`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ticketObservation` +-- + +DROP TABLE IF EXISTS `ticketObservation`; +/*!50001 DROP VIEW IF EXISTS `ticketObservation`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ticketObservation` AS SELECT + 1 AS `id`, + 1 AS `ticketFk`, + 1 AS `observationTypeFk`, + 1 AS `description`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `ticketPackage` +-- + +DROP TABLE IF EXISTS `ticketPackage`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ticketPackage` ( + `ticket` int(11) NOT NULL, + `counter` int(10) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`ticket`), + CONSTRAINT `ticketPackage_ticketFk` FOREIGN KEY (`ticket`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `ticketPackaging` +-- + +DROP TABLE IF EXISTS `ticketPackaging`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ticketPackaging` ( + `id` int(11) NOT NULL, + `ticketFk` int(11) NOT NULL, + `packagingFk` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `quantity` int(10) DEFAULT '0', + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `pvp` double DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `ticketPackaging_fk1_idx` (`ticketFk`), + KEY `ticketPackaging_fk2_idx` (`packagingFk`), + CONSTRAINT `ticketPackaging_fk1` FOREIGN KEY (`ticketFk`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON UPDATE CASCADE, + CONSTRAINT `ticketPackaging_fk2` FOREIGN KEY (`packagingFk`) REFERENCES `vn2008`.`Cubos` (`Id_Cubo`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `ticketState` +-- + +DROP TABLE IF EXISTS `ticketState`; +/*!50001 DROP VIEW IF EXISTS `ticketState`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ticketState` AS SELECT + 1 AS `ticketFk`, + 1 AS `ticket`, + 1 AS `state`, + 1 AS `productionOrder`, + 1 AS `alertLevel`, + 1 AS `code`, + 1 AS `worker`, + 1 AS `workerFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ticketStateToday` +-- + +DROP TABLE IF EXISTS `ticketStateToday`; +/*!50001 DROP VIEW IF EXISTS `ticketStateToday`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ticketStateToday` AS SELECT + 1 AS `ticket`, + 1 AS `state`, + 1 AS `productionOrder`, + 1 AS `alertLevel`, + 1 AS `worker`, + 1 AS `code`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ticketTracking` +-- + +DROP TABLE IF EXISTS `ticketTracking`; +/*!50001 DROP VIEW IF EXISTS `ticketTracking`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ticketTracking` AS SELECT + 1 AS `id`, + 1 AS `stateFk`, + 1 AS `created`, + 1 AS `ticketFk`, + 1 AS `workerFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `ticketTrolley` +-- + +DROP TABLE IF EXISTS `ticketTrolley`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ticketTrolley` ( + `ticket` int(11) NOT NULL, + `labelCount` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`ticket`), + CONSTRAINT `fk_ticketTrolley_vs_ticket` FOREIGN KEY (`ticket`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `time` +-- + +DROP TABLE IF EXISTS `time`; +/*!50001 DROP VIEW IF EXISTS `time`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `time` AS SELECT + 1 AS `dated`, + 1 AS `period`, + 1 AS `month`, + 1 AS `year`, + 1 AS `day`, + 1 AS `week`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `travel` +-- + +DROP TABLE IF EXISTS `travel`; +/*!50001 DROP VIEW IF EXISTS `travel`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `travel` AS SELECT + 1 AS `id`, + 1 AS `shipped`, + 1 AS `shipmentHour`, + 1 AS `landed`, + 1 AS `landingHour`, + 1 AS `warehouseInFk`, + 1 AS `warehouseOutFk`, + 1 AS `agencyFk`, + 1 AS `ref`, + 1 AS `isDelivered`, + 1 AS `isReceived`, + 1 AS `m3`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `travelObservation` +-- + +DROP TABLE IF EXISTS `travelObservation`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `travelObservation` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `originFk` int(11) NOT NULL, + `userFk` int(11) NOT NULL, + `description` text COLLATE utf8_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Observaciones de travel'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `unary` +-- + +DROP TABLE IF EXISTS `unary`; +/*!50001 DROP VIEW IF EXISTS `unary`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `unary` AS SELECT + 1 AS `id`, + 1 AS `parent`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `unaryScan` +-- + +DROP TABLE IF EXISTS `unaryScan`; +/*!50001 DROP VIEW IF EXISTS `unaryScan`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `unaryScan` AS SELECT + 1 AS `unaryFk`, + 1 AS `name`, + 1 AS `created`, + 1 AS `type`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `unaryScanLine` +-- + +DROP TABLE IF EXISTS `unaryScanLine`; +/*!50001 DROP VIEW IF EXISTS `unaryScanLine`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `unaryScanLine` AS SELECT + 1 AS `id`, + 1 AS `code`, + 1 AS `created`, + 1 AS `unaryScanFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `unaryScanLineBuy` +-- + +DROP TABLE IF EXISTS `unaryScanLineBuy`; +/*!50001 DROP VIEW IF EXISTS `unaryScanLineBuy`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `unaryScanLineBuy` AS SELECT + 1 AS `unaryScanLineFk`, + 1 AS `itemFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `unaryScanLineExpedition` +-- + +DROP TABLE IF EXISTS `unaryScanLineExpedition`; +/*!50001 DROP VIEW IF EXISTS `unaryScanLineExpedition`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `unaryScanLineExpedition` AS SELECT + 1 AS `unaryScanLineFk`, + 1 AS `expeditionFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `user` +-- + +DROP TABLE IF EXISTS `user`; +/*!50001 DROP VIEW IF EXISTS `user`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `user` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `password`, + 1 AS `role`, + 1 AS `active`, + 1 AS `recoverPass`, + 1 AS `lastPassChange`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `vehicle` +-- + +DROP TABLE IF EXISTS `vehicle`; +/*!50001 DROP VIEW IF EXISTS `vehicle`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `vehicle` AS SELECT + 1 AS `id`, + 1 AS `numberPlate`, + 1 AS `tradeMark`, + 1 AS `model`, + 1 AS `companyFk`, + 1 AS `warehouseFk`, + 1 AS `description`, + 1 AS `m3`, + 1 AS `isActive`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `warehouse` +-- + +DROP TABLE IF EXISTS `warehouse`; +/*!50001 DROP VIEW IF EXISTS `warehouse`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `warehouse` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `isInventory`, + 1 AS `hasComission`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `warehouseAlias` +-- + +DROP TABLE IF EXISTS `warehouseAlias`; +/*!50001 DROP VIEW IF EXISTS `warehouseAlias`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `warehouseAlias` AS SELECT + 1 AS `id`, + 1 AS `name`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `worker` +-- + +DROP TABLE IF EXISTS `worker`; +/*!50001 DROP VIEW IF EXISTS `worker`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `worker` AS SELECT + 1 AS `id`, + 1 AS `workerCode`, + 1 AS `firstName`, + 1 AS `name`, + 1 AS `userFk`, + 1 AS `bossFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `workerDocument` +-- + +DROP TABLE IF EXISTS `workerDocument`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `workerDocument` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `worker` int(10) unsigned DEFAULT NULL, + `document` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `workerDocument_ibfk_1` (`worker`), + KEY `workerDocument_ibfk_2` (`document`), + CONSTRAINT `workerDocument_ibfk_1` FOREIGN KEY (`worker`) REFERENCES `vn2008`.`Trabajadores` (`user_id`) ON UPDATE CASCADE, + CONSTRAINT `workerDocument_ibfk_2` FOREIGN KEY (`document`) REFERENCES `vn2008`.`gestdoc` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `workerTeam` +-- + +DROP TABLE IF EXISTS `workerTeam`; +/*!50001 DROP VIEW IF EXISTS `workerTeam`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `workerTeam` AS SELECT + 1 AS `team`, + 1 AS `user`, + 1 AS `id`, + 1 AS `Id_Trabajador`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `workerTeam_kk` +-- + +DROP TABLE IF EXISTS `workerTeam_kk`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `workerTeam_kk` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `team` int(11) NOT NULL, + `user` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `user_team_idx` (`user`), + CONSTRAINT `user_team` FOREIGN KEY (`user`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `workingHours` +-- + +DROP TABLE IF EXISTS `workingHours`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `workingHours` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `timeIn` datetime NOT NULL, + `timeOut` datetime DEFAULT NULL, + `userId` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `user_working_hour_idx` (`userId`), + CONSTRAINT `user_working_hour` FOREIGN KEY (`userId`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena horas de Entrada y de Salida del personal'; +/*!40101 SET character_set_client = @saved_cs_client */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`workingHoursBeforeInsert` BEFORE INSERT ON `workingHours` FOR EACH ROW +BEGIN + IF (SELECT COUNT(*) FROM workingHours WHERE userId = NEW.userId AND DATE(timeIn) = CURDATE()) > 0 THEN + CALL util.throw ('ALREADY_LOGGED'); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Table structure for table `zone` +-- + +DROP TABLE IF EXISTS `zone`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `zone` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, + `hour` int(11) NOT NULL, + `warehouseFk` int(11) NOT NULL, + `agencyFk` int(11) NOT NULL, + `travelingDays` int(11) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`,`name`), + UNIQUE KEY `name_UNIQUE` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `zoneCalendar` +-- + +DROP TABLE IF EXISTS `zoneCalendar`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `zoneCalendar` ( + `zoneFk` int(11) NOT NULL, + `delivered` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`zoneFk`,`delivered`), + CONSTRAINT `zoneFk` FOREIGN KEY (`zoneFk`) REFERENCES `zone` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `zoneGeo` +-- + +DROP TABLE IF EXISTS `zoneGeo`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `zoneGeo` ( + `zoneFk` varchar(45) CHARACTER SET utf8 NOT NULL, + `geoFk` int(11) NOT NULL, + `isIncluded` tinyint(1) DEFAULT NULL, + PRIMARY KEY (`zoneFk`,`geoFk`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping routines for database 'vn' +-- +/*!50003 DROP FUNCTION IF EXISTS `agencyIsAvailable` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `agencyIsAvailable`(vAgency INT, vDate DATE, vAddress INT) RETURNS tinyint(1) +BEGIN +/** + * Comprueba si la agencia esta disponible para la fecha y + * dirección dadas, es decir, si es posible enviar mercancía + * desde al menos uno de los almacenes por la agencia, fecha + * y direcciones especificadas. + * + * @param vAgency Id de agencia + * @param vDate Fecha de recepción de mercancía + * @param vAddress Id consignatario, %NULL para recogida + * @return %TRUE si la agencia esta disponible, %FALSE en caso contrario + */ + DECLARE vMaxDays INT DEFAULT DATEDIFF(vDate, CURDATE()); + DECLARE vWday TINYINT DEFAULT WEEKDAY(vDate); + DECLARE vHour TINYINT DEFAULT HOUR(NOW()); + DECLARE vProvince INT; + DECLARE isAvailable BOOL; + + SELECT province INTO vProvince + FROM address + WHERE id = vAddress; + + SELECT COUNT(*) > 0 INTO isAvailable + FROM agencyHour h + JOIN agencyMode a + ON a.agency = h.agency + WHERE (h.province = vProvince + OR h.province IS NULL) + AND (h.weekDay = vWday + OR h.weekDay IS NULL) + AND (h.substractDay < vMaxDays + OR (h.substractDay = vMaxDays AND h.maxHour > vHour)) + AND a.id = vAgency; + + RETURN isAvailable; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `clientGetDebt` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `clientGetDebt`(vClient INT, vDate DATE) RETURNS decimal(10,2) +BEGIN +/** + * Devuelve el saldo del cliente. + * + * @param vClient Id del cliente + * @param vDate Fecha hasta la que tener en cuenta + * @return Saldo del cliente + */ + DECLARE vDateEnd DATETIME; + DECLARE vDateIni DATETIME; + DECLARE vDebt DECIMAL(10,2); + + SET vDate = IFNULL(vDate, CURDATE()); + + SET vDateIni = TIMESTAMPADD(MONTH,-2,CURDATE()); + SET vDateEnd = TIMESTAMP(vDate, '23:59:59'); + + DROP TEMPORARY TABLE IF EXISTS vn2008.ticket_tmp; + CREATE TEMPORARY TABLE vn2008.ticket_tmp + (INDEX (ticket_id)) + ENGINE = MEMORY + SELECT id ticket_id + FROM ticket + WHERE clientfK = vClient + AND refFk IS NULL + AND shipped BETWEEN vDateIni AND vDateEnd; + + CALL vn2008.ticket_total (); + + SELECT IFNULL(SUM(t.amount), 0) INTO vDebt + FROM ( + SELECT SUM(total) amount + FROM vn2008.ticket_total + UNION ALL + SELECT SUM(Entregado) + FROM vn2008.Recibos + WHERE Id_Cliente = vClient + AND Fechacobro > vDateEnd + UNION ALL + SELECT SUM(amount) + FROM bi.customer_risk r + WHERE customer_id = vClient + UNION ALL + SELECT CAST(-SUM(amount) / 100 AS DECIMAL(10,2)) + FROM hedera.tpv_transaction + WHERE customer_id = vClient + AND receipt_id IS NULL + AND `status` = 'ok' + ) t; + + DROP TEMPORARY TABLE + vn2008.ticket_tmp, + vn2008.ticket_total; + + RETURN vDebt; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `clientGetDebtKK` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `clientGetDebtKK`(vClient INT, vDate DATE) RETURNS decimal(10,2) +BEGIN +/** + * Devuelve el saldo del cliente. + * + * @param vClient Id del cliente + * @param vDate Fecha hasta la que tener en cuenta + * @return Saldo del cliente + */ + DECLARE vDateEnd DATETIME; + DECLARE vDateIni DATETIME; + DECLARE vDebt DECIMAL(10,2); + + SET vDate = IFNULL(vDate, CURDATE()); + + SET vDateIni = TIMESTAMPADD(MONTH,-2,CURDATE()); + SET vDateEnd = TIMESTAMP(vDate, '23:59:59'); + + DROP TEMPORARY TABLE IF EXISTS vn2008.ticket_tmp; + CREATE TEMPORARY TABLE vn2008.ticket_tmp + (INDEX (ticket_id)) + ENGINE = MEMORY + SELECT id ticket_id + FROM ticket + WHERE `client` = vClient + AND refFk IS NULL + AND shipment BETWEEN vDateIni AND vDateEnd; + + CALL vn2008.ticket_total (); + + SELECT IFNULL(SUM(t.amount), 0) INTO vDebt + FROM ( + SELECT SUM(total) amount + FROM vn2008.ticket_total + UNION ALL + SELECT SUM(Entregado) + FROM vn2008.Recibos + WHERE Id_Cliente = vClient + AND Fechacobro > vDateEnd + UNION ALL + SELECT SUM(amount) + FROM bi.customer_risk r + WHERE customer_id = vClient + UNION ALL + SELECT CAST(-SUM(amount) / 100 AS DECIMAL(10,2)) + FROM hedera.tpv_transaction + WHERE customer_id = vClient + AND receipt_id IS NULL + AND `status` = 'ok' + ) t; + + DROP TEMPORARY TABLE + vn2008.ticket_tmp, + vn2008.ticket_total; + + RETURN vDebt; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `clientGetMana` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `clientGetMana`(vClient INT) RETURNS decimal(10,2) +BEGIN +/** + * Devuelve el maná del cliente. + * + * @param vClient Id del cliente + * @return Maná del cliente + */ + +DECLARE vMana DECIMAL(10,2); +DECLARE vFromDated DATE; + +SELECT max(dated) INTO vFromDated +FROM vn.clientManaCache +WHERE clientFk = vClient; + +SELECT sum(mana) INTO vMana + FROM + ( + SELECT mana + FROM vn.clientManaCache + WHERE clientFk = vClient + AND dated = vFromDated + + UNION ALL + + SELECT s.quantity * Valor + FROM vn.ticket t + JOIN vn.address a ON a.id = t.addressFk + JOIN vn.sale s on s.ticketFk = t.id + JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = s.id + WHERE Id_Componente IN (37, 39) + AND t.shipped > vFromDated + AND t.clientFk = vClient + + UNION ALL + + SELECT - Entregado + FROM vn2008.Recibos r + JOIN vn2008.Clientes c using(Id_Cliente) + WHERE r.Id_Banco = 66 + AND r.Fechacobro > vFromDated + AND c.Id_Cliente = vClient + + UNION ALL + + SELECT g.Importe + FROM vn2008.Greuges g + JOIN vn2008.Clientes c using(Id_Cliente) + WHERE g.Greuges_type_id = 3 -- Maná + AND g.Fecha > vFromDated + AND c.Id_Cliente = vClient + + ) sub; + +RETURN IFNULL(vMana,0); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `clientTaxArea` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `clientTaxArea`(vClientFk INT, vCompanyFk INT) RETURNS varchar(25) CHARSET utf8 +BEGIN +/** + * Devuelve el area de un cliente, + * intracomunitario, extracomunitario y nacional. + * + * @param vClient Id del cliente + * @param vCompanyFk Compañia desde la que se factura + * @return Código de area + */ + DECLARE vTaxArea VARCHAR(25); + DECLARE vCee INT; + + SELECT ct.Cee INTO vCee + FROM `client` c + JOIN country ct ON ct.id = c.countryFk + JOIN supplier s ON s.id = vCompanyFk + WHERE + c.id = vClientFk + AND c.vies + AND c.countryFk != s.countryFk; + + IF vCee < 2 THEN + SET vTaxArea = 'CEE'; + ELSEIF vCee = 2 THEN + SET vTaxArea = 'WORLD'; + ELSE + SET vTaxArea = 'NATIONAL'; + END IF; + + RETURN vTaxArea; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `getAlert3State` */; +ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getAlert3State`(vTicket INT) RETURNS varchar(45) CHARSET latin1 +BEGIN + DECLARE vDeliveryType INTEGER DEFAULT 0; + DECLARE vWorker INT; + DECLARE isWaitingForPickUp BOOLEAN DEFAULT FALSE; + DECLARE vCode VARCHAR(45); + + SELECT IFNULL(aw.Vista,a.Vista) INTO vDeliveryType + FROM vn2008.Tickets t + JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia + LEFT JOIN vn2008.agency_warehouse aw ON a.agency_id = aw.agency_id AND t.warehouse_id = aw.warehouse_id + WHERE Id_Ticket = vTicket; + + SELECT getUser() INTO vWorker; + + CASE vDeliveryType + WHEN 1 THEN -- AGENCIAS + SELECT COUNT(*) INTO isWaitingForPickUp + FROM vn2008.Tickets t + JOIN vn2008.warehouse_pickup w ON w.agency_id = t.Id_Agencia + WHERE t.Id_Ticket = vTicket AND w.warehouse_id <> t.warehouse_id; + + IF isWaitingForPickUp THEN + SET vCode = 'WAITING_FOR_PICKUP'; + ELSE + SET vCode = 'DELIVERED'; + END IF; + + WHEN 2 THEN -- REPARTO + SET vCode = 'ON_DELIVERY'; + + ELSE -- MERCADO, OTROS + SET vCode = 'DELIVERED'; + END CASE; + RETURN vCode; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `getDueDate` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getDueDate`(vDated DATE, vDayToPay INT) RETURNS date +BEGIN + +DECLARE vDued DATE; + +SET vDued = IF (vDayToPay > 30 or vDayToPay < 1 + ,TIMESTAMPADD(DAY, vDayToPay, vDated) + ,TIMESTAMPADD(DAY, vDayToPay, LAST_DAY(vDated))); + +RETURN vDued; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `getInventoryDate` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getInventoryDate`() RETURNS date + DETERMINISTIC +BEGIN + RETURN vn2008.date_inv(); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `getShipmentHour` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getShipmentHour`(vTicket INT) RETURNS int(11) +BEGIN + DECLARE vShipmentHour INT; + + SELECT HOUR(shipment) INTO vShipmentHour + FROM ticket + WHERE id = vTicket; + + IF vShipmentHour = 0 + THEN + DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; + CREATE TEMPORARY TABLE tmp.production_buffer + ENGINE = MEMORY + SELECT am.agency as agency_id + , t.warehouse as warehouse_id + , a.province as province_id + , 0 as Hora + , 0 as Departure + FROM ticket t + JOIN agencyMode am on am.id = t.agencyMode + JOIN address a on a.id = t.address + WHERE t.id = vTicket; + + CALL vn2008.production_buffer_set_priority; + + SELECT Hora INTO vShipmentHour + FROM tmp.production_buffer; + END IF; + + RETURN vShipmentHour; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `getSpecialPrice` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getSpecialPrice`(vItemFk int(11),vClientFk int(11)) RETURNS decimal(10,2) +BEGIN + DECLARE price DECIMAL(10,2); + + SELECT rate3 INTO price + FROM vn.priceFixed + WHERE itemFk = vItemFk + AND CURDATE() BETWEEN started AND ended ORDER BY created DESC LIMIT 1; + + SELECT `value` INTO price + FROM vn.especialPrice + WHERE itemFk = vItemFk + AND clientFk = vClientFk ; +RETURN price; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `getTicketToPrepare` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getTicketToPrepare`(`vWorker` INT, `vWarehouse` INT) RETURNS int(11) +BEGIN +/** + * Devuelve el ticket que debe de preparar el trabajador + * + * @param vWorker Id del trabajador + * @param vWarehouse Id del almacén + * @return Id del ticket + **/ + DECLARE vToday DATETIME DEFAULT CURDATE(); + DECLARE vYesterday DATETIME; + DECLARE vTodayvMidniight DATETIME DEFAULT midnight(vToday); + DECLARE vTicket INT DEFAULT NULL; + + SET vYesterday = TIMESTAMPADD(DAY,-1,vToday); + + DROP TEMPORARY TABLE IF EXISTS tmp.workerComercial; + CREATE TEMPORARY TABLE tmp.workerComercial + ENGINE = MEMORY + SELECT worker FROM `grant` g + JOIN grantGroup gg ON g.group = gg.id + WHERE gg.description = 'Comerciales' + AND worker != 2; -- PAKO + + + DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; + CREATE TEMPORARY TABLE tmp.production_buffer + ENGINE = MEMORY + SELECT t.id as ticket + , am.agency as agency_id + , t.warehouse as warehouse_id + , a.province as province_id + , Hour(t.shipment) as Hora + , Hour(t.shipment) as Departure + , tls.code + , IFNULL(t.loadingOrder,0) loadingOrder + FROM ticket t + JOIN ticketState tls on t.id = tls.ticket + JOIN agencyMode am on am.id = t.agencyMode + JOIN address a on a.id = t.address + LEFT JOIN tmp.workerComercial wc ON wc.worker = vWorker + WHERE t.shipment BETWEEN vYesterday AND vTodayvMidniight + AND t.warehouse = vWarehouse + AND + ( + (tls.code = 'PRINTED' AND wc.worker IS NULL) + OR + (tls.code ='PICKER_DESIGNED' AND tls.worker = vWorker) + OR + (tls.code = 'PRINTED_BACK') + ); + + + CALL vn2008.production_buffer_set_priority; + + SELECT ticket INTO vTicket + FROM tmp.production_buffer + ORDER BY (code = 'PICKER_DESIGNED') DESC , Hora, loadingOrder + LIMIT 1; + + RETURN vTicket; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `getTicketTrolleyLabelCount` */; +ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getTicketTrolleyLabelCount`(vTicket INT) RETURNS int(11) +BEGIN + +DECLARE vLabelCount INT DEFAULT 0; + +SELECT labelCount INTO vLabelCount +FROM ticketTrolley +WHERE ticket = vTicket; + +SET vLabelCount = vLabelCount +1 ; + +REPLACE ticketTrolley(ticket,labelCount) +SELECT vTicket, vLabelCount; + +RETURN vlabelCount; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `getUser` */; +ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getUser`() RETURNS int(11) + DETERMINISTIC +BEGIN + RETURN getWorker(); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `getUserId` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getUserId`(userName varchar(30)) RETURNS int(11) +BEGIN + DECLARE vUser INT; + + SELECT id INTO vUser + FROM account.user + WHERE `name` = userName; + + RETURN vUser; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `getWorker` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getWorker`() RETURNS int(11) + DETERMINISTIC +BEGIN + DECLARE vUser INT; + + SELECT id INTO vUser + FROM worker + WHERE userFk = account.userGetId(); + + RETURN vUser; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `getWorkerkk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `getWorkerkk`() RETURNS int(11) + DETERMINISTIC +BEGIN + DECLARE vUser INT; + + SELECT id INTO vUser + FROM worker + WHERE user = account.userGetId(); + + RETURN vUser; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `hasAnyNegativeBase` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `hasAnyNegativeBase`() RETURNS tinyint(1) +BEGIN + +/* Calcula si existe alguna base imponible negativa +* Requiere la tabla temporal vn.ticketToInvoice(id) +* +* returns BOOLEAN +*/ + + DECLARE vCountry INT; + DECLARE hasAnyNegativeBase BOOLEAN; + + SELECT s.countryFk + INTO vCountry + FROM supplier s + JOIN ticket t ON t.companyFk = s.id + JOIN vn.ticketToInvoice tl ON tl.id = t.id + LIMIT 1; + + SELECT COUNT(*) INTO hasAnyNegativeBase + FROM ( + SELECT SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2)) taxableBase + FROM sale s + JOIN item i ON i.id = s.itemFk + JOIN itemTaxCountry itc + ON itc.itemFk = i.id AND itc.countryFk = vCountry + JOIN vn.ticketToInvoice tl ON tl.id = s.ticketFk + GROUP BY itc.taxClassFk + HAVING taxableBase < 0 + ) t1 ; + + RETURN hasAnyNegativeBase; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `hasSomeNegativeBase` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `hasSomeNegativeBase`(vTicket INT) RETURNS tinyint(1) +BEGIN + + DECLARE vCountry INT; + DECLARE hasSomeNegativeBase BOOLEAN; + + SELECT s.countryFk + INTO vCountry + FROM supplier s + JOIN ticket t ON t.companyFk = s.id + WHERE t.id = vTicket; + + SELECT COUNT(*) INTO hasSomeNegativeBase + FROM ( + SELECT SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2)) taxableBase + FROM sale s + JOIN item i ON i.id = s.itemFk + JOIN itemTaxCountry itc + ON itc.itemFk = i.id AND itc.countryFk = vCountry + WHERE s.ticketFk = vTicket + GROUP BY itc.taxClassFk + HAVING taxableBase < 0 + ) t1 ; + + RETURN hasSomeNegativeBase; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `invoiceOutAmount` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `invoiceOutAmount`(vInvoiceRef VARCHAR(15)) RETURNS decimal(10,2) +BEGIN + DECLARE totalAmount DECIMAL(10,2); + + SELECT SUM(vat) INTO totalAmount + FROM + ( + SELECT iot.vat + FROM invoiceOutTax iot + JOIN invoiceOut io ON io.id = iot.invoiceOutFk + WHERE io.ref = vInvoiceRef + UNION ALL + SELECT ioe.amount + FROM invoiceOutExpence ioe + JOIN invoiceOut io ON io.id = ioe.invoiceOutFk + WHERE io.ref = vInvoiceRef + ) t1; + +RETURN totalAmount; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `invoiceSerial` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `invoiceSerial`(vClientFk INT, vCompanyFk INT, vType CHAR(1)) RETURNS char(1) CHARSET utf8 +BEGIN +/** + * Obtiene la serie de de una factura + * dependiendo del area del cliente. + * + * @param vClientFk Id del cliente + * @param vCompanyFk Id de la empresa + * @param vType Tipo de factura ["R", "M", "G"] + * @return Serie de la factura + */ + DECLARE vArea VARCHAR(25); + DECLARE vSerie CHAR(1); + + SELECT clientTaxArea(vClientFk, vCompanyFk) INTO vArea; + + -- Factura rápida + IF vType = 'R' THEN + SELECT + CASE vArea + WHEN 'CEE' + THEN 'H' + WHEN 'WORLD' + THEN 'E' + WHEN 'NATIONAL' + THEN 'T' + END + INTO vSerie; + -- Factura multiple + ELSEIF vType = 'M' THEN + SELECT + CASE vArea + WHEN 'CEE' + THEN 'H' + WHEN 'WORLD' + THEN 'E' + WHEN 'NATIONAL' + THEN 'M' + END + INTO vSerie; + -- Factura global + ELSEIF vType = 'G' THEN + SELECT + CASE vArea + WHEN 'CEE' + THEN 'V' + WHEN 'WORLD' + THEN 'X' + WHEN 'NATIONAL' + THEN 'A' + END + INTO vSerie; + END IF; +RETURN vSerie; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `isWorkerBoss` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `isWorkerBoss`(vUserId INT(11)) RETURNS tinyint(1) + DETERMINISTIC +BEGIN + + DECLARE subjectId INT(11) DEFAULT vUserId; + DECLARE tmpSubjectId INT(11); + DECLARE tmpBossId INT(11); + + LOOP + SELECT + bossWorker.user_id AS tmpBossId, + subjectWorker.user_id AS tmpSubjectId + INTO tmpBossId, tmpSubjectId + FROM + vn2008.Trabajadores AS subjectWorker + JOIN + vn2008.Trabajadores AS bossWorker ON bossWorker.Id_Trabajador = subjectWorker.boss + WHERE + subjectWorker.user_id = subjectId; + + IF tmpBossId = tmpSubjectId THEN + RETURN FALSE; + ELSEIF tmpBossId = account.userGetId() THEN + RETURN TRUE; + ELSE + SET subjectId = tmpBossId; + END IF; + END LOOP; + +RETURN FALSE; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `messageSend` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `messageSend`(vRecipient VARCHAR(255), vMessage TEXT) RETURNS int(11) +BEGIN +/** + * Envia un mensaje a un usuario o a una lista de usuarios. + * + * @param vRecipient Nombre de usuario o de alias + * @param vMessage Texto del mensaje + * @return Número de destinatarios + **/ + DECLARE vCount INT; + DECLARE vUuid VARCHAR(255); + DECLARE vSendDate DATETIME DEFAULT NOW(); + DECLARE vUser VARCHAR(255) DEFAULT account.userGetName(); + + SET vRecipient = LOWER(vRecipient); + + DROP TEMPORARY TABLE IF EXISTS tRecipients; + CREATE TEMPORARY TABLE tRecipients + SELECT u.name finalRecipient + FROM account.mailAlias a + JOIN account.mailAliasAccount aa ON aa.mailAlias = a.id + JOIN account.user u ON u.id = aa.account + WHERE a.alias = vRecipient COLLATE utf8_unicode_ci + AND u.name != vUser + AND u.active + UNION + SELECT u.name FROM account.user u + WHERE u.name = vRecipient + AND u.active; + + SELECT COUNT(*) INTO vCount FROM tRecipients; + + IF vCount = 0 THEN + RETURN vCount; + END IF; + + SET vUuid = UUID(); + + INSERT INTO message + SET uuid = vUuid, + sender = vUser, + recipient = vRecipient, + message = vMessage, + sendDate = vSendDate; + + INSERT INTO messageInbox (uuid, sender, recipient, finalRecipient, message, sendDate) + SELECT vUuid, vUser, vRecipient, finalRecipient, vMessage, vSendDate + FROM tRecipients; + + DROP TEMPORARY TABLE tRecipients; + RETURN vCount; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `midnight` */; +ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `midnight`(vDate DATE) RETURNS datetime + DETERMINISTIC +BEGIN + RETURN TIMESTAMP(vDate,'23:59:59'); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `noticeHasActive` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `noticeHasActive`(vCategoryKey VARCHAR(50), vUser INT) RETURNS tinyint(1) +BEGIN +/** + * Comprueba si el usuario tiene activada o no la categoría + * + * @param vNoticeCategory Id de la categoría + * @param vUser Id del usuario + * @return %True si el usuario tiene activada la notificación, %False en caso contrario + */ + DECLARE vActive INT; + + SELECT COUNT(*) INTO vActive + FROM noticeSubscription s + JOIN noticeCategory c ON c.id = s.noticeCategoryFk + WHERE c.keyName = vCategoryKey AND userFk = vUser; + + RETURN vActive; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `phytoPassport` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `phytoPassport`(vRef VARCHAR(15)) RETURNS text CHARSET utf8 +BEGIN +DECLARE vPhyto TEXT CHARSET utf8 COLLATE utf8_unicode_ci; +SELECT + GROUP_CONCAT(i.id, + ':', + ppa.denomination, + ' ', + pp.number, + CHAR(13,10) + SEPARATOR '') fitosanitario + INTO vPhyto +FROM + sale s + JOIN + ticket t ON t.id = s.ticketFk + JOIN + item i ON i.id = s.itemFk + JOIN + plantpassport pp ON pp.producerFk = i.producerFk + JOIN + plantpassportAuthority ppa ON ppa.id = pp.plantpassportAuthorityFk + JOIN + itemBotanicalWithGenus ib ON ib.itemFk = i.id + JOIN + botanicExport be ON be.restriction = 'Se Requiere Certificado' + LEFT JOIN + ediGenus eg ON eg.id = be.ediGenusFk + LEFT JOIN + ediSpecie es ON es.id = be.ediSpecieFk +WHERE + t.refFk = vRef + AND ib.ediBotanic LIKE CONCAT(IFNULL(eg.latinGenusName, ''), + IF(latinSpeciesName > '', + CONCAT(' ', latinSpeciesName), + ''), + '%'); +RETURN vPhyto; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `ticketPositionInPath` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `ticketPositionInPath`(vTicketId INT) RETURNS varchar(10) CHARSET utf8 +BEGIN + + DECLARE vRestTicketsMaxOrder INT; + DECLARE vRestTicketsMinOrder INT; + DECLARE vRestTicketsPacking INT; + DECLARE vMyProductionOrder INT; + DECLARE vPosition VARCHAR(10) DEFAULT 'MID'; + DECLARE vMyPath INT; + DECLARE vMyWarehouse INT; + DECLARE PACKING_ORDER INT; + DECLARE vExpeditionsCount INT; + DECLARE vIsValenciaPath BOOLEAN DEFAULT FALSE; + +SELECT `order` + INTO PACKING_ORDER + FROM state + WHERE code = 'PACKING'; + +SELECT t.routeFk, t.warehouseFk, IFNULL(ts.productionOrder,0) + INTO vMyPath, vMyWarehouse, vMyProductionOrder + FROM ticket t + LEFT JOIN ticketState ts on ts.ticket = t.id + WHERE t.id = vTicketId; + +SELECT (ag.`name` = 'VN_VALENCIA') + INTO vIsValenciaPath + FROM vn2008.Rutas r + JOIN vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia + JOIN vn2008.agency ag on ag.agency_id = a.agency_id + WHERE r.Id_Ruta = vMyPath; + +IF vIsValenciaPath THEN -- Rutas Valencia + + SELECT COUNT(*) + INTO vExpeditionsCount + FROM expedition e + JOIN ticket t ON t.id = e.ticket + WHERE t.routeFk = vMyPath; + + SELECT MAX(ts.productionOrder), MIN(ts.productionOrder) + INTO vRestTicketsMaxOrder, vRestTicketsMinOrder + FROM ticket t + LEFT JOIN ticketState ts on t.id = ts.ticket + WHERE t.routeFk = vMyPath + AND t.warehouseFk = vMyWarehouse + AND t.id != vTicketid; + + SELECT COUNT(*) + INTO vRestTicketsPacking + FROM ticket t + LEFT JOIN ticketState ts on t.id = ts.ticket + WHERE ts.productionOrder = PACKING_ORDER + AND t.routeFk = vMyPath + AND t.warehouseFk = vMyWarehouse + AND t.id != vTicketid; + + IF vExpeditionsCount = 1 THEN + SET vPosition = 'FIRST'; + ELSEIF vRestTicketsMinOrder > PACKING_ORDER THEN + SET vPosition = 'LAST'; + ELSEIF vRestTicketsPacking THEN + SET vPosition = 'SHARED'; + ELSE + SET vPosition = 'MID'; + END IF; + +ELSE + SET vPosition = 'MID'; + +END IF; + +RETURN vPosition; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `ticketPositionInPathkk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `ticketPositionInPathkk`(vTicketId INT) RETURNS varchar(10) CHARSET utf8 +BEGIN + + +DECLARE vRestTicketsMaxOrder INT; +DECLARE vRestTicketsMinOrder INT; +DECLARE vRestTicketsPacking INT; +DECLARE vMyProductionOrder INT; +DECLARE vPosition VARCHAR(10) DEFAULT 'MID'; +DECLARE vMyPath INT; +DECLARE vMyWarehouse INT; +DECLARE PACKING_ORDER INT; +DECLARE vExpeditionsCount INT; +DECLARE vIsValenciaPath BOOLEAN DEFAULT FALSE; + +SELECT `order` + INTO PACKING_ORDER + FROM state + WHERE code = 'PACKING'; + +SELECT path, warehouse, IFNULL(productionOrder,0) + INTO vMyPath, vMyWarehouse, vMyProductionOrder + FROM ticket t + LEFT JOIN ticketState ts on ts.ticket = t.id + WHERE id = vTicketId; + +SELECT (ag.`name` = 'VN_VALENCIA') + INTO vIsValenciaPath + FROM vn2008.Rutas r + JOIN vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia + JOIN vn2008.agency ag on ag.agency_id = a.agency_id + WHERE r.Id_Ruta = vMyPath; + + +IF vIsValenciaPath THEN -- Rutas Valencia + + SELECT COUNT(*) + INTO vExpeditionsCount + FROM expedition e + JOIN ticket t ON t.id = e.ticket + WHERE t.path = vMyPath; + + SELECT MAX(productionOrder), MIN(productionOrder) + INTO vRestTicketsMaxOrder, vRestTicketsMinOrder + FROM ticket t + LEFT JOIN ticketState ts on t.id = ts.ticket + WHERE t.path = vMyPath + AND t.warehouse = vMyWarehouse + AND t.id != vTicketid; + + SELECT COUNT(*) + INTO vRestTicketsPacking + FROM ticket t + LEFT JOIN ticketState ts on t.id = ts.ticket + WHERE productionOrder = PACKING_ORDER + AND t.path = vMyPath + AND t.warehouse = vMyWarehouse + AND t.id != vTicketid; + + + + IF vExpeditionsCount = 1 THEN + + SET vPosition = 'FIRST'; + + ELSEIF vRestTicketsMinOrder > PACKING_ORDER THEN + + SET vPosition = 'LAST'; + + ELSEIF vRestTicketsPacking THEN + + SET vPosition = 'SHARED'; + + ELSE + + SET vPosition = 'MID'; + + END IF; + +ELSE + + SET vPosition = 'MID'; + +END IF; + +RETURN vPosition; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `workerIsBoss` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `workerIsBoss`(vUserId INT) RETURNS int(11) +BEGIN +/** + * Comprueba por jerarquía si el trabajador actual es jefe + * de un trabajador en concreto. + * + * @param vUserId Id del trabajador que se desea comprobar. + * @return Revuelve verdadero si es jefe del empleado por escala jerárquica. + */ + DECLARE vWorkerId INT; + DECLARE vBossId INT; + + SELECT id INTO vWorkerId + FROM vn.worker + WHERE userFk = vUserId; + IF vWorkerId IS NULL THEN + CALL util.throw('USER_NOT_FOUND'); + END IF; + + DROP TEMPORARY TABLE IF EXISTS tCheckedWorker; + CREATE TEMPORARY TABLE tCheckedWorker + (PRIMARY KEY (workerFk)) + ENGINE = MEMORY + SELECT id workerFk FROM worker LIMIT 0; + LOOP + SELECT bossFk INTO vBossId + FROM vn.worker + WHERE id = vWorkerId; + IF (SELECT COUNT(*) FROM tCheckedWorker WHERE workerFk = vBossId) THEN + CALL util.throw('INFINITE_LOOP'); + END IF; + IF vBossId = vWorkerId THEN + RETURN FALSE; + ELSEIF vBossId = vn.getWorker() THEN + RETURN TRUE; + ELSE + INSERT INTO tCheckedWorker VALUES (vWorkerId); + SET vWorkerId = vBossId; + END IF; + END LOOP; + DROP TEMPORARY TABLE tCheckedWorker; + RETURN FALSE; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `agencyListAvailable` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `agencyListAvailable`(vDate DATE, vAddress INT) +BEGIN +/** + * Devuelve la lista de almacenes disponibles y la fecha de + * envío desde cada uno. + * + * @param vDate Fecha de recepción de mercancía + * @param vAddress Id consignatario, %NULL para recogida + * @table travel_tree Lista de almacenes disponibles + */ + DECLARE vMaxDays INT DEFAULT DATEDIFF(vDate, CURDATE()); + DECLARE vWday TINYINT DEFAULT WEEKDAY(vDate); + DECLARE vHour TINYINT DEFAULT HOUR(NOW()); + DECLARE vProvince INT; + + SELECT province INTO vProvince + FROM address + WHERE id = vAddress; + + DROP TEMPORARY TABLE IF EXISTS tmp.agencyAvailable; + CREATE TEMPORARY TABLE tmp.agencyAvailable + (INDEX (agency)) + ENGINE = MEMORY + SELECT agency, warehouse + FROM agencyHour h + WHERE (province = vProvince + OR province IS NULL) + AND (weekDay = vWday + OR weekDay IS NULL) + AND (substractDay < vMaxDays + OR (substractDay = vMaxDays AND maxHour > vHour)); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `agencyListForMethod` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `agencyListForMethod`( + vDate DATE, vAddress INT, vMethod VARCHAR(255)) +BEGIN +/** + * Devuelve la lista de agencias disponibles para una forma + * de envío. + * + * @param vDate Fecha de recepción de mercancía + * @param vAddress Id consignatario, %NULL para recogida + * @param vMethod Código de la forma de envío + * @select Lista de agencias disponibles + */ + CALL agencyListAvailable (vDate, vAddress); + + SELECT DISTINCT m.id, m.description + FROM tmp.agencyAvailable a + JOIN agencyMode m + ON m.agency = a.agency + JOIN deliveryMethod d + ON d.id = m.deliveryMethod + WHERE d.code = vMethod COLLATE 'utf8_unicode_ci'; + + DROP TEMPORARY TABLE tmp.agencyAvailable; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `clean` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `clean`() +BEGIN + + DECLARE vDateShort DATETIME; + + SET vDateShort = TIMESTAMPADD(MONTH, -2, CURDATE()); + + INSERT INTO vn.dailyTaskLog(state) VALUES('clean START'); + + DELETE FROM vn.message WHERE sendDate < vDateShort; + + INSERT INTO vn.dailyTaskLog(state) VALUES('clean END'); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `clientFreeze` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `clientFreeze`() +BEGIN + + IF day(CURDATE()) IN (10,20,30) THEN + + UPDATE vn.client c + JOIN bi.defaulters d ON d.client = c.id AND d.date = CURDATE() + JOIN vn.config ON TRUE + SET c.isFreezed = TRUE + WHERE d.amount > config.defaultersMaxAmount; + + END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `copyComponentsFromSaleList` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `copyComponentsFromSaleList`(vTargetTicketFk INT) +BEGIN + +/* Copy sales and components to the target ticket +* +* ¡¡¡¡ Requires tmp.saleList(saleFk, itemFk, quantity, concept, price, discount, orden) !!!!! +* +* param VTargetTicketFk id del ticket a rellenar +*/ + + INSERT INTO vn.sale(ticketFk, itemFk, quantity,concept,price,discount) + SELECT vTargetTicketFk, itemFk, quantity,concept,price,discount + FROM tmp.saleList + ORDER BY orden; + + SET @order = 0; + + DROP TEMPORARY TABLE IF EXISTS tmp.newSaleList; + + CREATE TEMPORARY TABLE tmp.newSaleList + SELECT id as saleFk, @order := @order + 1 as orden + FROM vn.sale + WHERE ticketFk = vTargetTicketFk + ORDER BY saleFk; + + INSERT INTO vn.saleComponent(saleFk,componentFk,value) + SELECT ns.saleFk, sc.componentFk, sc.value + FROM vn.saleComponent sc + JOIN tmp.saleList s ON s.saleFk = sc.saleFk + JOIN tmp.newSaleList ns ON ns.orden = s.orden; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `createExternalWorker` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `createExternalWorker`( + vFirstName VARCHAR(50), + vSurname1 VARCHAR(50), + vSurname2 VARCHAR(50), + vUser VARCHAR(20), + vPassword VARCHAR(50), + vWorkerCode VARCHAR(3) + ) +BEGIN + + DECLARE vUserId INT; + DECLARE vWorkerPako INT DEFAULT 2; + + INSERT INTO account.user(name,password,role) + SELECT vUser,MD5(vPassword),1; + + SET vUserId = LAST_INSERT_ID(); + /* + INSERT INTO vn.worker(firstName,name,bossFk,workerCode,user_id) + SELECT vFirstName,CONCAT(vSurname1,' ',vSurname2),2,vWorkerCode,vUser; + */ + + INSERT INTO vn2008.Trabajadores(Nombre,Apellidos,boss,CodigoTrabajador,user_id) + SELECT vFirstName,CONCAT(vSurname1,' ',vSurname2),vWorkerPako,vWorkerCode,vUserId; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `entryConverter` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `entryConverter`(vEntry INT) +BEGIN + + DECLARE vWarehouseIn INT; + DECLARE vWarehouseOut INT; + DECLARE vTravel INT; + + DECLARE done BOOL DEFAULT FALSE; + + DECLARE vId_Entrada INT; + DECLARE vId_Article INT; + DECLARE vEtiquetas INT; + DECLARE vId_Cubo VARCHAR(10); + DECLARE vPacking INT; + DECLARE vGrouping INT; + DECLARE vCantidad INT; + DECLARE vCostefijo DECIMAL(10,3); + DECLARE vPortefijo DECIMAL(10,3); + DECLARE vEmbalajefijo DECIMAL(10); + DECLARE vComisionfija DECIMAL(10,3); + DECLARE vCaja INT; + DECLARE vNicho VARCHAR(5); + DECLARE vTarifa1 DECIMAL(10,2); + DECLARE vTarifa2 DECIMAL(10,2); + DECLARE vTarifa3 DECIMAL(10,2); + DECLARE vPVP DECIMAL(10,2); + DECLARE vCompra INT; + + DECLARE rs CURSOR FOR + SELECT + b.Id_Entrada, + b.Id_Article, + b.Etiquetas, + b.Id_Cubo, + b.Packing, + b.grouping, + b.Cantidad, + b.Costefijo, + b.Portefijo, + b.Embalajefijo, + b.Comisionfija, + b.caja, + b.Nicho, + b.Tarifa1, + b.Tarifa2, + b.Tarifa3, + b.PVP + FROM vn2008.Compres b + JOIN vn.itemConversor ic ON ic.espItemFk = b.Id_Article + WHERE Id_Entrada = vEntry; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + SELECT warehouseInFk, warehouseOutFk, tr.id + INTO vWarehouseIn, vWarehouseOut, vTravel + FROM travel tr + JOIN entry e ON e.travelFk = tr.id + WHERE e.id = vEntry; + + UPDATE travel + SET warehouseInFk = vWarehouseOut, + warehouseOutFk = vWarehouseIn + WHERE id = vTravel; + + UPDATE vn2008.Compres c + LEFT JOIN vn.itemConversor ic ON ic.espItemFk = c.Id_Article + SET Etiquetas = 0, Cantidad = 0 + WHERE c.Id_Entrada = vEntry + AND ic.espItemFk IS NULL; + + OPEN rs; + + DELETE FROM vn2008.Compres WHERE Id_Entrada = vEntry; + + FETCH rs INTO + vId_Entrada, + vId_Article, + vEtiquetas, + vId_Cubo, + vPacking, + vGrouping, + vCantidad, + vCostefijo, + vPortefijo, + vEmbalajefijo, + vComisionfija, + vCaja, + vNicho, + vTarifa1, + vTarifa2, + vTarifa3, + vPVP; + + WHILE NOT done DO + + -- Primero la linea original con las cantidades invertidas + INSERT INTO vn2008.Compres + ( + Id_Entrada, + Id_Article, + Etiquetas, + Id_Cubo, + Packing, + grouping, + Cantidad, + Costefijo, + Portefijo, + Embalajefijo, + Comisionfija, + caja, + Nicho, + Tarifa1, + Tarifa2, + Tarifa3, + PVP + ) + VALUES + ( + vId_Entrada, + vId_Article, + - vEtiquetas, + vId_Cubo, + vPacking, + vGrouping, + - vCantidad, + vCostefijo, + vPortefijo, + vEmbalajefijo, + vComisionfija, + vCaja, + vNicho, + vTarifa1, + vTarifa2, + vTarifa3, + vPVP); + + -- Ahora la linea nueva, con el item genérico + INSERT INTO vn2008.Compres + ( + Id_Entrada, + Id_Article, + Etiquetas, + Id_Cubo, + Packing, + grouping, + Cantidad, + Costefijo, + Portefijo, + Embalajefijo, + Comisionfija, + caja, + Nicho, + Tarifa1, + Tarifa2, + Tarifa3, + PVP + ) + SELECT + vId_Entrada, + genItemFk as Id_Article, + vEtiquetas, + vId_Cubo, + vPacking, + vGrouping, + vCantidad, + vCostefijo, + vPortefijo, + vEmbalajefijo, + vComisionfija, + vCaja, + vNicho, + vTarifa1, + vTarifa2, + vTarifa3, + vPVP + FROM itemConversor + WHERE espItemFk = vId_Article; + + SELECT LAST_INSERT_ID() + INTO vCompra; + + REPLACE vn2008.Compres_mark(Id_Compra,`comment`) + SELECT vCompra, vId_Article; + + + FETCH rs INTO + vId_Entrada, + vId_Article, + vEtiquetas, + vId_Cubo, + vPacking, + vGrouping, + vCantidad, + vCostefijo, + vPortefijo, + vEmbalajefijo, + vComisionfija, + vCaja, + vNicho, + vTarifa1, + vTarifa2, + vTarifa3, + vPVP; + + END WHILE; + + + CLOSE rs; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `getDebt` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `getDebt`(vDate DATE) +BEGIN +/** + * Calcula el riesgo para los clientes activos de la tabla temporal tmp.client_list + * + * @param vDate Fecha maxima de los registros + * @tmp.risk + * + * @return table tmp.risk + **/ + + DECLARE vDateIni DATETIME DEFAULT TIMESTAMPADD(DAY, - DAYOFMONTH(CURDATE()) - 5, CURDATE()); + DECLARE vDateEnd DATETIME; + DECLARE MAX_RISK_ALLOWED INT DEFAULT 200; + + SET vDateEnd = TIMESTAMP(IFNULL(vDate, CURDATE()), '23:59:59'); + + DROP TEMPORARY TABLE IF EXISTS tmp.clientList2; + CREATE TEMPORARY TABLE tmp.clientList2 + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT * + FROM tmp.client_list; + + DROP TEMPORARY TABLE IF EXISTS tmp.clientList3; + CREATE TEMPORARY TABLE tmp.clientList3 + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT * + FROM tmp.client_list; + + DROP TEMPORARY TABLE IF EXISTS vn2008.ticket_tmp; + CREATE TEMPORARY TABLE vn2008.ticket_tmp + (INDEX (ticket_id)) + ENGINE = MEMORY + SELECT id ticket_id, cl.Id_Cliente + FROM ticket t + JOIN tmp.clientList2 cl ON t.clientFk = cl.Id_Cliente + WHERE refFk IS NULL + AND shipped BETWEEN vDateIni AND vDateEnd; + + CALL vn2008.ticket_total (); + + DROP TEMPORARY TABLE IF EXISTS tmp.risk; + CREATE TEMPORARY TABLE tmp.risk + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT Id_Cliente, SUM(amount) risk + FROM vn2008.Clientes c + JOIN ( + SELECT customer_id, SUM(amount) amount + FROM bi.customer_risk cr + JOIN tmp.client_list on tmp.client_list.Id_Cliente = cr.customer_id + GROUP BY customer_id + UNION ALL + SELECT Id_Cliente, SUM(Entregado) + FROM vn2008.Recibos + JOIN tmp.clientList2 using(Id_Cliente) + WHERE Fechacobro > vDateIni + GROUP BY Id_Cliente + UNION ALL + SELECT t.Id_Cliente, total + FROM vn2008.ticket_total tt + JOIN vn2008.ticket_tmp t ON tt.ticket_id = t.ticket_id + UNION ALL + SELECT t.customer_id, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)) + FROM hedera.tpv_transaction t + JOIN tmp.clientList3 on Id_Cliente = customer_id + WHERE t.receipt_id IS NULL + AND t.status = 'ok' + GROUP BY t.customer_id + ) t ON c.Id_Cliente = t.customer_id + WHERE c.activo != FALSE + GROUP BY c.Id_Cliente; + + DROP TEMPORARY TABLE vn2008.ticket_tmp; + DROP TEMPORARY TABLE tmp.clientList2; + DROP TEMPORARY TABLE tmp.clientList3; + DROP TEMPORARY TABLE vn2008.ticket_total; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `getDebtkk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `getDebtkk`(vDate DATE) +BEGIN +/** + * Calcula el riesgo para los clientes activos de la tabla temporal tmp.client_list + * + * @param vDate Fecha maxima de los registros + * @tmp.risk + * + * @return table tmp.risk + **/ + + DECLARE vDateIni DATETIME DEFAULT TIMESTAMPADD(DAY, - DAYOFMONTH(CURDATE()) - 5, CURDATE()); + DECLARE vDateEnd DATETIME; + DECLARE MAX_RISK_ALLOWED INT DEFAULT 200; + + SET vDateEnd = TIMESTAMP(IFNULL(vDate, CURDATE()), '23:59:59'); + + DROP TEMPORARY TABLE IF EXISTS tmp.clientList2; + CREATE TEMPORARY TABLE tmp.clientList2 + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT * + FROM tmp.client_list; + + DROP TEMPORARY TABLE IF EXISTS tmp.clientList3; + CREATE TEMPORARY TABLE tmp.clientList3 + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT * + FROM tmp.client_list; + + DROP TEMPORARY TABLE IF EXISTS vn2008.ticket_tmp; + CREATE TEMPORARY TABLE vn2008.ticket_tmp + (INDEX (ticket_id)) + ENGINE = MEMORY + SELECT id ticket_id, cl.Id_Cliente + FROM ticket t + JOIN tmp.clientList2 cl ON t.client = cl.Id_Cliente + WHERE refFk IS NULL + AND shipment BETWEEN vDateIni AND vDateEnd; + + CALL vn2008.ticket_total (); + + DROP TEMPORARY TABLE IF EXISTS tmp.risk; + CREATE TEMPORARY TABLE tmp.risk + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT Id_Cliente, SUM(amount) risk + FROM vn2008.Clientes c + JOIN ( + SELECT customer_id, SUM(amount) amount + FROM bi.customer_risk cr + JOIN tmp.client_list on tmp.client_list.Id_Cliente = cr.customer_id + GROUP BY customer_id + UNION ALL + SELECT Id_Cliente, SUM(Entregado) + FROM vn2008.Recibos + JOIN tmp.clientList2 using(Id_Cliente) + WHERE Fechacobro > vDateIni + GROUP BY Id_Cliente + UNION ALL + SELECT t.Id_Cliente, total + FROM vn2008.ticket_total tt + JOIN vn2008.ticket_tmp t ON tt.ticket_id = t.ticket_id + UNION ALL + SELECT t.customer_id, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)) + FROM hedera.tpv_transaction t + JOIN tmp.clientList3 on Id_Cliente = customer_id + WHERE t.receipt_id IS NULL + AND t.status = 'ok' + GROUP BY t.customer_id + ) t ON c.Id_Cliente = t.customer_id + WHERE c.activo != FALSE + GROUP BY c.Id_Cliente; + + DROP TEMPORARY TABLE vn2008.ticket_tmp; + DROP TEMPORARY TABLE tmp.clientList2; + DROP TEMPORARY TABLE tmp.clientList3; + DROP TEMPORARY TABLE vn2008.ticket_total; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `getItemVisibleAvailable` */; +ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `getItemVisibleAvailable`(IN vItem INT,IN vDate DATE,IN vWarehouse TINYINT,IN isForcedToRecalculate BOOLEAN) +BEGIN + + DECLARE vCacheVisibleCalculated INTEGER; + DECLARE vCacheAvailableCalculated INTEGER; + + CALL cache.visible_refresh(vCacheVisibleCalculated, isForcedToRecalculate, vWarehouse); + CALL cache.available_refresh(vCacheAvailableCalculated, isForcedToRecalculate, vWarehouse, vDate); + + SELECT a.Id_Article, a.Article, a.Medida, a.Tallos, a.caja, O.Abreviatura as origen, a.Color, tipo_id, an.Nicho, + a.Categoria, p.`name` as producer, v.visible, av.available + FROM vn2008.Articles a + LEFT JOIN vn2008.Articles_nicho an ON a.Id_Article = an.Id_Article AND an.warehouse_id = vWarehouse + LEFT JOIN vn2008.Origen O ON O.id = a.id_origen + LEFT JOIN vn2008.producer p ON p.producer_id = a.producer_id + LEFT JOIN cache.visible v ON (vItem IS NULL OR v.item_id = vItem) AND v.calc_id = vCacheVisibleCalculated + LEFT JOIN cache.available av ON (vItem IS NULL OR av.item_id = vItem) AND av.calc_id = vCacheAvailableCalculated + WHERE (vItem IS NULL OR a.Id_Article = vItem); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceCorrectedSale` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceCorrectedSale`(vInvoiceOut INT) +BEGIN + +/* Devuelve los registros de la factura en cuestion, para preparar la factura rectificativa +* +* param vInvoiceOutId Referencia de la factura emitida, tal como se ve en el ticket +* +*/ + + +SELECT + s.id, + s.itemFk, + s.quantity, + s.price, + s.discount + FROM sale s + JOIN ticket t ON t.id = s.ticketFk + WHERE t.invoice = vInvoiceOut; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceExpenceMake` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceExpenceMake`(IN vInvoice INT) +BEGIN +/* Inserta las partidas de gasto correspondientes a la factura + * REQUIERE tabla ticketToInvoice + * + * @param vInvoice Numero de factura + * + */ + DELETE FROM invoiceOutExpence + WHERE invoiceOutFk = vInvoice; + + INSERT INTO invoiceOutExpence( + invoiceOutFk, + expenceFk, + amount + ) + SELECT + vInvoice, + expenceFk, + SUM(ROUND(quantity * price * (100 - discount)/100,2)) amount + FROM ticketToInvoice t + JOIN sale s ON s.ticketFk = t.id + JOIN item i ON i.id = s.itemFk + GROUP BY i.expenceFk + HAVING amount != 0; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceFromAddress` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceFromAddress`(vMaxTicketDate DATETIME,vAddress INT,vCompany INT) +BEGIN + + DECLARE vMinDateTicket DATE DEFAULT TIMESTAMPADD(MONTH, -3, CURDATE()); + + SET vMaxTicketDate = vn2008.DAYEND(vMaxTicketDate); + + DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; + + CREATE TEMPORARY TABLE `ticketToInvoice` + (PRIMARY KEY (`id`)) + ENGINE = MEMORY + SELECT Id_Ticket id FROM vn2008.Tickets WHERE (Fecha BETWEEN vMinDateTicket + AND vMaxTicketDate) AND Id_Consigna = vAddress + AND Factura IS NULL AND empresa_id = vCompany; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceFromClient` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceFromClient`(vMaxTicketDate DATETIME, vClient INT, vCompany INT) +BEGIN + + DECLARE vMinDateTicket DATE DEFAULT TIMESTAMPADD(YEAR, -3, CURDATE()); + + SET vMaxTicketDate = vn2008.DAYEND(vMaxTicketDate); + + DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; + + CREATE TEMPORARY TABLE `ticketToInvoice` + (PRIMARY KEY (`id`)) + ENGINE = MEMORY + SELECT Id_Ticket id FROM vn2008.Tickets + WHERE Id_Cliente = vClient + AND Factura IS NULL + AND empresa_id = vCompany + AND (Fecha BETWEEN vMinDateTicket AND vMaxTicketDate) + ; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceFromTicket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceFromTicket`(IN vTicket INT) +BEGIN + + DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; + + CREATE TEMPORARY TABLE `ticketToInvoice` + (PRIMARY KEY (`id`)) + ENGINE = MEMORY + SELECT id FROM vn.ticket + WHERE id = vTicket AND refFk IS NULL; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceInBooking` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBooking`(vInvoiceInId INT) +BEGIN + DECLARE vSerialNumber, vBookNumber, vBookNumberPlus1 INT; + DECLARE vTotalAmount DECIMAL(10,2); + + DROP TEMPORARY TABLE IF EXISTS newInvoiceIn; + + CREATE TEMPORARY TABLE newInvoiceIn + SELECT + i.*, + YEAR(i.booked) datedYear, + -- CONCAT('s/fra',RIGHT(i.supplierRef,8)) concept, + CONCAT('s/fra',RIGHT(i.supplierRef,8),':',LEFT(s.name, 10)) conceptWithSupplier, + (cc.id = c.id) isSameCountry, + cit.id invoicesCount + FROM invoiceIn i + JOIN cplusInvoiceType472 cit ON cit.id = i.cplusInvoiceType472Fk + JOIN supplier s ON s.id = i.supplierFk + JOIN country c ON c.id = s.countryFk + JOIN supplier sc ON sc.id = i.companyFk + JOIN country cc ON cc.id = sc.countryFk + WHERE i.id = vInvoiceInId; + + DROP TEMPORARY TABLE IF EXISTS newSupplier; + CREATE TEMPORARY TABLE newSupplier + SELECT + s.*, + REPLACE(s.account,' ','') supplierAccount, + IF(c.CEE < 2, TRUE, FALSE) isUeeMember + FROM supplier s + JOIN newInvoiceIn n + JOIN country c ON c.id = s.countryFk + WHERE s.id = n.supplierFk; + + IF (SELECT isActive FROM newSupplier) = 0 THEN + CALL util.throw('INACTIVE_PROVIDER'); + END IF; + + SELECT IFNULL(MAX(i.serialNumber) + 1,1) + INTO vSerialNumber + FROM invoiceIn i + JOIN newInvoiceIn n + WHERE i.serial LIKE n.serial + AND YEAR(i.booked) = n.datedYear + AND i.companyFk = n.companyFk + GROUP BY i.companyFk; + + SELECT MAX(ASIEN) + 1 + INTO vBookNumber + FROM vn2008.XDiario; + + SET vBookNumberPlus1 = vBookNumber + 1; + + SELECT SUM(iit.taxableBase * IF(i.serial = 'R', 1 +(tc.rate/100),1)) + INTO vTotalAmount + FROM invoiceIn i + JOIN invoiceInTax iit ON iit.invoiceInFk = i.id + JOIN taxCode tc ON iit.taxCodeFk = tc.id + WHERE i.id = vInvoiceInId; + + -- Apunte del proveedor + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + EUROHABER, + CONCEPTO, + NFACTICK, + empresa_id) + SELECT + vBookNumber, + n.booked, + s.supplierAccount, + vTotalAmount, + n.conceptWithSupplier, + n.invoicesCount, + n.companyFk + FROM newInvoiceIn n + JOIN newSupplier s; + + -- ----------------------------------------------------------- Linea de Gastos + INSERT INTO vn2008.XDiario ( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + EUROHABER, + CONCEPTO, + NFACTICK, + empresa_id + ) + SELECT + vBookNumber ASIEN, + n.booked FECHA, + if( + e.isWithheld, + LPAD(RIGHT(s.supplierAccount ,5),10,iit.expenceFk), + iit.expenceFk + ) SUBCTA, + s.supplierAccount CONTRA, + if( + e.isWithheld, + NULL, + ABS(ROUND(SUM(iit.taxableBase),2)) + ) EURODEBE, + if( + e.isWithheld, + ABS(ROUND(SUM(iit.taxableBase),2)), + NULL + ) EUROHABER, + n.conceptWithSupplier CONCEPTO, + n.invoicesCount NFACTICK, + n.companyFk empresa_id + FROM newInvoiceIn n + JOIN newSupplier s + JOIN invoiceInTax iit ON iit.invoiceInFk = n.id + JOIN taxCode tc ON tc.id = iit.taxCodeFk + JOIN expence e ON e.id = iit.expenceFk AND e.taxTypeFk = tc.taxTypeFk + WHERE iit.expenceFk != 5660000002 + GROUP BY iit.expenceFk; + + -- Extracomunitarias gasto contra proveedor/acreedor + INSERT INTO vn2008.XDiario ( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + CONCEPTO, + NFACTICK, + empresa_id + ) + SELECT + vBookNumberPlus1 ASIEN, + IFNULL(a.booked, n.booked) FECHA, + iit.expenceFk SUBCTA, + s.account CONTRA, + ROUND(SUM(iit.taxableBase) * (iie.percentage / 100),2) EURODEBE, + CONCAT('COMPRA s/fra ',i.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, + n.invoicesCount NFACTICK, + n.companyFk empresa_id + FROM newInvoiceIn n + JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = n.id + JOIN invoiceInTax iit ON iit.invoiceInFk = iie.invoiceInFk + JOIN invoiceIn i ON i.id = iit.invoiceInFk + JOIN supplier s ON s.id = i.supplierFk + LEFT JOIN invoiceInAwb iia ON iia.invoiceInFk = n.id + LEFT JOIN awb a ON a.id = iia.awbFk + WHERE iie.percentage + GROUP BY i.id; + + -- Extracomunitarias proveedor contra gasto + INSERT INTO vn2008.XDiario ( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EUROHABER, + CONCEPTO, + NFACTICK, + empresa_id + ) + SELECT + vBookNumberPlus1 ASIEN, + IFNULL(a.booked, n.booked) FECHA, + s.account SUBCTA, + iit.expenceFk CONTRA, + ROUND(SUM(iit.taxableBase) * (iie.percentage / 100),2) EUROHABER, + CONCAT('COMPRA s/fra ',i.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, + n.invoicesCount NFACTICK, + n.companyFk empresa_id + FROM newInvoiceIn n + JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = n.id + JOIN invoiceInTax iit ON iit.invoiceInFk = iie.invoiceInFk + JOIN invoiceIn i ON i.id = iit.invoiceInFk + JOIN supplier s ON s.id = i.supplierFk + LEFT JOIN invoiceInAwb iia ON iia.invoiceInFk = n.id + LEFT JOIN awb a ON a.id = iia.awbFk + WHERE iie.percentage + GROUP BY i.id; + + -- -------------------------------------------------------------------- + -- ------- Lineas de IVA --------------- + -- -------------------------------------------------------------------- + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + AUXILIAR, + SERIE, + TIPOOPE, + FECHA_EX, + FECHA_OP, + NFACTICK, + FACTURAEX, + L340, + LRECT349, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + TERIDNIF, + TERNIF, + TERNOM, + FECREGCON, + empresa_id + ) + SELECT vBookNumber ASIEN, + n.booked FECHA, + tc.code SUBCTA, + s.supplierAccount CONTRA, + SUM(ROUND(tc.rate/100*it.taxableBase + 0.0001,2)) EURODEBE, + SUM(it.taxableBase) BASEEURO, + GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, + vSerialNumber FACTURA, + tc.rate IVA, + IF(isUeeMember AND eWithheld.id IS NULL,'','*') AUXILIAR, + n.serial SERIE, + tt.TIPOOPE, + n.issued FECHA_EX, + n.operated FECHA_OP, + n.invoicesCount NFACTICK, + n.supplierRef FACTURAEX, + TRUE L340, + (isSameCountry OR NOT isUeeMember) LRECT349, + n.cplusTrascendency472Fk TIPOCLAVE, + n.cplusTaxBreakFk TIPOEXENCI, + n.cplusSubjectOpFk TIPONOSUJE, + n.cplusInvoiceType472Fk TIPOFACT, + n.cplusRectificationTypeFk TIPORECTIF, + iis.cplusTerIdNifFk TERIDNIF, + s.nif AS TERNIF, + s.name AS TERNOM, + n.booked FECREGCON, + n.companyFk + + FROM newInvoiceIn n + JOIN newSupplier s + JOIN invoiceInTax it ON n.id = it.invoiceInFk + JOIN taxCode tc ON tc.id = it.taxCodeFk + JOIN taxType tt ON tt.id = tc.taxTypeFk + JOIN invoiceInSerial iis ON iis.code = tt.serial + JOIN expence e ON e.id = it.expenceFk AND e.taxTypeFk = tc.taxTypeFk + LEFT JOIN + (SELECT eWithheld.id + FROM invoiceInTax hold + JOIN expence eWithheld ON eWithheld.id = hold.expenceFk AND eWithheld.isWithheld + WHERE hold.invoiceInFk = 58262 LIMIT 1 + ) eWithheld ON TRUE + WHERE tc.type != '-' + AND tc.isActive + GROUP BY tc.rate; + + -- Linea iva inversor sujeto pasivo + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EUROHABER, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + AUXILIAR, + SERIE, + TIPOOPE, + FECHA_EX, + FECHA_OP, + NFACTICK, + FACTURAEX, + L340, + LRECT349, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + TERIDNIF, + TERNIF, + TERNOM, + empresa_id + ) + + SELECT + vBookNumber ASIEN, + n.booked FECHA, + tcLink.code SUBCTA, + s.supplierAccount CONTRA, + ROUND(tcLink.rate/100*SUM(it.taxableBase) + 0.0001,2) EUROHABER, + ROUND(SUM(it.taxableBase),2) BASEEURO, + GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, + vSerialNumber FACTURA, + tcLink.rate IVA, + '*' AUXILIAR, + n.serial SERIE, + tt.TIPOOPE, + n.issued FECHA_EX, + n.operated FECHA_OP, + n.invoicesCount NFACTICK, + n.supplierRef FACTURAEX, + FALSE L340, + (isSameCountry OR NOT isUeeMember) LRECT349, + 1 TIPOCLAVE, + n.cplusTaxBreakFk TIPOEXENCI, + n.cplusSubjectOpFk TIPONOSUJE, + n.cplusInvoiceType472Fk TIPOFACT, + n.cplusRectificationTypeFk TIPORECTIF, + iis.cplusTerIdNifFk TERIDNIF, + s.nif AS TERNIF, + s.name AS TERNOM, + n.companyFk + + FROM newInvoiceIn n + JOIN newSupplier s + JOIN invoiceInTax it ON n.id = it.invoiceInFk + JOIN taxCode tc ON tc.id = it.taxCodeFk + JOIN taxType tt ON tt.id = tc.taxTypeFk + JOIN invoiceInSerial iis ON iis.code = tt.serial + JOIN taxCode tcLink ON tcLink.linkFk = tc.linkFk AND tc.id != tcLink.id + JOIN expence e ON e.id = it.expenceFk AND e.taxTypeFk = tc.taxTypeFk + WHERE tc.isActive + GROUP BY tcLink.rate, e.id; + + -- Iva Importacion pendiente + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONCEPTO, + EUROHABER,-- EURODEBE + SERIE, + empresa_id) + + SELECT + vBookNumberPlus1, + a.booked, + '4700000999', + n.conceptWithSupplier, + ROUND(SUM(iii.amount * (tc.rate/100)),2) eurohaber, + n.serial, + n.companyFk + FROM newInvoiceIn n + JOIN invoiceInIntrastat iii ON n.id = iii.invoiceInFk + JOIN intrastat ii ON ii.id = iii.intrastatFk + JOIN taxCode tc ON tc.id = ii.taxCodeFk + JOIN invoiceInAwb iia ON iia.invoiceInFk = iii.invoiceInFk + JOIN awb a ON a.id = iia.awbFk + HAVING eurohaber IS NOT NULL; + + + -- Linea iva importacion extracomunitaria + + SET @cont:=1; + SET @total:=0; + SET @base:=2; + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + AUXILIAR, + SERIE, + FECHA_EX, + FECHA_OP, + FACTURAEX, + NFACTICK, + L340, + LDIFADUAN, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + TERIDNIF, + TERNIF, + TERNOM, + empresa_id, + FECREGCON + ) + + SELECT + vBookNumberPlus1 ASIEN, + x.FECHA, + x.SUBCTA, + x.CONTRA, + IF (n.isSameCountry OR NOT s.isUeeMember, + x.EURODEBE, + NULL + ) EURODEBE, + x.BASEEURO, + x.CONCEPTO, + vSerialNumber FACTURA, + x.IVA, + '*' AUXILIAR, + x.SERIE, + x.FECHA_EX, + x.FECHA_OP, + x.dua FACTURAEX, + n.invoicesCount NFACTICK, + IF(@total:=@total + x.EURODEBE AND @cont:=@cont + 1 ,1,1) L340, + TRUE LDIFADUAN, + x.TIPOCLAVE, + n.cplusTaxBreakFk TIPOEXENCI, + n.cplusSubjectOpFk TIPONOSUJE, + 5 TIPOFACT, + n.cplusRectificationTypeFk TIPORECTIF, + x.TERIDNIF, + x.TERNIF, + x.TERNOM, + n.companyFk, + IFNULL(x.FECREGCON,n.booked) FECREGCON + + FROM newInvoiceIn n + JOIN newSupplier s + JOIN ( + SELECT + -- CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) + CONCAT('COMPRA s/fra ',ii.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, + tc.code SUBCTA, + s.account CONTRA, + tc.rate IVA, + ROUND(sum(b.buyingValue * b.quantity / intraSub.intrastatSum * taxSub.amount)*(tc.rate/100),2) EURODEBE, + ROUND(sum(b.buyingValue * b.quantity / intraSub.intrastatSum * taxSub.amount),2) BASEEURO, + ii.serial SERIE, + e.supplierFk, + iia.dua, + iis.cplusTerIdNifFk TERIDNIF, + s.nif AS TERNIF, + s.name AS TERNOM, + ii.booked FECREGCON, + ii.cplusTrascendency472Fk TIPOCLAVE, + a.issued FECHA_EX, + a.operated FECHA_OP, + a.booked FECHA + FROM invoiceInAwb iia + JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = iia.invoiceInFk + JOIN awb a ON a.id = iia.awbFk + JOIN invoiceIn ii ON ii.id = iie.invoiceInFk + JOIN invoiceInSerial iis ON iis.code = ii.serial + JOIN buy b ON b.entryFk = iie.entryFk + JOIN item i ON i.id = b.itemFk + JOIN ( + SELECT + i.intrastatFk, + sum(b.buyingValue * b.quantity) as intrastatSum + FROM buy b + JOIN item i ON i.id = b.itemFk + JOIN invoiceInEntry iie + ON iie.entryFk = b.entryFk + JOIN invoiceInAwb iia + ON iia.invoiceInFk = iie.invoiceInAwbFk + JOIN awb aw ON aw.id =iia.awbFk + WHERE iie.percentage AND iia.invoiceInFk = vInvoiceInId + GROUP BY i.intrastatFk + ) intraSub ON intraSub.intrastatFk = i.intrastatFk + JOIN ( + SELECT + iii.intrastatFk, + iii.amount, + intr.taxCodeFk + FROM invoiceInIntrastat iii + JOIN intrastat intr + ON intr.id = iii.intrastatFk + WHERE iii.invoiceInFk = vInvoiceInId + ) taxSub ON taxSub.intrastatFk = i.intrastatFk + JOIN taxCode tc ON tc.id = taxSub.taxCodeFk + JOIN entry e ON e.id = iie.entryFk + JOIN supplier s ON s.id = e.supplierFk + WHERE iie.invoiceInAwbFk = vInvoiceInId AND iie.percentage + GROUP BY e.supplierFk, taxSub.taxCodeFk + ) x + GROUP BY x.supplierFk, x.IVA; + + -- Actualizacion de la fecha de contabilizado y de operacion de las importaciones + UPDATE newInvoiceIn n + JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = vInvoiceInId + JOIN invoiceIn ii ON ii.id = iie.invoiceInFk + SET ii.booked = IFNULL(ii.booked,n.booked), + ii.operated = IFNULL(ii.operated,n.issued); + + -- Actualización del registro original + UPDATE invoiceIn + SET + serialNumber = vSerialNumber, + isBooked = TRUE + WHERE + id = vInvoiceInId; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceInBookingCommon` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingCommon`(vInvoiceInId INT, OUT vSerialNumber INT) +BEGIN + + DROP TEMPORARY TABLE IF EXISTS newInvoiceIn; + + CREATE TEMPORARY TABLE newInvoiceIn + SELECT + i.*, + YEAR(i.booked) datedYear, + -- CONCAT('s/fra',RIGHT(i.supplierRef,8)) concept, + CONCAT('s/fra',RIGHT(i.supplierRef,8),':',LEFT(s.name, 10)) conceptWithSupplier, + (cc.id = c.id) isSameCountry, + cit.id invoicesCount + FROM invoiceIn i + JOIN cplusInvoiceType472 cit ON cit.id = i.cplusInvoiceType472Fk + JOIN supplier s ON s.id = i.supplierFk + JOIN country c ON c.id = s.countryFk + JOIN supplier sc ON sc.id = i.companyFk + JOIN country cc ON cc.id = sc.countryFk + WHERE i.id = vInvoiceInId; + + DROP TEMPORARY TABLE IF EXISTS newSupplier; + CREATE TEMPORARY TABLE newSupplier + SELECT + s.*, + REPLACE(s.account,' ','') supplierAccount, + IF(c.CEE < 2, TRUE, FALSE) isUeeMember + FROM supplier s + JOIN newInvoiceIn n + JOIN country c ON c.id = s.countryFk + WHERE s.id = n.supplierFk; + + IF (SELECT isActive FROM newSupplier) = 0 THEN + CALL util.throw('INACTIVE_PROVIDER'); + END IF; + + SELECT IFNULL(MAX(i.serialNumber) + 1,1) + INTO vSerialNumber + FROM invoiceIn i + JOIN newInvoiceIn n + WHERE i.serial LIKE n.serial + AND YEAR(i.booked) = n.datedYear + AND i.companyFk = n.companyFk + GROUP BY i.companyFk; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceInBookingExtra` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingExtra`(vInvoiceInId INT) +BEGIN + DECLARE vBookNumber,vSerialNumber INT; + + CALL invoiceInBookingCommon(vInvoiceInId,vSerialNumber); + + SELECT MAX(ASIEN) + 1 + INTO vBookNumber + FROM vn2008.XDiario; + + -- Extracomunitarias gasto contra proveedor/acreedor + INSERT INTO vn2008.XDiario ( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + CONCEPTO, + NFACTICK, + empresa_id + ) + SELECT + vBookNumber ASIEN, + IFNULL(a.booked, n.booked) FECHA, + iit.expenceFk SUBCTA, + s.account CONTRA, + ROUND(SUM(iit.taxableBase) * (iie.percentage / 100),2) EURODEBE, + CONCAT('COMPRA s/fra ',i.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, + n.invoicesCount NFACTICK, + n.companyFk empresa_id + FROM newInvoiceIn n + JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = n.id + JOIN invoiceInTax iit ON iit.invoiceInFk = iie.invoiceInFk + JOIN invoiceIn i ON i.id = iit.invoiceInFk + JOIN supplier s ON s.id = i.supplierFk + LEFT JOIN invoiceInAwb iia ON iia.invoiceInFk = n.id + LEFT JOIN awb a ON a.id = iia.awbFk + WHERE iie.percentage + GROUP BY i.id; + + -- Extracomunitarias proveedor contra gasto + INSERT INTO vn2008.XDiario ( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EUROHABER, + CONCEPTO, + NFACTICK, + empresa_id + ) + SELECT + vBookNumber ASIEN, + IFNULL(a.booked, n.booked) FECHA, + s.account SUBCTA, + iit.expenceFk CONTRA, + ROUND(SUM(iit.taxableBase) * (iie.percentage / 100),2) EUROHABER, + CONCAT('COMPRA s/fra ',i.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, + n.invoicesCount NFACTICK, + n.companyFk empresa_id + FROM newInvoiceIn n + JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = n.id + JOIN invoiceInTax iit ON iit.invoiceInFk = iie.invoiceInFk + JOIN invoiceIn i ON i.id = iit.invoiceInFk + JOIN supplier s ON s.id = i.supplierFk + LEFT JOIN invoiceInAwb iia ON iia.invoiceInFk = n.id + LEFT JOIN awb a ON a.id = iia.awbFk + WHERE iie.percentage + GROUP BY i.id; + + -- Iva Importacion pendiente + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONCEPTO, + EUROHABER,-- EURODEBE + SERIE, + empresa_id) + + SELECT + vBookNumber, + a.booked, + '4700000999', + n.conceptWithSupplier, + ROUND(SUM(iii.amount * (tc.rate/100)),2) eurohaber, + n.serial, + n.companyFk + FROM newInvoiceIn n + JOIN invoiceInIntrastat iii ON n.id = iii.invoiceInFk + JOIN intrastat ii ON ii.id = iii.intrastatFk + JOIN taxCode tc ON tc.id = ii.taxCodeFk + JOIN invoiceInAwb iia ON iia.invoiceInFk = iii.invoiceInFk + JOIN awb a ON a.id = iia.awbFk + HAVING eurohaber IS NOT NULL; + + -- Linea iva importacion extracomunitaria + + SET @cont:=1; + SET @total:=0; + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + AUXILIAR, + SERIE, + FECHA_EX, + FECHA_OP, + FACTURAEX, + NFACTICK, + L340, + LDIFADUAN, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + TERIDNIF, + TERNIF, + TERNOM, + empresa_id, + FECREGCON + ) + + SELECT + vBookNumber ASIEN, + x.FECHA, + x.SUBCTA, + x.CONTRA, + IF (n.isSameCountry OR NOT s.isUeeMember, + x.EURODEBE, + NULL + ) EURODEBE, + x.BASEEURO, + x.CONCEPTO, + vSerialNumber FACTURA, + x.IVA, + '*' AUXILIAR, + x.SERIE, + x.FECHA_EX, + x.FECHA_OP, + x.dua FACTURAEX, + n.invoicesCount NFACTICK, + IF(@total:=@total + x.EURODEBE AND @cont:=@cont + 1 ,1,1) L340, + TRUE LDIFADUAN, + x.TIPOCLAVE, + n.cplusTaxBreakFk TIPOEXENCI, + n.cplusSubjectOpFk TIPONOSUJE, + 5 TIPOFACT, + n.cplusRectificationTypeFk TIPORECTIF, + x.TERIDNIF, + x.TERNIF, + x.TERNOM, + n.companyFk, + IFNULL(x.FECREGCON,n.booked) FECREGCON + + FROM newInvoiceIn n + JOIN newSupplier s + JOIN ( + SELECT + -- CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) + CONCAT('COMPRA s/fra ',ii.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, + tc.code SUBCTA, + s.account CONTRA, + tc.rate IVA, + ROUND(sum(b.buyingValue * b.quantity / intraSub.intrastatSum * taxSub.amount)*(tc.rate/100),2) EURODEBE, + ROUND(sum(b.buyingValue * b.quantity / intraSub.intrastatSum * taxSub.amount),2) BASEEURO, + ii.serial SERIE, + e.supplierFk, + iia.dua, + iis.cplusTerIdNifFk TERIDNIF, + s.nif AS TERNIF, + s.name AS TERNOM, + ii.booked FECREGCON, + ii.cplusTrascendency472Fk TIPOCLAVE, + a.issued FECHA_EX, + a.operated FECHA_OP, + a.booked FECHA + FROM invoiceInAwb iia + JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = iia.invoiceInFk + JOIN awb a ON a.id = iia.awbFk + JOIN invoiceIn ii ON ii.id = iie.invoiceInFk + JOIN invoiceInSerial iis ON iis.code = ii.serial + JOIN buy b ON b.entryFk = iie.entryFk + JOIN item i ON i.id = b.itemFk + JOIN ( + SELECT + i.intrastatFk, + sum(b.buyingValue * b.quantity) as intrastatSum + FROM buy b + JOIN item i ON i.id = b.itemFk + JOIN invoiceInEntry iie ON iie.entryFk = b.entryFk + JOIN invoiceInAwb iia ON iia.invoiceInFk = iie.invoiceInAwbFk + JOIN awb aw ON aw.id =iia.awbFk + WHERE iie.percentage AND iia.invoiceInFk = vInvoiceInId + GROUP BY i.intrastatFk + ) intraSub ON intraSub.intrastatFk = i.intrastatFk + JOIN ( + SELECT + iii.intrastatFk, + iii.amount, + intr.taxCodeFk + FROM invoiceInIntrastat iii + JOIN intrastat intr ON intr.id = iii.intrastatFk + WHERE iii.invoiceInFk = vInvoiceInId + ) taxSub ON taxSub.intrastatFk = i.intrastatFk + JOIN taxCode tc ON tc.id = taxSub.taxCodeFk + JOIN entry e ON e.id = iie.entryFk + JOIN supplier s ON s.id = e.supplierFk + WHERE iie.invoiceInAwbFk = vInvoiceInId AND iie.percentage + GROUP BY e.supplierFk, taxSub.taxCodeFk + ) x + GROUP BY x.supplierFk, x.IVA; + + -- Actualizacion de la fecha de contabilizado y de operacion de las importaciones + UPDATE newInvoiceIn n + JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = vInvoiceInId + JOIN invoiceIn ii ON ii.id = iie.invoiceInFk + SET ii.isBooked = TRUE, + ii.booked = IFNULL(ii.booked,n.booked), + ii.operated = IFNULL(ii.operated,n.issued); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceInBookingkk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingkk`(vInvoiceInId INT) +BEGIN + DECLARE vDocument VARCHAR(255); + DECLARE vSerialNumber, vBookNumber, vBookNumberPlus1 INT; + DECLARE vTotalAmount DECIMAL(10,2); + + DROP TEMPORARY TABLE IF EXISTS newInvoiceIn; + + CREATE TEMPORARY TABLE newInvoiceIn + SELECT + i.*, + YEAR(i.booked) datedYear, + -- CONCAT('s/fra',RIGHT(i.supplierRef,8)) concept, + CONCAT('s/fra',RIGHT(i.supplierRef,8),':',LEFT(s.name, 10)) conceptWithSupplier, + (cc.id = c.id) isSameCountry, + cit.id invoicesCount + FROM invoiceIn i + JOIN cplusInvoiceType472 cit ON cit.id = i.cplusInvoiceType472Fk + JOIN supplier s ON s.id = i.supplierFk + JOIN country c ON c.id = s.countryFk + JOIN supplier sc ON sc.id = i.companyFk + JOIN country cc ON cc.id = sc.countryFk + WHERE i.id = vInvoiceInId; + + DROP TEMPORARY TABLE IF EXISTS newSupplier; + CREATE TEMPORARY TABLE newSupplier + SELECT + s.*, + REPLACE(s.account,' ','') supplierAccount, + IF(c.CEE < 2, TRUE, FALSE) isUeeMember + FROM supplier s + JOIN newInvoiceIn n + JOIN country c ON c.id = s.countryFk + WHERE s.id = n.supplierFk; + + IF (SELECT isActive FROM newSupplier) = 0 THEN + CALL util.throw('INACTIVE_PROVIDER'); + END IF; + + SELECT IFNULL(MAX(i.serialNumber) + 1,1) + INTO vSerialNumber + FROM invoiceIn i + JOIN newInvoiceIn n + WHERE i.serial LIKE n.serial + AND YEAR(i.booked) = n.datedYear + AND i.companyFk = n.companyFk + GROUP BY i.companyFk; + + SELECT MAX(ASIEN) + 1 + INTO vBookNumber + FROM vn2008.XDiario; + + SET vBookNumberPlus1 = vBookNumber + 1; + + SELECT CONCAT(serial,'/', LPAD(vSerialNumber,5,'0')) + INTO vDocument + FROM newInvoiceIn; + + SELECT SUM(iit.taxableBase * IF(i.serial = 'R', 1 +(tc.rate/100),1)) + INTO vTotalAmount + FROM invoiceIn i + JOIN invoiceInTax iit ON iit.invoiceInFk = i.id + JOIN taxCode tc ON iit.taxCodeFk = tc.id + WHERE i.id = vInvoiceInId; + /* + select vSerialNumber,vBookNumber,vDocument,vTotalAmount; + */ + -- Apunte del proveedor + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + EUROHABER, + CONCEPTO, + NFACTICK, + empresa_id) + SELECT + vBookNumber, + n.booked, + s.supplierAccount, + vTotalAmount, + n.conceptWithSupplier, + n.invoicesCount, + n.companyFk + FROM newInvoiceIn n + JOIN newSupplier s; + + -- ----------------------------------------------------------- Linea de Gastos + INSERT INTO vn2008.XDiario ( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + EUROHABER, + CONCEPTO, + NFACTICK, + empresa_id + ) + SELECT + vBookNumber ASIEN, + n.booked FECHA, + if( + e.isWithheld, + LPAD(RIGHT(s.supplierAccount ,5),10,iit.expenceFk), + iit.expenceFk + ) SUBCTA, + s.supplierAccount CONTRA, + if( + e.isWithheld, + NULL, + ABS(ROUND(SUM(iit.taxableBase),2)) + ) EURODEBE, + if( + e.isWithheld, + ABS(ROUND(SUM(iit.taxableBase),2)), + NULL + ) EUROHABER, + n.conceptWithSupplier CONCEPTO, + n.invoicesCount NFACTICK, + n.companyFk empresa_id + FROM newInvoiceIn n + JOIN newSupplier s + JOIN invoiceInTax iit ON iit.invoiceInFk = n.id + JOIN taxCode tc ON tc.id = iit.taxCodeFk + JOIN expence e ON e.id = iit.expenceFk AND e.taxTypeFk = tc.taxTypeFk + WHERE iit.expenceFk != 5660000002 + GROUP BY iit.expenceFk; + + -- Extracomunitarias gasto contra proveedor/acreedor + INSERT INTO vn2008.XDiario ( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + CONCEPTO, + NFACTICK, + empresa_id + ) + SELECT + vBookNumberPlus1 ASIEN, + IFNULL(a.booked, n.booked) FECHA, + iit.expenceFk SUBCTA, + s.account CONTRA, + ROUND(SUM(iit.taxableBase) * (iie.percentage / 100),2) EURODEBE, + CONCAT('COMPRA s/fra ',i.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, + n.invoicesCount NFACTICK, + n.companyFk empresa_id + FROM newInvoiceIn n + JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = n.id + JOIN invoiceInTax iit ON iit.invoiceInFk = iie.invoiceInFk + JOIN invoiceIn i ON i.id = iit.invoiceInFk + JOIN supplier s ON s.id = i.supplierFk + LEFT JOIN invoiceInAwb iia ON iia.invoiceInFk = n.id + LEFT JOIN awb a ON a.id = iia.awbFk + WHERE iie.percentage + GROUP BY i.id; + + -- Extracomunitarias proveedor contra gasto + INSERT INTO vn2008.XDiario ( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EUROHABER, + CONCEPTO, + NFACTICK, + empresa_id + ) + SELECT + vBookNumberPlus1 ASIEN, + IFNULL(a.booked, n.booked) FECHA, + s.account SUBCTA, + iit.expenceFk CONTRA, + ROUND(SUM(iit.taxableBase) * (iie.percentage / 100),2) EUROHABER, + CONCAT('COMPRA s/fra ',i.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, + n.invoicesCount NFACTICK, + n.companyFk empresa_id + FROM newInvoiceIn n + JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = n.id + JOIN invoiceInTax iit ON iit.invoiceInFk = iie.invoiceInFk + JOIN invoiceIn i ON i.id = iit.invoiceInFk + JOIN supplier s ON s.id = i.supplierFk + LEFT JOIN invoiceInAwb iia ON iia.invoiceInFk = n.id + LEFT JOIN awb a ON a.id = iia.awbFk + WHERE iie.percentage + GROUP BY i.id; + + -- -------------------------------------------------------------------- + -- ------- Lineas de IVA --------------- + -- -------------------------------------------------------------------- + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + AUXILIAR, + SERIE, + TIPOOPE, + FECHA_EX, + FECHA_OP, + NFACTICK, + FACTURAEX, + L340, + LRECT349, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + TERIDNIF, + TERNIF, + TERNOM, + FECREGCON, + empresa_id + ) + SELECT + vBookNumber ASIEN, + n.booked FECHA, + tc.code SUBCTA, + s.supplierAccount CONTRA, + ROUND(tc.rate/100*it.taxableBase + 0.0001,2) EURODEBE, + it.taxableBase BASEEURO, + GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, + vSerialNumber FACTURA, + tc.rate IVA, + IF(isUeeMember AND eWithheld.id IS NULL,'','*') AUXILIAR, + n.serial SERIE, + tt.TIPOOPE, + n.issued FECHA_EX, + n.operated FECHA_OP, + n.invoicesCount NFACTICK, + n.supplierRef FACTURAEX, + TRUE L340, + (isSameCountry OR NOT isUeeMember) LRECT349, + n.cplusTrascendency472Fk TIPOCLAVE, + n.cplusTaxBreakFk TIPOEXENCI, + n.cplusSubjectOpFk TIPONOSUJE, + n.cplusInvoiceType472Fk TIPOFACT, + n.cplusRectificationTypeFk TIPORECTIF, + iis.cplusTerIdNifFk TERIDNIF, + s.nif AS TERNIF, + s.name AS TERNOM, + n.booked FECREGCON, + n.companyFk + + FROM newInvoiceIn n + JOIN newSupplier s + JOIN invoiceInTax it ON n.id = it.invoiceInFk + JOIN taxCode tc ON tc.id = it.taxCodeFk + JOIN taxType tt ON tt.id = tc.taxTypeFk + JOIN invoiceInSerial iis ON iis.code = tt.serial + JOIN expence e ON e.id = it.expenceFk AND e.taxTypeFk = tc.taxTypeFk + LEFT JOIN invoiceInTax hold ON hold.invoiceInFk = n.id + LEFT JOIN expence eWithheld ON eWithheld.id = hold.expenceFk AND eWithheld.isWithheld + WHERE tc.type != '-' + AND tc.isActive + GROUP BY tc.rate; + + -- Linea iva inversor sujeto pasivo + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EUROHABER, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + AUXILIAR, + SERIE, + TIPOOPE, + FECHA_EX, + FECHA_OP, + NFACTICK, + FACTURAEX, + L340, + LRECT349, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + TERIDNIF, + TERNIF, + TERNOM, + empresa_id + ) + + SELECT + vBookNumber ASIEN, + n.booked FECHA, + tcLink.code SUBCTA, + s.supplierAccount CONTRA, + ROUND(tcLink.rate/100*SUM(it.taxableBase) + 0.0001,2) EUROHABER, + ROUND(SUM(it.taxableBase),2) BASEEURO, + GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, + vSerialNumber FACTURA, + tcLink.rate IVA, + '*' AUXILIAR, + n.serial SERIE, + tt.TIPOOPE, + n.issued FECHA_EX, + n.operated FECHA_OP, + n.invoicesCount NFACTICK, + n.supplierRef FACTURAEX, + FALSE L340, + (isSameCountry OR NOT isUeeMember) LRECT349, + 1 TIPOCLAVE, + n.cplusTaxBreakFk TIPOEXENCI, + n.cplusSubjectOpFk TIPONOSUJE, + n.cplusInvoiceType472Fk TIPOFACT, + n.cplusRectificationTypeFk TIPORECTIF, + iis.cplusTerIdNifFk TERIDNIF, + s.nif AS TERNIF, + s.name AS TERNOM, + n.companyFk + + FROM newInvoiceIn n + JOIN newSupplier s + JOIN invoiceInTax it ON n.id = it.invoiceInFk + JOIN taxCode tc ON tc.id = it.taxCodeFk + JOIN taxType tt ON tt.id = tc.taxTypeFk + JOIN invoiceInSerial iis ON iis.code = tt.serial + JOIN taxCode tcLink ON tcLink.linkFk = tc.linkFk AND tc.id != tcLink.id + JOIN expence e ON e.id = it.expenceFk AND e.taxTypeFk = tc.taxTypeFk + WHERE tc.isActive + GROUP BY tcLink.rate, e.id; + + -- Iva Importacion pendiente + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONCEPTO, + EUROHABER,-- EURODEBE + SERIE, + empresa_id) + + SELECT + vBookNumberPlus1, + a.booked, + '4700000999', + n.conceptWithSupplier, + ROUND(SUM(iii.amount * (tc.rate/100)),2) eurohaber, + n.serial, + n.companyFk + FROM newInvoiceIn n + JOIN invoiceInIntrastat iii ON n.id = iii.invoiceInFk + JOIN intrastat ii ON ii.id = iii.intrastatFk + JOIN taxCode tc ON tc.id = ii.taxCodeFk + JOIN invoiceInAwb iia ON iia.invoiceInFk = iii.invoiceInFk + JOIN awb a ON a.id = iia.awbFk + HAVING eurohaber IS NOT NULL; + + + -- Linea iva importacion extracomunitaria + + SET @cont:=1; + SET @total:=0; + SET @base:=2; + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + AUXILIAR, + SERIE, + FECHA_EX, + FECHA_OP, + FACTURAEX, + NFACTICK, + L340, + LDIFADUAN, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + TERIDNIF, + TERNIF, + TERNOM, + empresa_id, + FECREGCON + ) + + SELECT + vBookNumberPlus1 ASIEN, + x.FECHA, + x.SUBCTA, + x.CONTRA, + IF (n.isSameCountry OR NOT s.isUeeMember, + x.EURODEBE, + NULL + ) EURODEBE, + x.BASEEURO, + x.CONCEPTO, + vSerialNumber FACTURA, + x.IVA, + '*' AUXILIAR, + x.SERIE, + x.FECHA_EX, + x.FECHA_OP, + x.dua FACTURAEX, + n.invoicesCount NFACTICK, + IF(@total:=@total + x.EURODEBE AND @cont:=@cont + 1 ,1,1) L340, + TRUE LDIFADUAN, + x.TIPOCLAVE, + n.cplusTaxBreakFk TIPOEXENCI, + n.cplusSubjectOpFk TIPONOSUJE, + 5 TIPOFACT, + n.cplusRectificationTypeFk TIPORECTIF, + x.TERIDNIF, + x.TERNIF, + x.TERNOM, + n.companyFk, + IFNULL(x.FECREGCON,n.booked) FECREGCON + + FROM newInvoiceIn n + JOIN newSupplier s + JOIN ( + SELECT + -- CONCAT('COMPRA s/fra ',sref,':',LEFT(p.Proveedor, 10)) + CONCAT('COMPRA s/fra ',ii.supplierRef,':',LEFT(s.name, 10)) CONCEPTO, + tc.code SUBCTA, + s.account CONTRA, + tc.rate IVA, + ROUND(sum(b.buyingValue * b.quantity / intraSub.intrastatSum * taxSub.amount)*(tc.rate/100),2) EURODEBE, + ROUND(sum(b.buyingValue * b.quantity / intraSub.intrastatSum * taxSub.amount),2) BASEEURO, + ii.serial SERIE, + e.supplierFk, + iia.dua, + iis.cplusTerIdNifFk TERIDNIF, + s.nif AS TERNIF, + s.name AS TERNOM, + ii.booked FECREGCON, + ii.cplusTrascendency472Fk TIPOCLAVE, + a.issued FECHA_EX, + a.operated FECHA_OP, + a.booked FECHA + FROM invoiceInAwb iia + JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = iia.invoiceInFk + JOIN awb a ON a.id = iia.awbFk + JOIN invoiceIn ii ON ii.id = iie.invoiceInFk + JOIN invoiceInSerial iis ON iis.code = ii.serial + JOIN buy b ON b.entryFk = iie.entryFk + JOIN item i ON i.id = b.itemFk + JOIN ( + SELECT + i.intrastatFk, + sum(b.buyingValue * b.quantity) as intrastatSum + FROM buy b + JOIN item i ON i.id = b.itemFk + JOIN invoiceInEntry iie + ON iie.entryFk = b.entryFk + JOIN invoiceInAwb iia + ON iia.invoiceInFk = iie.invoiceInAwbFk + JOIN awb aw ON aw.id =iia.awbFk + WHERE iie.percentage AND iia.invoiceInFk = vInvoiceInId + GROUP BY i.intrastatFk + ) intraSub ON intraSub.intrastatFk = i.intrastatFk + JOIN ( + SELECT + iii.intrastatFk, + iii.amount, + intr.taxCodeFk + FROM invoiceInIntrastat iii + JOIN intrastat intr + ON intr.id = iii.intrastatFk + WHERE iii.invoiceInFk = vInvoiceInId + ) taxSub ON taxSub.intrastatFk = i.intrastatFk + JOIN taxCode tc ON tc.id = taxSub.taxCodeFk + JOIN entry e ON e.id = iie.entryFk + JOIN supplier s ON s.id = e.supplierFk + WHERE iie.invoiceInAwbFk = vInvoiceInId AND iie.percentage + GROUP BY e.supplierFk, taxSub.taxCodeFk + ) x + GROUP BY x.supplierFk, x.IVA; + + -- Actualizacion de la fecha de contabilizado y de operacion de las importaciones + UPDATE newInvoiceIn n + JOIN invoiceInEntry iie ON iie.invoiceInAwbFk = vInvoiceInId + JOIN invoiceIn ii ON ii.id = iie.invoiceInFk + SET ii.booked = IFNULL(ii.booked,n.booked), + ii.operated = IFNULL(ii.operated,n.issued); + + -- Actualización del registro original + UPDATE invoiceIn + SET + serialNumber = vSerialNumber, + isBooked = TRUE + WHERE + id = vInvoiceInId; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceInBookingMain` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceInBookingMain`(vInvoiceInId INT) +BEGIN + DECLARE vTotalAmount DECIMAL(10,2); + DECLARE vBookNumber,vSerialNumber INT; + + CALL invoiceInBookingCommon(vInvoiceInId,vSerialNumber); + + SELECT MAX(ASIEN) + 1 + INTO vBookNumber + FROM vn2008.XDiario; + + SELECT SUM(iit.taxableBase * IF(i.serial = 'R', 1 +(tc.rate/100),1)) + INTO vTotalAmount + FROM newInvoiceIn i + JOIN invoiceInTax iit ON iit.invoiceInFk = i.id + JOIN taxCode tc ON iit.taxCodeFk = tc.id; + + -- Apunte del proveedor + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + EUROHABER, + CONCEPTO, + NFACTICK, + empresa_id) + SELECT + vBookNumber, + n.booked, + s.supplierAccount, + vTotalAmount, + n.conceptWithSupplier, + n.invoicesCount, + n.companyFk + FROM newInvoiceIn n + JOIN newSupplier s; + + -- ----------------------------------------------------------- Linea de Gastos + INSERT INTO vn2008.XDiario ( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + EUROHABER, + CONCEPTO, + NFACTICK, + empresa_id + ) + SELECT + vBookNumber ASIEN, + n.booked FECHA, + if( + e.isWithheld, + LPAD(RIGHT(s.supplierAccount ,5),10,iit.expenceFk), + iit.expenceFk + ) SUBCTA, + s.supplierAccount CONTRA, + if( + e.isWithheld, + NULL, + ABS(ROUND(SUM(iit.taxableBase),2)) + ) EURODEBE, + if( + e.isWithheld, + ABS(ROUND(SUM(iit.taxableBase),2)), + NULL + ) EUROHABER, + n.conceptWithSupplier CONCEPTO, + n.invoicesCount NFACTICK, + n.companyFk empresa_id + FROM newInvoiceIn n + JOIN newSupplier s + JOIN invoiceInTax iit ON iit.invoiceInFk = n.id + JOIN taxCode tc ON tc.id = iit.taxCodeFk + JOIN expence e ON e.id = iit.expenceFk AND e.taxTypeFk = tc.taxTypeFk + WHERE iit.expenceFk != 5660000002 + GROUP BY iit.expenceFk; + + + -- -------------------------------------------------------------------- + -- ------- Lineas de IVA --------------- + -- -------------------------------------------------------------------- + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EURODEBE, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + AUXILIAR, + SERIE, + TIPOOPE, + FECHA_EX, + FECHA_OP, + NFACTICK, + FACTURAEX, + L340, + LRECT349, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + TERIDNIF, + TERNIF, + TERNOM, + FECREGCON, + empresa_id + ) + SELECT vBookNumber ASIEN, + n.booked FECHA, + tc.code SUBCTA, + s.supplierAccount CONTRA, + SUM(ROUND(tc.rate/100*it.taxableBase + 0.0001,2)) EURODEBE, + SUM(it.taxableBase) BASEEURO, + GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, + vSerialNumber FACTURA, + tc.rate IVA, + IF(isUeeMember AND eWithheld.id IS NULL,'','*') AUXILIAR, + n.serial SERIE, + tt.TIPOOPE, + n.issued FECHA_EX, + n.operated FECHA_OP, + n.invoicesCount NFACTICK, + n.supplierRef FACTURAEX, + TRUE L340, + (isSameCountry OR NOT isUeeMember) LRECT349, + n.cplusTrascendency472Fk TIPOCLAVE, + n.cplusTaxBreakFk TIPOEXENCI, + n.cplusSubjectOpFk TIPONOSUJE, + n.cplusInvoiceType472Fk TIPOFACT, + n.cplusRectificationTypeFk TIPORECTIF, + iis.cplusTerIdNifFk TERIDNIF, + s.nif AS TERNIF, + s.name AS TERNOM, + n.booked FECREGCON, + n.companyFk + + FROM newInvoiceIn n + JOIN newSupplier s + JOIN invoiceInTax it ON n.id = it.invoiceInFk + JOIN taxCode tc ON tc.id = it.taxCodeFk + JOIN taxType tt ON tt.id = tc.taxTypeFk + JOIN invoiceInSerial iis ON iis.code = tt.serial + JOIN expence e ON e.id = it.expenceFk AND e.taxTypeFk = tc.taxTypeFk + LEFT JOIN + (SELECT eWithheld.id + FROM invoiceInTax hold + JOIN expence eWithheld ON eWithheld.id = hold.expenceFk AND eWithheld.isWithheld + WHERE hold.invoiceInFk = 58262 LIMIT 1 + ) eWithheld ON TRUE + WHERE tc.type != '-' + AND tc.isActive + GROUP BY tc.rate; + + -- Linea iva inversor sujeto pasivo + + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EUROHABER, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + AUXILIAR, + SERIE, + TIPOOPE, + FECHA_EX, + FECHA_OP, + NFACTICK, + FACTURAEX, + L340, + LRECT349, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + TERIDNIF, + TERNIF, + TERNOM, + empresa_id + ) + + SELECT + vBookNumber ASIEN, + n.booked FECHA, + tcLink.code SUBCTA, + s.supplierAccount CONTRA, + ROUND(tcLink.rate/100*SUM(it.taxableBase) + 0.0001,2) EUROHABER, + ROUND(SUM(it.taxableBase),2) BASEEURO, + GROUP_CONCAT(DISTINCT e.`name` SEPARATOR ', ') CONCEPTO, + vSerialNumber FACTURA, + tcLink.rate IVA, + '*' AUXILIAR, + n.serial SERIE, + tt.TIPOOPE, + n.issued FECHA_EX, + n.operated FECHA_OP, + n.invoicesCount NFACTICK, + n.supplierRef FACTURAEX, + FALSE L340, + (isSameCountry OR NOT isUeeMember) LRECT349, + 1 TIPOCLAVE, + n.cplusTaxBreakFk TIPOEXENCI, + n.cplusSubjectOpFk TIPONOSUJE, + n.cplusInvoiceType472Fk TIPOFACT, + n.cplusRectificationTypeFk TIPORECTIF, + iis.cplusTerIdNifFk TERIDNIF, + s.nif AS TERNIF, + s.name AS TERNOM, + n.companyFk + + FROM newInvoiceIn n + JOIN newSupplier s + JOIN invoiceInTax it ON n.id = it.invoiceInFk + JOIN taxCode tc ON tc.id = it.taxCodeFk + JOIN taxType tt ON tt.id = tc.taxTypeFk + JOIN invoiceInSerial iis ON iis.code = tt.serial + JOIN taxCode tcLink ON tcLink.linkFk = tc.linkFk AND tc.id != tcLink.id + JOIN expence e ON e.id = it.expenceFk AND e.taxTypeFk = tc.taxTypeFk + WHERE tc.isActive + GROUP BY tcLink.rate, e.id; + +-- Actualización del registro original + UPDATE invoiceIn ii + JOIN newInvoiceIn ni ON ii.id = ni.id + SET + ii.serialNumber = vSerialNumber, + ii.isBooked = TRUE; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceMakeByClient` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceMakeByClient`(vClientFk INT, vSerial CHAR(1), vShipped DATE, vCompanyFk INT, OUT vInvoiceId INT) +BEGIN +/** + * Factura un ticket + * @param vTicketFk Id del ticket + * @param vSerial Serie de factura + * @return Id factura + */ + CALL invoiceFromClient(vShipped, vClientFk, vCompanyFk); + CALL invoiceOutMake(vSerial, CURDATE(), vInvoiceId); + + IF vSerial <> 'R' AND NOT ISNULL(vInvoiceId) AND vInvoiceId <> 0 THEN + CALL invoiceOutBooking(vInvoiceId); + INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(1, 3, vInvoiceId); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceMakeByTicket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceMakeByTicket`(vTicketFk INT, vSerial CHAR(1), OUT vInvoiceId INT) +BEGIN +/** + * Factura un ticket + * @param vTicketFk Id del ticket + * @param vSerial Serie de factura + * @return Id factura + */ + CALL invoiceFromTicket(vTicketFk); + CALL invoiceOutMake(vSerial, CURDATE(), vInvoiceId); + + IF vSerial <> 'R' AND NOT ISNULL(vInvoiceId) AND vInvoiceId <> 0 THEN + CALL invoiceOutBooking(vInvoiceId); + INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(1, 3, vInvoiceId); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceOutAgain` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutAgain`(IN vInvoiceRef VARCHAR(15)) +BEGIN + +/* Para tickets ya facturados, vuelve a repetir el proceso de facturación. +* +* @param vInvoice Numero de factura +*/ + + DECLARE vInvoice INT; + DECLARE vCountry INT; + DECLARE vTaxArea VARCHAR(15); + DECLARE vSpainCountryCode INT DEFAULT 1; + + SELECT id + INTO vInvoice + FROM invoiceOut + WHERE ref = vInvoiceRef; + + UPDATE invoiceOut + SET pdf = 0 + WHERE id = vInvoice; + + SELECT s.countryFk + INTO vCountry + FROM supplier s + JOIN invoiceOut io ON io.companyFk = s.id + WHERE io.id = vInvoice; + /* + SELECT IF( + c.isEqualizated + AND c.countryFk = vSpainCountryCode + AND i.taxAreaFk = 'NATIONAL', + 'EQU', + i.taxAreaFk + ) + INTO vTaxArea + FROM invoiceOutSerial i + JOIN invoiceOut io ON io.serial = i.code + JOIN client c ON c.id = io.clientFk + WHERE io.id = vInvoice; + */ + SELECT IF(a.isEqualizated + AND c.countryFk = vSpainCountryCode + AND i.taxAreaFk = 'NATIONAL', + 'EQU', + i.taxAreaFk) + INTO vTaxArea + FROM invoiceOutSerial i + JOIN invoiceOut io ON io.serial = i.code + JOIN ticket t ON t.refFk = io.ref + JOIN address a ON a.id = t.addressFk + JOIN client c ON c.id = t.clientFk + WHERE io.id = vInvoice + LIMIT 1; + + DROP TEMPORARY TABLE IF EXISTS ticketToInvoice; + + CREATE TEMPORARY TABLE ticketToInvoice + SELECT id + FROM ticket + WHERE refFk = vInvoiceRef; + + CALL invoiceExpenceMake(vInvoice); + CALL invoiceTaxMake(vInvoice,vCountry,vTaxArea); + + UPDATE invoiceOut io + JOIN ( + SELECT SUM(amount) AS total + FROM invoiceOutExpence + WHERE invoiceOutFk = vInvoice + ) base + JOIN ( + SELECT SUM(vat) AS total + FROM invoiceOutTax + WHERE invoiceOutFk = vInvoice + ) vat + SET io.amount = base.total + vat.total + WHERE io.id = vInvoice; + + CALL vn.invoiceOutBooking(vInvoice); + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceOutAgainDateRange` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutAgainDateRange`(IN vFirstDate DATE, IN vLastDate DATE) +BEGIN + + DECLARE done BOOL DEFAULT FALSE; + DECLARE vInvoice INT; + DECLARE vInvoiceRef VARCHAR(15); + DECLARE vContador INT DEFAULT 0; + + DECLARE rs CURSOR FOR + SELECT id, ref + FROM vn.invoiceOut + WHERE issued BETWEEN vFirstDate AND vLastDate + AND booked IS NULL; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + OPEN rs; + + FETCH rs INTO vInvoice, vInvoiceRef; + + WHILE NOT done DO + + CALL vn.invoiceOutAgain(vInvoiceRef); + + FETCH rs INTO vInvoice, vInvoiceRef; + + SET vContador = vContador + 1; + + IF vContador MOD 50 = 0 THEN + + SELECT CONCAT(vContador, ' de momento') AS FACTURAS_ASENTADAS; + + END IF; + END WHILE; + + CLOSE rs; + + SELECT CONCAT(vContador, ' total') AS FACTURAS_ASENTADAS; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceOutBooking` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutBooking`(IN vInvoice INT) +BEGIN + +/* Asienta la factura emitida +* +* param vInvoice factura_id +*/ + + DECLARE vBookNumber INT; + DECLARE vExpenceConcept VARCHAR(50); + DECLARE isUEENotSpain INT DEFAULT 1; + DECLARE vOldBookNumber INT; + + SELECT ASIEN + INTO vOldBookNumber + FROM vn2008.XDiario x + JOIN vn.invoiceOut io ON io.id = vInvoice + WHERE x.SERIE = io.serial + AND x.FACTURA = RIGHT(io.ref, LENGTH(io.ref) - 1) + LIMIT 1; + + DELETE + FROM vn2008.XDiario + WHERE ASIEN = vOldBookNumber; + + SELECT MAX(ASIEN) + 1 + INTO vBookNumber + FROM vn2008.XDiario; + + DROP TEMPORARY TABLE IF EXISTS rs; + CREATE TEMPORARY TABLE rs + SELECT + c.accountingAccount AS clientBookingAccount, + io.amount as totalAmount, + CONCAT('n/fra ', io.ref) as simpleConcept, + CONCAT('n/fra ', io.ref, ' ', c.name) as Concept, + io.serial AS SERIE, + io.issued AS FECHA_EX, + opDate.FECHA_OP, + io.issued AS FECHA, + 1 AS NFACTICK, + IF(ic.correctingFk,'D','') AS TIPOOPE, + io.cplusTrascendency477Fk AS TIPOCLAVE, + io.cplusTaxBreakFk AS TIPOEXENCI, + io.cplusSubjectOpFk AS TIPONOSUJE, + io.cplusInvoiceType477Fk AS TIPOFACT, + ic.cplusRectificationTypeFk AS TIPORECTIF, + io.companyFk, + RIGHT(io.ref, LENGTH(io.ref) - 1) AS invoiceNum, + IF(ct.CEE = 0, 1, IF(ct.CEE = isUEENotSpain,2,4)) AS TERIDNIF, + CONCAT(IF(ct.CEE = isUEENotSpain,ct.code,''),c.fi) AS TERNIF, + c.socialName AS TERNOM, + ior.serial AS SERIE_RT, + RIGHT(ior.ref, LENGTH(ior.ref) - 1) AS FACTU_RT, + ior.issued AS FECHA_RT, + IF(ior.id,TRUE,FALSE) AS RECTIFICA + + FROM invoiceOut io + JOIN ( + SELECT MAX(shipped) as FECHA_OP + FROM ticket t + JOIN invoiceOut io ON io.ref = t.refFk + WHERE io.id = vInvoice ) opDate + JOIN invoiceOutSerial ios ON ios.code = io.serial + JOIN client c ON c.id = io.clientFk + JOIN country ct ON ct.id = c.countryFk + LEFT JOIN invoiceCorrection ic ON ic.correctingFk = io.id + LEFT JOIN invoiceOut ior ON ior.id = ic.correctedFk + WHERE io.id = vInvoice; + + -- Linea del cliente + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + EURODEBE, + CONCEPTO, + FECHA_EX, + FECHA_OP, + empresa_id + ) + SELECT + vBookNumber AS ASIEN, + rs.FECHA, + rs.clientBookingAccount AS SUBCTA, + rs.totalAmount AS EURODEBE, + rs.simpleConcept AS CONCEPTO, + rs.FECHA_EX, + rs.FECHA_OP, + rs.companyFk AS empresa_id + FROM rs; + + -- Lineas de gasto + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EUROHABER, + CONCEPTO, + FECHA_EX, + FECHA_OP, + empresa_id + ) + SELECT + vBookNumber AS ASIEN, + rs.FECHA, + ioe.expenceFk AS SUBCTA, + rs.clientBookingAccount AS CONTRA, + ioe.amount AS EUROHABER, + rs.Concept AS CONCEPTO, + rs.FECHA_EX, + rs.FECHA_OP, + rs.companyFk AS empresa_id + FROM rs + JOIN invoiceOutExpence ioe + WHERE ioe.invoiceOutFk = vInvoice; + + SELECT GROUP_CONCAT(`name` SEPARATOR ',') + INTO vExpenceConcept + FROM expence e + JOIN invoiceOutExpence ioe ON ioe.expenceFk = e.id + WHERE ioe.invoiceOutFk = vInvoice; + + -- Lineas de IVA + INSERT INTO vn2008.XDiario( + ASIEN, + FECHA, + SUBCTA, + CONTRA, + EUROHABER, + BASEEURO, + CONCEPTO, + FACTURA, + IVA, + RECEQUIV, + AUXILIAR, + SERIE, + SERIE_RT, + FACTU_RT, + RECTIFICA, + FECHA_RT, + FECHA_OP, + FECHA_EX, + TIPOOPE, + NFACTICK, + TERIDNIF, + TERNIF, + TERNOM, + L340, + TIPOCLAVE, + TIPOEXENCI, + TIPONOSUJE, + TIPOFACT, + TIPORECTIF, + empresa_id + ) + SELECT + vBookNumber AS ASIEN, + rs.FECHA, + iot.pgcFk AS SUBCTA, + rs.clientBookingAccount AS CONTRA, + iot.vat AS EUROHABER, + iot.taxableBase AS BASEEURO, + CONCAT(vExpenceConcept,' : ',rs.Concept) AS CONCEPTO, + rs.invoiceNum AS FACTURA, + IF(pe2.equFk,0,pgc.rate) AS IVA, + IF(pe2.equFk,0,pgce.rate) AS RECEQUIV, + IF(pgc.mod347,'','*') AS AUXILIAR, + rs.SERIE, + rs.SERIE_RT, + rs.FACTU_RT, + rs.RECTIFICA, + rs.FECHA_RT, + rs.FECHA_OP, + rs.FECHA_EX, + rs.TIPOOPE, + rs.NFACTICK, + rs.TERIDNIF, + rs.TERNIF, + rs.TERNOM, + pgc.mod340 AS L340, + pgc.cplusTrascendency477Fk AS TIPOCLAVE, + pgc.cplusTaxBreakFk as TIPOEXENCI, + rs.TIPONOSUJE, + rs.TIPOFACT, + rs.TIPORECTIF, + rs.companyFk AS empresa_id + FROM rs + JOIN invoiceOutTax iot + JOIN pgc ON pgc.code = iot.pgcFk + LEFT JOIN pgcEqu pe ON pe.vatFk = iot.pgcFk -- --------------- Comprueba si la linea es de iva con rec.equiv. asociado + LEFT JOIN pgc pgce ON pgce.code = pe.equFk + LEFT JOIN pgcEqu pe2 ON pe2.equFk = iot.pgcFk -- --------------- Comprueba si la linea es de rec.equiv. + WHERE iot.invoiceOutFk = vInvoice; + + UPDATE invoiceOut + SET booked = CURDATE() + WHERE id = vInvoice; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceOutBookingRange` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutBookingRange`() +BEGIN + +/* Reasentar facturas +*/ + + + DECLARE vInvoice INT; + DECLARE vContador INT DEFAULT 0; + + DECLARE done BOOL DEFAULT FALSE; + + DECLARE rs CURSOR FOR + SELECT io.id + FROM invoiceOut io + WHERE RIGHT(ref,7) BETWEEN 1724215 AND 1724224 + AND serial = 'T'; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + OPEN rs; + + FETCH rs INTO vInvoice; + + WHILE NOT done DO + + CALL invoiceOutBooking(vInvoice); + + FETCH rs INTO vInvoice ; + + SET vContador = vContador + 1; + + IF vContador MOD 50 = 0 THEN + + SELECT CONCAT(vContador, ' de momento') AS FACTURAS_ASENTADAS; + + END IF; + + END WHILE; + + CLOSE rs; + + SELECT CONCAT(vContador, ' total') AS FACTURAS_ASENTADAS; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceOutFix_BI_RE_IVA` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutFix_BI_RE_IVA`() +BEGIN + +DECLARE done BOOL DEFAULT FALSE; +DECLARE vInvoice INT; + +DECLARE rs CURSOR FOR + SELECT factura_id + FROM vn2008.Facturas + WHERE Importe != BI7 + BI16 + RE4 + RE1 + IVA7 + IVA16 + AND Fecha >= '2017-07-01'; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +OPEN rs; + +FETCH rs INTO vInvoice; + +SELECT vInvoice, done; + +WHILE NOT done DO + + UPDATE invoiceOut io + JOIN ( + SELECT SUM(amount) AS total + FROM invoiceOutExpence + WHERE invoiceOutFk = vInvoice + ) base + JOIN ( + SELECT SUM(vat) AS total + FROM invoiceOutTax + WHERE invoiceOutFk = vInvoice + ) vat + SET io.amount = base.total + vat.total + WHERE io.id = vInvoice; + + UPDATE vn2008.Facturas + SET BI16 = 0, + BI7 = 0, + RE1 = 0, + RE4 = 0, + IVA7 = 0, + IVA16 = 0 + WHERE factura_id = vInvoice; + + UPDATE vn2008.Facturas f + JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id + SET f.BI16 = iot.taxableBase, f.IVA16 = iot.vat + WHERE f.factura_id = vInvoice + AND iot.pgcFk IN ('4770000021' ,'4770000215', '4770000002','4771000000','4770000000','4770000020'); + + UPDATE vn2008.Facturas f + JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id + SET f.RE4 = iot.vat + WHERE f.factura_id = vInvoice + AND iot.pgcFk = '4770000521'; + + UPDATE vn2008.Facturas f + JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id + SET f.BI7 = iot.taxableBase, f.IVA7 = iot.vat + WHERE f.factura_id = vInvoice + AND iot.pgcFk IN ('4770000010' ,'4770000101'); + + UPDATE vn2008.Facturas f + JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id + SET f.RE1 = iot.vat + WHERE f.factura_id = vInvoice + AND iot.pgcFk = '4770000110'; + +FETCH rs INTO vInvoice; + +END WHILE; + + +CLOSE rs; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceOutListByCompany` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutListByCompany`(vCompany INT, vStarted DATE, vEnded DATE) +BEGIN + +SELECT + c.socialName as RazonSocial, + c.fi as NIF, + io.ref as Factura, + io.serial as Serie, + io.issued as Fecha, + io.amount as Importe, + c.id as Id_Cliente, + iot.taxableBase as Base, + pgc.rate as Tipo, + iot.vat as Cuota, + pgc.name as Concepto + + FROM vn.invoiceOut io + JOIN vn.invoiceOutTax iot ON iot.invoiceOutFk = io.id + JOIN vn.client c ON c.id = io.clientFk + JOIN vn.pgc ON pgc.code = iot.pgcFk + WHERE io.companyFk = vCompany + AND io.issued BETWEEN vStarted AND vEnded + ORDER BY io.ref DESC; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceOutMake` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutMake`( + vSerial VARCHAR(255), + vInvoiceDate DATETIME, + OUT vNewInvoiceId INT) +BEGIN + +/* Creación de facturas emitidas. +* REQUIERE previamente tabla ticketToInvoice. +* +* @param vSerial, vInvoiceDate, vCompany, vClient +* +* @return vNewInvoiceId +*/ + + DECLARE vSpainCountryCode INT DEFAULT 1; + DECLARE vIsAnySaleToInvoice BOOL; + DECLARE vCountry TINYINT DEFAULT 1; + DECLARE vTaxArea VARCHAR(15); + DECLARE vNewRef VARCHAR(255); + DECLARE vWorker INT DEFAULT vn.getWorker(); + DECLARE vCompany INT; + DECLARE vClient INT; + DECLARE vCplusStandardInvoiceTypeFk INT DEFAULT 1; + DECLARE vCplusCorrectingInvoiceTypeFk INT DEFAULT 6; + DECLARE vCorrectingSerial VARCHAR(1) DEFAULT 'R'; + + SET vInvoiceDate = IFNULL(vInvoiceDate,CURDATE()); + + SELECT t.clientFk, t.companyFk + INTO vClient, vCompany + FROM ticketToInvoice tt + JOIN ticket t ON t.id = tt.id + LIMIT 1; + + SELECT countryFk + INTO vCountry + FROM supplier + WHERE id = vCompany; + + SELECT IF(a.isEqualizated + AND c.countryFk = vSpainCountryCode + AND i.taxAreaFk = 'NATIONAL', + 'EQU', + i.taxAreaFk) + INTO vTaxArea + FROM invoiceOutSerial i + JOIN ticketToInvoice tti + JOIN ticket t ON t.id = tti.id + JOIN address a ON a.id = t.addressFk + JOIN client c ON c.id = t.clientFk + WHERE i.code = vSerial + LIMIT 1; + + INSERT INTO dailyTaskLog(state) VALUES('invoiceOutMake 1: START'); + + START TRANSACTION; + + -- Elimina tickets sense moviments + UPDATE ticket t + JOIN ticketToInvoice ti ON ti.id = t.id + LEFT JOIN sale s ON s.ticketFk = ti.id + SET t.shipped = '2000-02-01 00:00:00' + WHERE s.id IS NULL; + + INSERT INTO dailyTaskLog(state) VALUES('invoiceOutMake 1.1'); + + -- Eliminem els tickets que no han de ser facturats + DELETE ti.* + FROM ticketToInvoice ti + JOIN ticket t ON t.id = ti.id + JOIN client c ON c.id = t.clientFk + WHERE YEAR(t.shipped) < 2001 + OR c.isTaxDataChecked = FALSE; + INSERT INTO dailyTaskLog(state) VALUES('invoiceOutMake 1.2'); + + SELECT SUM(quantity * price * (100 - discount)/100) + INTO vIsAnySaleToInvoice + FROM sale s + JOIN ticketToInvoice t on t.id = s.ticketFk; + + INSERT INTO dailyTaskLog(state) VALUES('invoiceOutMake 1.3'); + + IF vIsAnySaleToInvoice THEN + + -- el trigger añade el siguiente Id_Factura correspondiente a la vSerial + -- el trigger añade el siguiente Id_Factura correspondiente a la vSerial + INSERT INTO invoiceOut + ( + ref, + serial, + issued, + clientFk, + dued, + companyFk, + cplusInvoiceType477Fk + ) + SELECT + 1, + vSerial, + vInvoiceDate, + vClient, + getDueDate(vInvoiceDate, dueDay), + vCompany, + IF(vSerial = vCorrectingSerial, vCplusCorrectingInvoiceTypeFk, vCplusStandardInvoiceTypeFk) + FROM client + WHERE id = vClient; + + + SET vNewInvoiceId = LAST_INSERT_ID(); + + SELECT ref + INTO vNewRef + FROM invoiceOut + WHERE id = vNewInvoiceId; + + UPDATE ticket t + JOIN ticketToInvoice ti ON ti.id = t.id + SET t.refFk = vNewRef; + + DROP TEMPORARY TABLE IF EXISTS tmp.updateInter; + CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY + SELECT s.id,ti.id ticket_id,vWorker Id_Trabajador + FROM ticketToInvoice ti + JOIN vn.ticketState ts ON ti.id = ts.ticket + JOIN state s + WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = vn.getAlert3State(ti.id); + + INSERT INTO vncontrol.inter(state_id,Id_Ticket,Id_Trabajador) + SELECT * FROM tmp.updateInter; + + INSERT INTO logTicket (action, userFk,originFk, description) + SELECT 'UPDATE',account.userGetId(),ti.id, CONCAT('CREA FACTURA ',vNewRef) + FROM ticketToInvoice ti; + + CALL invoiceExpenceMake(vNewInvoiceId); + CALL invoiceTaxMake(vNewInvoiceId,vCountry,vTaxArea); + + UPDATE invoiceOut io + JOIN ( + SELECT SUM(amount) AS total + FROM invoiceOutExpence + WHERE invoiceOutFk = vNewInvoiceId + ) base + JOIN ( + SELECT SUM(vat) AS total + FROM invoiceOutTax + WHERE invoiceOutFk = vNewInvoiceId + ) vat + SET io.amount = base.total + vat.total + WHERE io.id = vNewInvoiceId; + INSERT INTO dailyTaskLog(state) VALUES('invoiceOutMake 2: START'); + -- Retrocompatibilidad. Borrar al cambiar el informe de facturas + UPDATE vn2008.Facturas f + JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id + SET f.BI16 = iot.taxableBase, f.IVA16 = iot.vat + WHERE f.factura_id = vNewInvoiceId + AND iot.pgcFk IN ('4770000021' ,'4770000215', '4770000002','4771000000','4770000000','4770000020'); + + UPDATE vn2008.Facturas f + JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id + SET f.RE4 = iot.vat + WHERE f.factura_id = vNewInvoiceId + AND iot.pgcFk = '4770000521'; + + UPDATE vn2008.Facturas f + JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id + SET f.BI7 = iot.taxableBase, f.IVA7 = iot.vat + WHERE f.factura_id = vNewInvoiceId + AND iot.pgcFk IN ('4770000010' ,'4770000101'); + + UPDATE vn2008.Facturas f + JOIN invoiceOutTax iot ON iot.invoiceOutFk = f.factura_id + SET f.RE1 = iot.vat + WHERE f.factura_id = vNewInvoiceId + AND iot.pgcFk = '4770000110'; + END IF; + + + INSERT INTO dailyTaskLog(state) VALUES('invoiceOutMake 3: END'); + + DROP TEMPORARY TABLE `ticketToInvoice`; + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceOutTaxAndExpence` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutTaxAndExpence`() +BEGIN + +/* Para tickets ya facturados, vuelve a repetir el proceso de facturación. +* +* @param vInvoice Numero de factura +*/ + + + + DECLARE vInvoice INT; + DECLARE vInvoiceRef VARCHAR(15); + DECLARE vCountry INT; + DECLARE vTaxArea VARCHAR(15); + DECLARE vContador INT DEFAULT 0; + + DECLARE done BOOL DEFAULT FALSE; + + DECLARE rs CURSOR FOR + SELECT id,ref + FROM invoiceOut io + + WHERE issued >= '2017-07-01' + AND companyFk = 1381 + AND io.amount IS NULL + ; + + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + OPEN rs; + + FETCH rs INTO vInvoice ,vInvoiceRef; + + WHILE NOT done DO + + SELECT s.countryFk + INTO vCountry + FROM supplier s + JOIN invoiceOut io ON io.companyFk = s.id + WHERE io.id = vInvoice; + + SELECT IF(c.isEqualizated AND i.taxAreaFk = 'NATIONAL','EQU',i.taxAreaFk) + INTO vTaxArea + FROM invoiceOutSerial i + JOIN invoiceOut io ON io.serial = i.code + JOIN client c ON c.id = io.clientFk + WHERE io.id = vInvoice; + + DROP TEMPORARY TABLE IF EXISTS ticketToInvoice; + + CREATE TEMPORARY TABLE ticketToInvoice + SELECT id + FROM ticket + WHERE refFk = vInvoiceRef; + + CALL invoiceExpenceMake(vInvoice); + CALL invoiceTaxMake(vInvoice,vCountry,vTaxArea); + + FETCH rs INTO vInvoice ,vInvoiceRef; + + SET vContador = vContador + 1; + + IF vContador MOD 50 = 0 THEN + + SELECT CONCAT(vContador, ' de momento') AS FACTURAS_ASENTADAS; + + END IF; + + END WHILE; + + CLOSE rs; + + SELECT CONCAT(vContador, ' total') AS FACTURAS_ASENTADAS; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceTaxMake` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceTaxMake`(IN vInvoice INT, IN vCountry INT, IN vTaxArea VARCHAR(15)) +BEGIN +/* Inserta los registros de iva de la factura emitida +* REQUIERE tabla ticketToInvoice +* +* @param vInvoice Id de la factura +*/ + + DELETE FROM invoiceOutTax + WHERE invoiceOutFk = vInvoice; + + INSERT INTO invoiceOutTax( + invoiceOutFk, + pgcFk, + taxableBase, + vat + ) + SELECT vInvoice, + bp.pgcFk, + SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2) + ) taxableBase, + SUM(ROUND(s.quantity * s.price * (100 - s.discount)/100,2) + ) * pgc.rate / 100 + FROM ticketToInvoice t + JOIN sale s ON s.ticketFk = t.id + JOIN item i ON i.id = s.itemFk + JOIN itemTaxCountry itc + ON itc.itemFk = i.id AND itc.countryFk = vCountry + JOIN bookingPlanner bp + ON bp.countryFk = vCountry + AND bp.taxAreaFk = vTaxArea + AND bp.taxClassFk = itc.taxClassFk + JOIN pgc ON pgc.code = bp.pgcFk + GROUP BY pgc.code + HAVING taxableBase != 0; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `itemTagArrangedUpdate` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `itemTagArrangedUpdate`(IN vItem BIGINT) +BEGIN +/** + * Actualiza la tabla itemTagArranged + * + * @param vItem El Id_item de toda la vida. Si es cero, equivale a todos. + **/ + DELETE + FROM itemTagArranged + WHERE vItem IS NULL + OR vItem = itemFk; + + INSERT INTO itemTagArranged(itemFk) + SELECT id + FROM item + WHERE vItem IS NULL + OR vItem = id; + + REPLACE itemTagArranged + SELECT i.id, + 'Medida' as tag1, + LEFT(i.size,15) as val1, + 'Color' as tag2, + LEFT(ink.`name`,15) as val2, + 'Categoria' as tag3, + LEFT(i.category,15) as val3, + 'Productor' as tag4, + LEFT(p.`name`,15) as val4, + 'Tallos' as tag5, + i.stems as val5, + 'Origen' as tag6, + o.code as val6, + i.description + FROM item i + LEFT JOIN itemTagged it ON it.itemFk = i.id + LEFT JOIN ink on ink.id = i.inkFk + JOIN origin o ON o.id = i.originFk + LEFT JOIN producer p ON p.id = i.producerFk + WHERE it.itemFk IS NULL + AND (vItem IS NULL OR vItem = i.id); + + CALL itemTagUpdatePriority(vItem); + + UPDATE itemTagArranged ita + JOIN itemTag it ON it.itemFk = ita.itemFk + JOIN tag t ON t.id = it.tagFk + SET tag1 = t.name, val1 = it.value + WHERE it.priority = 1 + AND (vItem IS NULL OR vItem = it.itemFk); + + UPDATE itemTagArranged ita + JOIN itemTag it ON it.itemFk = ita.itemFk + JOIN tag t ON t.id = it.tagFk + SET tag2 = t.name, val2 = it.value + WHERE it.priority = 2 + AND (vItem IS NULL OR vItem = it.itemFk); + + UPDATE itemTagArranged ita + JOIN itemTag it ON it.itemFk = ita.itemFk + JOIN tag t ON t.id = it.tagFk + SET tag3 = t.name, val3 = it.value + WHERE it.priority = 3 + AND (vItem IS NULL OR vItem = it.itemFk); + + UPDATE itemTagArranged ita + JOIN itemTag it ON it.itemFk = ita.itemFk + JOIN tag t ON t.id = it.tagFk + SET tag4 = t.name, val4 = it.value + WHERE it.priority = 4 + AND (vItem IS NULL OR vItem = it.itemFk); + + UPDATE itemTagArranged ita + JOIN itemTag it ON it.itemFk = ita.itemFk + JOIN tag t ON t.id = it.tagFk + SET tag5 = t.name, val5 = it.value + WHERE it.priority = 5 + AND (vItem IS NULL OR vItem = it.itemFk); + + UPDATE itemTagArranged ita + JOIN itemTag it ON it.itemFk = ita.itemFk + JOIN tag t ON t.id = it.tagFk + SET tag6 = t.name, val6 = it.value + WHERE it.priority = 6 + AND (vItem IS NULL OR vItem = it.itemFk); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `itemTagUpdatePriority` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `itemTagUpdatePriority`(IN vItem INT) +BEGIN +/* +* Recalcula las prioridades de articleTag +* +* @param vItem Id_Article. Si es 0, lo recalcula todo +*/ + + SET vItem = IFNULL(vItem,0); + + SET @p := 0; + SET @a := 0; + + UPDATE itemTag a + JOIN ( + SELECT + id, + @p := IF(itemFk = @a, @p, 0) + 1 as NewPriority, + @a := itemFk + FROM itemTag + WHERE vItem IS NULL + OR vItem = itemFk + ORDER BY itemFk, priority + ) sub ON sub.id = a.id + SET a.priority = NewPriority; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `itemTagUpdatePriority_launcher` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `itemTagUpdatePriority_launcher`() +BEGIN + + CALL vn.itemTagUpdatePriority(0); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `logAdd` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `logAdd`(vOriginFk INT, vActionCode VARCHAR(45), vTypeCode VARCHAR(45), vDescription TEXT) +BEGIN +/** + * Guarda las acciones realizadas por el usuario + * + * @param vOriginFk Id del registro de origen + * @param vActionCode Código de la acción {insert | delete | update} + * @param vTypeCode Código que referencia a la tabla. + * @param descripcion Descripción de la acción realizada por el usuario + */ + DECLARE vTableName VARCHAR(45); + + SELECT logTableName INTO vTableName + FROM vn.logType + WHERE `code` = vTypeCode; + + IF ISNULL(vTableName) THEN + CALL util.throw('CODE_NOT_FOUND'); + END IF; + + SET @qryLog := CONCAT( + 'INSERT INTO ', vTableName, ' (originFk, userFk, action, description)', + ' VALUES (', vOriginFk, ', ', account.userGetId(), ', "', vActionCode, '", "', vDescription, '")' + ); + + PREPARE stmt FROM @qryLog; + EXECUTE stmt; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `logShow` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `logShow`(vOriginFk INT, vTypeCode VARCHAR(45)) +BEGIN +/** + * Muestra las acciones realizadas por el usuario + * + * @param vOriginFk Id del registro de origen + * @param vTypeCode Código que referencia a la tabla. + */ + DECLARE vTableName VARCHAR(45); + + SELECT logTableName INTO vTableName + FROM vn.logType + WHERE `code` = vTypeCode; + + IF ISNULL(vTableName) THEN + CALL util.throw('CODE_NOT_FOUND'); + END IF; + + SET @qryLog := CONCAT( + 'SELECT ot.id, ot.originFk, ot.userFk, u.name, ot.action, ot.creationDate, ot.description FROM ', vTableName, ' AS ot', + ' INNER JOIN account.user u ON u.id = ot.userFk', + ' WHERE ot.originFk = ', vOriginFk, ' ORDER BY ot.creationDate DESC' + ); + + PREPARE stmt FROM @qryLog; + EXECUTE stmt; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mergeTicketUnattended` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `mergeTicketUnattended`(IN vMainTicket INT(11), IN hasSameAgency BOOLEAN) +BEGIN + + DECLARE isBilled BOOLEAN; + DECLARE arrayTickets VARCHAR(255); + + SELECT Factura IS NOT NULL INTO isBilled FROM vn2008.Tickets WHERE Id_Ticket = vMainTicket; + + IF NOT isBilled THEN + + SELECT GROUP_CONCAT(distinct T.Id_Ticket) INTO arrayTickets + FROM vn2008.Tickets T LEFT JOIN vn.ticketState ts ON T.Id_Ticket = ts.ticket + JOIN vn2008.Tickets ticketOriginal ON ticketOriginal.Id_Ticket = vMainTicket + AND T.empresa_id = ticketOriginal.empresa_id + AND T.Id_Consigna = ticketOriginal.Id_Consigna + AND DATE(T.Fecha) = DATE(ticketOriginal.Fecha) + AND T.warehouse_id = ticketOriginal.warehouse_id + AND IF(hasSameAgency <> 0,T.Id_Agencia = ticketOriginal.Id_Agencia,TRUE) + LEFT JOIN vn.ticketState tsOriginal ON ticketOriginal.Id_Ticket = tsOriginal.ticket + WHERE ts.alertLevel < 3 + AND T.Factura IS NULL + AND T.Anotadoencaja = FALSE + AND T.Id_Ticket <> vMainTicket + AND ts.alertLevel = tsOriginal.alertLevel; + + CALL mergeTicketWithArray(vMainTicket,arrayTickets); + + END IF; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `mergeTicketWithArray` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `mergeTicketWithArray`(IN vMainTicket INT(11), IN arrayTickets VARCHAR(50)) +BEGIN + + DECLARE isBilled BOOLEAN; + DECLARE messageLog VARCHAR(50); + DECLARE company INT; + DECLARE messageForSplit VARCHAR(255); + DECLARE vMainSplit INT; + DECLARE worker INT(3); + + SELECT Factura IS NOT NULL INTO isBilled FROM vn2008.Tickets WHERE Id_Ticket = vMainTicket; + + IF NOT isBilled THEN + + SELECT Id_Trabajador INTO worker from vn2008.Trabajadores where user_id = account.userGetId(); + IF worker IS NULL THEN + SET worker = 20; + END IF; + + DROP TEMPORARY TABLE IF EXISTS vn2008.Tickets_to_fusion; + + -- He usado el sql_query porque da error la variable strId_Tickets puesta dentro del IN() + CALL hedera.sql_query(sql_printf(' + CREATE TEMPORARY TABLE vn2008.Tickets_to_fusion + SELECT Id_Ticket, Localizacion + FROM vn2008.Tickets T + WHERE Id_Ticket IN (%s);',arrayTickets)); + + INSERT INTO vn2008.ticket_observation (Id_Ticket,observation_type_id,text) + SELECT vMainTicket,observation_type_id,CONCAT(' Ticket ', Id_Ticket, ':' , tco.text, '. ') + FROM vn2008.Tickets_to_fusion tf + INNER JOIN vn2008.ticket_observation tco USING(Id_Ticket) + ON DUPLICATE KEY UPDATE `text` = CONCAT(ticket_observation.`text`,CONCAT(' Ticket ', VALUES(Id_Ticket), ':' , VALUES(`text`), '. ')); + + UPDATE vn2008.Movimientos M + JOIN vn2008.Tickets_to_fusion USING(Id_Ticket) + SET M.Id_Ticket = vMainTicket; + + UPDATE vn2008.expeditions M + JOIN vn2008.Tickets_to_fusion t ON t.Id_Ticket = M.ticket_id + SET M.ticket_id = vMainTicket; + + UPDATE vn2008.Tickets + SET Bultos = (SELECT COUNT(*) FROM vn2008.expeditions WHERE ticket_id = vMainTicket AND EsBulto) + WHERE Id_Ticket = vMainTicket; + + UPDATE vn2008.Tickets + JOIN vn2008.Tickets_to_fusion USING(Id_Ticket) + SET Fecha = TIMESTAMPADD(YEAR,-1 * (YEAR(Fecha)-2000), Fecha); + + UPDATE vn2008.Tickets_dits ts + JOIN vn2008.Tickets_to_fusion t USING(Id_Ticket) + SET ts.Id_Ticket = vMainTicket; + + UPDATE vn2008.Tickets + SET Localizacion = CONCAT(Tickets.Localizacion,' ',IFNULL((SELECT GROUP_CONCAT(Localizacion SEPARATOR ' ') FROM vn2008.Tickets_to_fusion),'')) + WHERE Id_Ticket = vMainTicket; + + UPDATE vn2008.Splits s + RIGHT JOIN vn2008.Tickets_to_fusion t USING(Id_Ticket) + SET s.Id_Ticket = vMainTicket; + + IF (SELECT COUNT(*) FROM vn2008.Splits WHERE Id_Ticket=vMainTicket) > 1 THEN + + SELECT Id_Split INTO vMainSplit FROM vn2008.Splits WHERE Id_Ticket = vMainTicket LIMIT 1; + + SELECT group_concat(Notas,',') INTO messageForSplit FROM vn2008.Splits WHERE Id_Ticket = vMainTicket; + UPDATE vn2008.Splits SET Notas = messageForSplit WHERE Id_Split=vMainSplit; + UPDATE vn2008.Split_lines sl JOIN vn2008.Splits s USING (Id_Split) SET sl.Id_Split=vMainSplit WHERE Id_Ticket=vMainTicket; + DELETE FROM vn2008.Splits WHERE Id_Ticket=vMainTicket AND Id_Split<>vMainSplit; + END IF; + + SELECT GROUP_CONCAT(Id_Ticket SEPARATOR ',') into messageLog FROM vn2008.Tickets_to_fusion; + CALL vn2008.Ditacio(vMainTicket,'Fusion','T',worker,messageLog,NULL); + + DELETE ts FROM vn2008.Tickets_state ts JOIN vn2008.Tickets_to_fusion t USING(Id_Ticket); + /* + UPDATE vncontrol.inter M + JOIN vn2008.Tickets_to_fusion USING(Id_Ticket) + SET M.Id_Ticket = vMainTicket; + */ + END IF; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `noticeSend` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `noticeSend`(vCategoryKey VARCHAR(50), vSender INT, vRecipient INT, vBody TEXT) +BEGIN + DECLARE vCategoryId INT; + DECLARE vIsEnabled TINYINT(1); + + -- Obtenemos los datos de la categoría + SELECT c.id, c.isEnabled INTO vCategoryId, vIsEnabled FROM vn.noticeCategory c WHERE keyName = vCategoryKey; + + IF vn.noticeHasActive(vCategoryKey, vRecipient) AND vIsEnabled THEN + + INSERT INTO vn.noticeInbox (noticeCategoryFk, senderFk, recipientFk, body) + VALUES (vCategoryId, vSender, vRecipient, vBody); + + SELECT vSender, vRecipient; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `observationAdd` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `observationAdd`(vOriginFk INT, vTableCode VARCHAR(45), vDescription TEXT) +BEGIN +/** + * Guarda las observaciones realizadas por el usuario + * + * @param vOriginFk Id del registro de origen + * @param vTypeCode Código que referencia a la tabla. + * @param descripcion Texto de la observacion + */ + DECLARE vTableName VARCHAR(45); + + SET vTableName = CONCAT(vTableCode,'Observation'); + + IF ISNULL(vTableName) THEN + CALL util.throw('CODE_NOT_FOUND'); + END IF; + + SET @qryLog := CONCAT( + 'INSERT INTO ', vTableName, ' (originFk, userFk, description)', + ' VALUES (', vOriginFk, ', ', account.userGetId(), ', "', vDescription, '")' + ); + + PREPARE stmt FROM @qryLog; + EXECUTE stmt; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `printTrolleyLabel` */; +ALTER DATABASE `vn` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `printTrolleyLabel`(vTicket INT, vPrinter INT, vReport INT) +BEGIN +/** + * Inserta en la cola de impresion una nueva etiqueta de carro, para el sacador + * + * @param vTicket Numero del ticket + * @param vPrinter Numero de impresora + * @param vReport Numero del informe + **/ + DECLARE vlabelCount INT DEFAULT 0; + DECLARE PRIORITY INT DEFAULT 3; + DECLARE vWorker INT; + DECLARE vShipmentHour VARCHAR(10); + + SELECT getTicketTrolleyLabelCount(vTicket) INTO vLabelCount; + SELECT getUser() INTO vWorker; + SELECT CONCAT(getShipmentHour(vTicket),':00') INTO vShipmentHour; + + INSERT INTO printingQueue(printer + , priority + , report + , `text` + , worker + , text2 + , text3) + VALUES (vPrinter + , PRIORITY + , vReport + , vTicket + , vWorker + , vLabelCount + , vShipmentHour); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `refund` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `refund`(IN vMainTicket INT, OUT vNewTicket INT) +BEGIN + + DECLARE vCustomer MEDIUMINT; + DECLARE vNewDate DATE; + DECLARE vWarehouse TINYINT; + DECLARE vCompany MEDIUMINT; + DECLARE vAddress MEDIUMINT; + DECLARE vRefundAgencyMode INT DEFAULT 23; + + SELECT customer, TIMESTAMPADD(DAY, 1,shipment), warehouse, company, address + INTO vCustomer, vNewDate, vWarehouse, vCompany, vAddress + FROM ticket + WHERE id = vMainTicket; + + CALL ticketCreate(vCustomer, vNewDate, vWarehouse, vCompany, vAddress, vRefundAgencyMode,NULL,vNewDate,vNewTicket); + + INSERT INTO vn2008.Movimientos(Id_Ticket, Id_Article, Cantidad, Concepte, Preu, Descuento, PrecioFijado) + SELECT vNewTicket, Id_Article, - Cantidad, Concepte, Preu, Descuento, TRUE FROM vn2008.Movimientos WHERE Id_Ticket = vMainTicket; + SELECT vNewTicket; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `solunionRiskRequest` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `solunionRiskRequest`() +BEGIN + + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; + CREATE TEMPORARY TABLE tmp.client_list + (PRIMARY KEY (Id_Cliente)) + ENGINE = MEMORY + SELECT * FROM (SELECT cc.client Id_Cliente, ci.grade FROM vn.creditClassification cc + JOIN vn.creditInsurance ci ON cc.id = ci.creditClassification + WHERE dateEnd IS NULL + ORDER BY ci.creationDate DESC) t1 GROUP BY Id_Cliente; + + CALL vn2008.risk_vs_client_list(CURDATE()); + + SELECT + c.Id_Cliente, c.Cliente, c.Credito credito_vn, c.creditInsurance solunion, cast(r.risk as DECIMAL(10,0)) riesgo_vivo, + cast(c.creditInsurance - r.risk as decimal(10,0)) margen_vivo, + f.Consumo consumo_anual, c.Vencimiento, ci.grade + FROM + vn2008.Clientes c + JOIN tmp.risk r ON r.Id_Cliente = c.Id_Cliente + JOIN tmp.client_list ci ON c.Id_Cliente = ci.Id_Cliente + JOIN bi.facturacion_media_anual f ON c.Id_Cliente = f.Id_Cliente + GROUP BY Id_cliente; + + DROP TEMPORARY TABLE IF EXISTS tmp.risk; + DROP TEMPORARY TABLE IF EXISTS tmp.client_list; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `stockBuyed` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `stockBuyed`(vDate DATE) +BEGIN + DECLARE vVolume DECIMAL(10,2); + DECLARE vWarehouse INT DEFAULT 7; + + CALL stockTraslation(vDate); + + SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; + + INSERT INTO stockBuyed(user, buyed, `date`) + SELECT tr.user_id, SUM(0.6 * ( amount / c.packing ) * vn2008.cm3(Id_Compra))/vVolume buyed, vDate + FROM tmp_item i + JOIN vn2008.Articles a ON a.Id_Article = i.item_id + JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id + JOIN vn2008.reinos r ON r.id = t.reino_id + JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = t.Id_Trabajador + JOIN vn2008.t_item_last_buy ilb ON ilb.item_id = Id_Article AND ilb.warehouse_id = vWarehouse + JOIN vn2008.Compres c ON c.Id_compra = ilb.buy_id + WHERE r.display <> 0 + GROUP BY tr.Id_Trabajador + ON DUPLICATE KEY UPDATE buyed = VALUES(buyed); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `stockBuyedByWorker` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `stockBuyedByWorker`(vDate DATE, vWorker INT) +BEGIN + + DECLARE vVolume DECIMAL(10,2); + DECLARE vWarehouse INT DEFAULT 7; + CALL stockTraslation(vDate); + + SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; + + SELECT c.Id_Entrada, a.Id_Article, a.Article, c.Cantidad, (0.6 * ( amount / c.packing ) * vn2008.cm3(Id_Compra))/vVolume buyed + FROM tmp_item i + JOIN vn2008.Articles a ON a.Id_Article = i.item_id + JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id + JOIN vn2008.reinos r ON r.id = t.reino_id + JOIN vn2008.Trabajadores tr ON tr.Id_Trabajador = t.Id_Trabajador + JOIN vn2008.t_item_last_buy ilb ON ilb.item_id = a.Id_Article AND ilb.warehouse_id = vWarehouse + JOIN vn2008.Compres c ON c.Id_compra = ilb.buy_id + WHERE r.display <> 0 AND tr.user_id = vWorker; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `stockTraslation` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `stockTraslation`(vDate DATE) +BEGIN + /** + * Calcula el stock del vWarehouse desde FechaInventario hasta v_date + sin tener en cuenta las salidas del mismo dia vDate + para ver el transporte a reservar + **/ + + DECLARE vWarehouse INT DEFAULT 7; + + DELETE FROM stockBuyed WHERE `date` = vDate; + + DROP TEMPORARY TABLE IF EXISTS tmp_item; + CREATE TEMPORARY TABLE tmp_item + (UNIQUE INDEX i USING HASH (item_id)) + ENGINE = MEMORY + SELECT item_id, SUM(amount) amount FROM vn2008.item_entry_in + WHERE dat = vDate + AND warehouse_id = vWarehouse + GROUP BY item_id HAVING amount != 0; + + CALL `cache`.stock_refresh (FALSE); + + INSERT INTO tmp_item (item_id,amount) + SELECT item_id,s.amount FROM `cache`.stock s + WHERE warehouse_id = vWarehouse + ON DUPLICATE KEY UPDATE + amount = tmp_item.amount + VALUES(amount); + + CALL vn2008.item_last_buy_(vWarehouse,vDate); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketClosure` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosure`() +BEGIN +/** + * Realiza el cierre de todos los + * tickets de la table ticketClosure. + */ + + DECLARE vDone BOOL; + DECLARE vClientFk INT; + DECLARE vCredit INT; + DECLARE vPayMethod INT; + DECLARE vTicketFk INT; + DECLARE vIsToBeMailed BOOL; + DECLARE vIsTaxDataChecked BOOL; + DECLARE vCompanyFk INT; + DECLARE vDeliveryMethod INT; + DECLARE vAgencyFk INT; + DECLARE vAgencyModeFk INT; + DECLARE vWarehouseFk INT; + DECLARE vShipped DATE; + DECLARE vWarehouseVnh INT DEFAULT 7; + DECLARE vWarehouseFloramondo INT DEFAULT 40; + DECLARE vCompanyBlk INT DEFAULT 965; + DECLARE vCompanyCcs INT DEFAULT 69; + DECLARE vAgencyPackage INT DEFAULT 628; + DECLARE vPayMethodCard INT DEFAULT 5; + DECLARE vhasPackage BOOL DEFAULT 0; + DECLARE vPriority INT DEFAULT 1; + DECLARE vReportDeliveryNote INT DEFAULT 1; + DECLARE vReportInvoice INT DEFAULT 3; + DECLARE vNewPackageTicket INT; + DECLARE vNewInvoiceId INT; + + DECLARE cur CURSOR FOR + SELECT ticketFk FROM tmp.ticketClosure; + + -- DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + -- DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN + -- ROLLBACK; + -- RESIGNAL; + -- END; + + INSERT INTO dailyTaskLog(state) VALUES('ticketClosure START'); + + OPEN cur; + + proc: LOOP + SET vDone = FALSE; + SET vNewPackageTicket = 0; + + FETCH cur INTO vTicketFk; + + IF vDone THEN + LEAVE proc; + END IF; + + -- ticketClosure start + INSERT INTO dailyTaskLog(state) VALUES(CONCAT('ticketClosure: ', vTicketFk, ' START')); + SELECT 1; + SELECT + c.id, + c.credit, + c.paymentMethodFk, + c.isToBeMailed, + c.isTaxDataChecked, + t.companyFk, + IFNULL(aw.agencyType, a.deliveryMethod) AS deliveryMethod, + a.id AS agencyFk, + t.agencyModeFk, + t.warehouseFk, + t.shipped + INTO vClientFk, + vCredit, + vPayMethod, + vIsToBeMailed, + vIsTaxDataChecked, + vCompanyFk, + vDeliveryMethod, + vAgencyFk, + vAgencyModeFk, + vWarehouseFk, + vShipped + FROM ticket t + INNER JOIN `client` c ON c.id = t.clientFk + LEFT JOIN agencyMode a ON a.id = t.agencyModeFk + LEFT JOIN agencyWarehouse aw ON a.id = aw.agencyFk AND t.warehouseFk = aw.warehouseFk + WHERE t.id = vTicketFk; + SELECT 2; + -- Fusión de ticket + CALL mergeTicketUnattended(vTicketFk, TRUE); + IF vWarehouseFk = vWarehouseVnh OR vWareHouseFk = vWarehouseFloramondo THEN + SELECT 2.2; + -- Número de expediciones con cubos retornables + SELECT COUNT(*) INTO vhasPackage + FROM expedition e + JOIN package p ON p.itemFk = e.itemFk + WHERE e.ticketFk = vTicketFk + AND p.isPackageReturnable + LIMIT 1; + + IF vhasPackage THEN + + -- Si no existe un ticket de embalajes creamos uno, de lo contrario cogemos el actual + SELECT id INTO vNewPackageTicket + FROM ticket + WHERE companyFk = vCompanyCcs + AND agencyModeFk = vAgencyPackage + AND clientFk = vClientFk + AND shipped = CURDATE() + AND refFk IS NULL + LIMIT 1; + + IF ISNULL(vNewPackageTicket) OR vNewPackageTicket = 0 THEN + CALL ticketCreate(vClientFk, CURDATE(), vWarehouseFk, vCompanyCcs, '', vAgencyPackage, '', DATE_ADD(CURDATE(), INTERVAL 1 DAY), vNewPackageTicket); + END IF; + SELECT 2.3; + -- Retornables van al ticket de la empresa CCs + INSERT INTO movement (item, ticket, concept, amount, price, priceFixed) + (SELECT e.itemFk, vNewPackageTicket, i.name, COUNT(*) AS amount, getSpecialPrice(e.itemFk, vClientFk), 1 + FROM expedition e + JOIN item i ON i.id = e.itemFk + LEFT JOIN package p ON p.itemFk = i.id + WHERE e.ticketFk = vTicketFk AND p.isPackageReturnable + GROUP BY e.itemFk); + + END IF; + + -- No retornables o no catalogados + INSERT INTO movement (item, ticket, concept, amount, price, priceFixed) + (SELECT e.itemFk, vTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.itemFk, vClientFk), 1 + FROM expedition e + JOIN item i ON i.id = e.itemFk + LEFT JOIN package p ON p.itemFk = i.id + WHERE e.ticketFk = vTicketFk AND IFNULL(p.isPackageReturnable, 0) = 0 + GROUP BY e.itemFk); + + -- Albaran_print + CALL ticketTrackingAdd(vTicketFk, (SELECT vn.getAlert3State(vTicketFk)), 20); + INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(vPriority, vReportDeliveryNote, vTicketFk); + + ELSE + -- Inserción de los continentes: cajas, cubos... + INSERT INTO movement (item, ticket, concept, amount, price, priceFixed) + (SELECT e.item, vTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.itemFk, vClientFk), 1 + FROM expedition e + JOIN item i ON i.id = e.itemFk + WHERE e.ticketFk = vTicketFk + GROUP BY e.itemFk); + END IF; + + IF(vCredit <= 1 OR vCompanyFk = vCompanyBlk OR vPayMethod = vPayMethodCard) THEN + SELECT 4; + -- Facturacion rapida + CALL ticketTrackingAdd(vTicketFk, 'DELIVERED', 20); + -- Facturar si está contabilizado + IF vIsTaxDataChecked THEN + + IF (SELECT clientTaxArea(vClientFk, vCompanyFk)) = 'NATIONAL' THEN + CALL invoiceMakeByClient( + vClientFk, + (SELECT invoiceSerial(vClientFk, vCompanyFk, 'M')), + vShipped, + vCompanyFk, + vNewInvoiceId); + ELSE + CALL invoiceMakeByTicket(vTicketFk, (SELECT invoiceSerial(vClientFk, vCompanyFk, 'R')), vNewInvoiceId); + END IF; + + + END IF; + ELSE + SELECT 5; + -- Albaran_print + CALL ticketTrackingAdd(vTicketFk, (SELECT vn.getAlert3State(vTicketFk)), 20); + INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(vPriority, vReportDeliveryNote, vTicketFk); + END IF; + + -- ticketClosure end + INSERT INTO dailyTaskLog(state) VALUES(CONCAT('ticketClosure: ', vTicketFk, ' END')); + END LOOP; + + CLOSE cur; + + INSERT INTO dailyTaskLog(state) VALUES('ticketClosure END'); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketClosureAgencyList` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureAgencyList`(vWarehouseFk INT, vDateTo DATE) +BEGIN +/** + * Inserta los tickets de todos los almacenes en la tabla temporal + * para ser cerrados. + * + * @param vWarehouseFk Id del almacén + * @param vDate Fecha del cierre + */ + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; + + CREATE TEMPORARY TABLE tmp.ticketClosure ENGINE = MEMORY ( + SELECT + t.id AS ticketFk + FROM expedition e + INNER JOIN ticket t ON t.id = e.ticketFk + INNER JOIN tmp.ticketClosureAgencyList al ON al.agencyModeFk = t.agencyModeFk + LEFT JOIN ticketState ts ON ts.ticketFk = t.id + WHERE + ts.alertLevel = 2 + AND t.warehouseFk = vWarehouseFk + AND DATE(t.shipped) BETWEEN DATE_ADD(vDateTo, INTERVAL -2 DAY) AND vDateTo + AND t.refFk IS NULL + GROUP BY e.ticketFk); + + DROP TEMPORARY TABLE tmp.ticketClosureAgencyList; + + CALL ticketClosure(); + + DROP TEMPORARY TABLE tmp.ticketClosure; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketClosureAgencyListAdd` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureAgencyListAdd`(vAgencyModeFk INT) +BEGIN +/** + * Prepara un listado de agencias sobre los que se realizará el cierre. + * Es necesario llamar al procedimiento por cada agencia. + * + * @param vAgencyModeFk Id almacén + */ + CREATE TEMPORARY TABLE IF NOT EXISTS tmp.ticketClosureAgencyList ( + `agencyModeFk` INT, + PRIMARY KEY(agencyModeFk)) ENGINE = MEMORY; + + INSERT INTO tmp.ticketClosureAgencyList(agencyModeFk) VALUES(vAgencyModeFk); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketClosureMultiWarehouse` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureMultiWarehouse`(vDateTo DATE) +BEGIN +/** + * Inserta los tickets de todos los almacenes en la tabla temporal + * para ser cerrados. + * + * @param vDate Fecha del cierre + */ + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; + + CREATE TEMPORARY TABLE tmp.ticketClosure ENGINE = MEMORY ( + SELECT + t.id AS ticketFk + FROM expedition e + INNER JOIN ticket t ON t.id = e.ticketFk + INNER JOIN warehouse w ON w.id = t.warehouseFk AND hasComission + LEFT JOIN ticketState ts ON ts.ticketFk = t.id + WHERE + ts.alertLevel = 2 + AND DATE(t.shipped) BETWEEN DATE_ADD(vDateTo, INTERVAL -2 DAY) AND vDateTo + AND t.refFk IS NULL + GROUP BY e.ticketFk); + + CALL ticketClosure(); + + DROP TEMPORARY TABLE tmp.ticketClosure; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketClosureRoute` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureRoute`(vWarehouseFk INT, vRouteFk INT, vDateTo DATE) +BEGIN +/** + * Inserta los tickets de la ruta en la tabla temporal + * para ser cerrados. + * + * @param vWarehouseFk Almacén a cerrar + * @param vRouteFk Ruta a cerrar + * @param vDate Fecha del cierre + */ + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; + + CREATE TEMPORARY TABLE tmp.ticketClosure ENGINE = MEMORY ( + SELECT + t.id AS ticketFk + FROM expedition e + INNER JOIN ticket t ON t.id = e.ticketFk + LEFT JOIN ticketState ts ON ts.ticketFk = t.id + WHERE + ts.alertLevel = 2 + AND t.warehouseFk = vWarehouseFk + AND t.routeFk = vRouteFk + AND DATE(t.shipped) BETWEEN DATE_ADD(vDateTo, INTERVAL -2 DAY) AND vDateTo + AND t.refFk IS NULL + GROUP BY e.ticketFk); + + CALL ticketClosure(); + + DROP TEMPORARY TABLE tmp.ticketClosure; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketClosureTicket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureTicket`(vTicketFk INT) +BEGIN + +/** + * Inserta el ticket en la tabla temporal + * para ser cerrado. + * + * @param vTicketFk Id del ticket + */ + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; + + CREATE TEMPORARY TABLE tmp.ticketClosure ENGINE = MEMORY ( + SELECT + t.id AS ticketFk + FROM expedition e + INNER JOIN ticket t ON t.id = e.ticketFk + LEFT JOIN ticketState ts ON ts.ticketFk = t.id + WHERE + ts.alertLevel = 2 + AND t.id = vTicketFk + AND t.refFk IS NULL + GROUP BY e.ticketFk); + + CALL ticketClosure(); + + DROP TEMPORARY TABLE tmp.ticketClosure; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketClosureWarehouse` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosureWarehouse`(vWarehouseFk INT, vDateTo DATE) +BEGIN +/** + * Inserta los tickets del almacen en la tabla temporal + * para ser cerrados. + * + * @param vWarehouseFk Almacén a cerrar + * @param vDate Fecha del cierre + */ + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure; + + CREATE TEMPORARY TABLE ticketClosure ENGINE = MEMORY( + SELECT + t.id AS ticketFk + FROM expedition e + INNER JOIN ticket t ON t.id = e.ticketFk + LEFT JOIN ticketState ts ON ts.ticketFk = t.id + WHERE + ts.alertLevel = 2 + AND t.warehouseFk = vWarehouseFk + AND DATE(t.shipped) BETWEEN DATE_ADD(vDateTo, INTERVAL -2 DAY) AND vDateTo + AND t.refFk IS NULL + GROUP BY e.ticketFk); + + CALL ticketClosure(); + + DROP TEMPORARY TABLE tmp.ticketClosure; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketCreate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketCreate`( + IN vClientId INT + , IN vShipped DATE + , IN vWarehouseId INT + , IN vCompanyFk INT + , IN vAddressFk INT + , IN vAgencyType INT + , IN vRouteFk INT + , IN vlanded DATE + , OUT vNewTicket INT) +BEGIN + DECLARE vClientOrnamentales INT DEFAULT 5270; + DECLARE vCompanyOrn INT DEFAULT 1381; + DECLARE vProvinceName VARCHAR(255); + + SELECT p.name INTO vProvinceName + FROM vn.client c + JOIN province p ON p.id = c.province + WHERE c.id = vClientId; + + IF vProvinceName IN ('SANTA CRUZ DE TENERIFE','LAS PALMAS DE GRAN CANARIA') AND vClientId <> vClientOrnamentales THEN + SET vCompanyFk = vCompanyOrn; + END IF; + + INSERT INTO vn2008.Tickets ( + Id_Cliente, + Fecha, + Id_Consigna, + Id_Agencia, + Alias, + warehouse_id, + Id_Ruta, + empresa_id, + landing) + SELECT + vClientId, + vShipped, + a.id, + IF(vAgencyType,vAgencyType,a.agencyFk), + a.nickname, + vWarehouseId, + IF(vRouteFk,vRouteFk,NULL), + vCompanyFk, + vlanded + FROM address a + JOIN agencyMode am ON am.id = a.agencyFk + WHERE IF(vAddressFk, a.id = vAddressFk, a.defaultAddress != 0) + AND a.clientFk = vClientId + LIMIT 1; + + SET vNewTicket = LAST_INSERT_ID(); + + INSERT INTO ticketObservation(ticketFk, observationTypeFk, description) + SELECT vNewTicket,ao.observationTypeFk, ao.description + FROM addressObservation ao + JOIN address a ON a.id =ao.addressFk + WHERE a.clientFk = vClientId + AND IF(vAddressFk, a.id = vAddressFk, a.defaultAddress != 0); + + CALL logAdd(vNewTicket,'insert','ticket',concat('CREA EL TICKET',' ',vNewTicket)); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByAddress` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByAddress`( + vStarted DATE, + vEnded DATETIME, + vAddress INT, + vCompany INT + ) +BEGIN + + SET vEnded = util.dayEnd(vEnded); + + DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; + + CREATE TEMPORARY TABLE vn.ticketToInvoice + SELECT id + FROM vn.ticket + WHERE addressFk = vAddress + AND companyFk = vCompany + AND shipped BETWEEN vStarted AND vEnded + AND refFk IS NULL; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByClient` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByClient`( + vStarted DATE, + vEnded DATETIME, + vClient INT, + vCompany INT + ) +BEGIN + + SET vEnded = util.dayEnd(vEnded); + + DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; + + CREATE TEMPORARY TABLE vn.ticketToInvoice + SELECT id + FROM vn.ticket + WHERE clientFk = vClient + AND companyFk = vCompany + AND shipped BETWEEN vStarted AND vEnded + AND refFk IS NULL; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByDate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByDate`( + vStarted DATE, + vEnded DATETIME, + vClient INT, + vCompany INT + ) +BEGIN + + SET vEnded = util.dayEnd(vEnded); + + DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; + + CREATE TEMPORARY TABLE vn.ticketToInvoice + SELECT id + FROM vn.ticket + WHERE clientFk = vClient + AND companyFk = vCompany + AND shipped BETWEEN vStarted AND vEnded + AND refFk IS NULL; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByRef` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByRef`(IN vInvoiceRef VARCHAR(15)) +BEGIN + +/* Para tickets ya facturados, vuelve a repetir el proceso de facturación. +* +* @param vInvoiceRef Factura +*/ + + DECLARE vInvoice INT; + DECLARE vCountry INT; + DECLARE vTaxArea VARCHAR(15); + DECLARE vSpainCountryCode INT DEFAULT 1; + + SELECT id + INTO vInvoice + FROM vn.invoiceOut + WHERE ref = vInvoiceRef; + + SELECT s.countryFk + INTO vCountry + FROM vn.supplier s + JOIN vn.invoiceOut io ON io.companyFk = s.id + WHERE io.id = vInvoice; + + SELECT IF( + c.isEqualizated + AND c.countryFk = vSpainCountryCode + AND i.taxAreaFk = 'NATIONAL', + 'EQU', + i.taxAreaFk + ) + INTO vTaxArea + FROM vn.invoiceOutSerial i + JOIN vn.invoiceOut io ON io.serial = i.code + JOIN vn.client c ON c.id = io.clientFk + WHERE io.id = vInvoice; + + DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; + + CREATE TEMPORARY TABLE vn.ticketToInvoice + SELECT id + FROM vn.ticket + WHERE refFk = vInvoiceRef; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByTicket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketToInvoiceByTicket`(vTicket INT) +BEGIN + + DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; + + CREATE TEMPORARY TABLE vn.ticketToInvoice + SELECT id + FROM vn.ticket + WHERE id = vTicket + AND refFk IS NULL; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketTrackingAdd` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketTrackingAdd`(vTicketFk INT, vState VARCHAR(25) CHARSET UTF8, vWorkerFk INT) +BEGIN +/** + * Inserta un registro de cambios en un ticket. + * @param vTicketFk Id del ticket + * @param vState Código del estado + * @param vWorkerFk Id del trabajador + */ + INSERT INTO ticketTracking (stateFk, ticketFk, workerFk) + SELECT s.id, vTicketFk, vWorkerFk FROM state s WHERE s.code = vState; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `workerDisable` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `workerDisable`(vUserId int) +BEGIN + + DELETE FROM account.account + WHERE user_id = vUserId; + + UPDATE account.user + SET role = 2 + WHERE id = vUserId; + + UPDATE `client` + SET credit = 0 + WHERE id = vUserId; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `workingHours` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `workingHours`(username varchar(255), logon boolean) +BEGIN + DECLARE userid int(11); + + SELECT vn.getUserId(username) INTO userid; + SELECT username, userid; + IF userid IS NOT NULL THEN + IF (logon) THEN + CALL vn.workingHoursTimeIn(userid); + ELSE + CALL vn.workingHoursTimeOut(userid); + END IF; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `workingHoursTimeIn` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `workingHoursTimeIn`(vUserId INT(11)) +BEGIN + INSERT INTO vn.workingHours (timeIn, userId) + VALUES (NOW(),vUserId); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `workingHoursTimeOut` */; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `workingHoursTimeOut`(vUserId INT(11)) +BEGIN + UPDATE vn.workingHours + SET timeOut = NOW() + WHERE userId = vUserId + AND DATE(timeIn) = CURDATE(); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Current Database: `salix` +-- + +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `salix` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; + +USE `salix`; + +-- +-- Table structure for table `ACL` +-- + +DROP TABLE IF EXISTS `ACL`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ACL` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `model` varchar(512) CHARACTER SET utf8 DEFAULT NULL, + `property` varchar(512) CHARACTER SET utf8 DEFAULT NULL, + `accessType` varchar(512) CHARACTER SET utf8 DEFAULT NULL, + `permission` varchar(512) CHARACTER SET utf8 DEFAULT NULL, + `principalType` varchar(512) CHARACTER SET utf8 DEFAULT NULL, + `principalId` varchar(512) CHARACTER SET utf8 DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `AccessToken` +-- + +DROP TABLE IF EXISTS `AccessToken`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `AccessToken` ( + `id` varchar(255) CHARACTER SET utf8 NOT NULL, + `ttl` int(11) DEFAULT NULL, + `scopes` varchar(255) CHARACTER SET utf8 DEFAULT NULL, + `created` datetime DEFAULT NULL, + `userId` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `Account` +-- + +DROP TABLE IF EXISTS `Account`; +/*!50001 DROP VIEW IF EXISTS `Account`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Account` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `password`, + 1 AS `roleFk`, + 1 AS `active`, + 1 AS `email`, + 1 AS `created`, + 1 AS `updated`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Accounting` +-- + +DROP TABLE IF EXISTS `Accounting`; +/*!50001 DROP VIEW IF EXISTS `Accounting`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Accounting` AS SELECT + 1 AS `id`, + 1 AS `bank`, + 1 AS `account`, + 1 AS `accountingTypeFk`, + 1 AS `entityFk`, + 1 AS `isActive`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Address` +-- + +DROP TABLE IF EXISTS `Address`; +/*!50001 DROP VIEW IF EXISTS `Address`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Address` AS SELECT + 1 AS `id`, + 1 AS `consignee`, + 1 AS `street`, + 1 AS `city`, + 1 AS `postcode`, + 1 AS `provinceFk`, + 1 AS `phone`, + 1 AS `mobile`, + 1 AS `isEnabled`, + 1 AS `isDefaultAddress`, + 1 AS `clientFk`, + 1 AS `defaultAgencyFk`, + 1 AS `longitude`, + 1 AS `latitude`, + 1 AS `isEqualizated`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Agency` +-- + +DROP TABLE IF EXISTS `Agency`; +/*!50001 DROP VIEW IF EXISTS `Agency`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Agency` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `warehouseFk`, + 1 AS `isVolumetric`, + 1 AS `bankFk`, + 1 AS `warehouseAliasFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `AgencyMode` +-- + +DROP TABLE IF EXISTS `AgencyMode`; +/*!50001 DROP VIEW IF EXISTS `AgencyMode`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `AgencyMode` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `description`, + 1 AS `agencyTypeFk`, + 1 AS `m3`, + 1 AS `agencyFk`, + 1 AS `inflation`, + 1 AS `sendMailTo`, + 1 AS `isForTicket`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Bank` +-- + +DROP TABLE IF EXISTS `Bank`; +/*!50001 DROP VIEW IF EXISTS `Bank`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Bank` AS SELECT + 1 AS `id`, + 1 AS `bank`, + 1 AS `account`, + 1 AS `cash`, + 1 AS `entityFk`, + 1 AS `isActive`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `City` +-- + +DROP TABLE IF EXISTS `City`; +/*!50001 DROP VIEW IF EXISTS `City`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `City` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `provinceFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Client` +-- + +DROP TABLE IF EXISTS `Client`; +/*!50001 DROP VIEW IF EXISTS `Client`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Client` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `fi`, + 1 AS `socialName`, + 1 AS `contact`, + 1 AS `street`, + 1 AS `city`, + 1 AS `postcode`, + 1 AS `provinceFk`, + 1 AS `countryFk`, + 1 AS `email`, + 1 AS `phone`, + 1 AS `mobile`, + 1 AS `fax`, + 1 AS `active`, + 1 AS `discount`, + 1 AS `credit`, + 1 AS `creditInsurance`, + 1 AS `iban`, + 1 AS `dueDay`, + 1 AS `equalizationTax`, + 1 AS `hasToInvoice`, + 1 AS `invoiceByEmail`, + 1 AS `payMethodFk`, + 1 AS `salesPersonFk`, + 1 AS `contactChannelFk`, + 1 AS `sepaVnl`, + 1 AS `coreVnl`, + 1 AS `coreVnh`, + 1 AS `eypbc`, + 1 AS `quality`, + 1 AS `vies`, + 1 AS `isRelevant`, + 1 AS `typeFk`, + 1 AS `accountingAccount`, + 1 AS `created`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ClientCredit` +-- + +DROP TABLE IF EXISTS `ClientCredit`; +/*!50001 DROP VIEW IF EXISTS `ClientCredit`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ClientCredit` AS SELECT + 1 AS `id`, + 1 AS `clientFk`, + 1 AS `employeeFk`, + 1 AS `amount`, + 1 AS `created`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ClientCreditLimit` +-- + +DROP TABLE IF EXISTS `ClientCreditLimit`; +/*!50001 DROP VIEW IF EXISTS `ClientCreditLimit`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ClientCreditLimit` AS SELECT + 1 AS `id`, + 1 AS `maxAmount`, + 1 AS `roleFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ClientObservation` +-- + +DROP TABLE IF EXISTS `ClientObservation`; +/*!50001 DROP VIEW IF EXISTS `ClientObservation`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ClientObservation` AS SELECT + 1 AS `id`, + 1 AS `clientFk`, + 1 AS `employeeFk`, + 1 AS `text`, + 1 AS `created`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ClientType` +-- + +DROP TABLE IF EXISTS `ClientType`; +/*!50001 DROP VIEW IF EXISTS `ClientType`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ClientType` AS SELECT + 1 AS `id`, + 1 AS `code`, + 1 AS `type`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ContactChannel` +-- + +DROP TABLE IF EXISTS `ContactChannel`; +/*!50001 DROP VIEW IF EXISTS `ContactChannel`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ContactChannel` AS SELECT + 1 AS `id`, + 1 AS `name`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Country` +-- + +DROP TABLE IF EXISTS `Country`; +/*!50001 DROP VIEW IF EXISTS `Country`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Country` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `inCee`, + 1 AS `code`, + 1 AS `currencyFk`, + 1 AS `realCountryFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `CreditClassification` +-- + +DROP TABLE IF EXISTS `CreditClassification`; +/*!50001 DROP VIEW IF EXISTS `CreditClassification`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `CreditClassification` AS SELECT + 1 AS `id`, + 1 AS `clientFk`, + 1 AS `started`, + 1 AS `ended`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Employee` +-- + +DROP TABLE IF EXISTS `Employee`; +/*!50001 DROP VIEW IF EXISTS `Employee`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Employee` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `surname`, + 1 AS `userFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `FakeProduction` +-- + +DROP TABLE IF EXISTS `FakeProduction`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `FakeProduction` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `ticketFk` int(11) NOT NULL DEFAULT '0', + `clientFk` int(11) NOT NULL DEFAULT '0', + `client` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `date` date DEFAULT NULL, + `hour` time DEFAULT NULL, + `city` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `province` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `provinceFk` smallint(6) unsigned NOT NULL DEFAULT '0', + `agency` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `agencyFk` smallint(6) NOT NULL, + `lines` int(1) NOT NULL DEFAULT '0', + `m3` decimal(5,2) NOT NULL DEFAULT '0.00', + `problems` int(1) NOT NULL DEFAULT '0', + `problem` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `stateFk` bigint(4) NOT NULL DEFAULT '0', + `workerfk` int(11) NOT NULL DEFAULT '0', + `worker` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `salesPersonFk` int(11) NOT NULL DEFAULT '0', + `salesPerson` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `state` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `boxes` double DEFAULT NULL, + `routeFk` int(10) unsigned DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `Message` +-- + +DROP TABLE IF EXISTS `Message`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `Message` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `uuid` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `sender` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `recipient` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `message` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `sendDate` datetime DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `MessageInbox` +-- + +DROP TABLE IF EXISTS `MessageInbox`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `MessageInbox` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `uuid` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `sender` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `recipient` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `finalRecipient` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `message` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `sendDate` datetime DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `PayMethod` +-- + +DROP TABLE IF EXISTS `PayMethod`; +/*!50001 DROP VIEW IF EXISTS `PayMethod`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `PayMethod` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `graceDays`, + 1 AS `outstandingDebt`, + 1 AS `ibanRequired`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Province` +-- + +DROP TABLE IF EXISTS `Province`; +/*!50001 DROP VIEW IF EXISTS `Province`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Province` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `countryFk`, + 1 AS `warehouseFk`, + 1 AS `zoneFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Role` +-- + +DROP TABLE IF EXISTS `Role`; +/*!50001 DROP VIEW IF EXISTS `Role`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Role` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `description`, + 1 AS `created`, + 1 AS `modified`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `RoleMapping` +-- + +DROP TABLE IF EXISTS `RoleMapping`; +/*!50001 DROP VIEW IF EXISTS `RoleMapping`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `RoleMapping` AS SELECT + 1 AS `id`, + 1 AS `principalType`, + 1 AS `principalId`, + 1 AS `roleId`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Route` +-- + +DROP TABLE IF EXISTS `Route`; +/*!50001 DROP VIEW IF EXISTS `Route`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Route` AS SELECT + 1 AS `id`, + 1 AS `date`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `State` +-- + +DROP TABLE IF EXISTS `State`; +/*!50001 DROP VIEW IF EXISTS `State`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `State` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `order`, + 1 AS `alertLevel`, + 1 AS `code`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Ticket` +-- + +DROP TABLE IF EXISTS `Ticket`; +/*!50001 DROP VIEW IF EXISTS `Ticket`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Ticket` AS SELECT + 1 AS `id`, + 1 AS `agencyFk`, + 1 AS `employeeFk`, + 1 AS `date`, + 1 AS `hour`, + 1 AS `clientFk`, + 1 AS `addressFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `TicketState` +-- + +DROP TABLE IF EXISTS `TicketState`; +/*!50001 DROP VIEW IF EXISTS `TicketState`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `TicketState` AS SELECT + 1 AS `id`, + 1 AS `ticketFk`, + 1 AS `stateFk`, + 1 AS `employeeFk`, + 1 AS `updated`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Vehicle` +-- + +DROP TABLE IF EXISTS `Vehicle`; +/*!50001 DROP VIEW IF EXISTS `Vehicle`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Vehicle` AS SELECT + 1 AS `id`, + 1 AS `numberPlate`, + 1 AS `tradeMark`, + 1 AS `model`, + 1 AS `companyFk`, + 1 AS `warehouseFk`, + 1 AS `description`, + 1 AS `m3`, + 1 AS `isActive`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Warehouse` +-- + +DROP TABLE IF EXISTS `Warehouse`; +/*!50001 DROP VIEW IF EXISTS `Warehouse`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Warehouse` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `tpv`, + 1 AS `inventory`, + 1 AS `isManaged`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `WarehouseAlias` +-- + +DROP TABLE IF EXISTS `WarehouseAlias`; +/*!50001 DROP VIEW IF EXISTS `WarehouseAlias`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `WarehouseAlias` AS SELECT + 1 AS `id`, + 1 AS `name`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Worker` +-- + +DROP TABLE IF EXISTS `Worker`; +/*!50001 DROP VIEW IF EXISTS `Worker`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Worker` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `surname`, + 1 AS `userFk`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `Zone` +-- + +DROP TABLE IF EXISTS `Zone`; +/*!50001 DROP VIEW IF EXISTS `Zone`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `Zone` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `printingOrder`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `user` +-- + +DROP TABLE IF EXISTS `user`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `user` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `realm` varchar(512) CHARACTER SET utf8 DEFAULT NULL, + `username` varchar(512) CHARACTER SET utf8 DEFAULT NULL, + `password` varchar(512) CHARACTER SET utf8 NOT NULL, + `email` varchar(512) CHARACTER SET utf8 NOT NULL, + `emailVerified` tinyint(1) DEFAULT NULL, + `verificationToken` varchar(512) CHARACTER SET utf8 DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping routines for database 'salix' +-- +/*!50003 DROP PROCEDURE IF EXISTS `production_control_source` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `production_control_source`(IN idWarehouse INT, IN scopeDays TINYINT) +BEGIN + + call vn2008.production_control_source(idWarehouse, scopeDays); + + /* + DROP TEMPORARY TABLE IF EXISTS FakeProduction_tmp; + + set @id=0; + + CREATE TEMPORARY TABLE FakeProduction_tmp + ENGINE=MEMORY AS + (select @id:=@id+1 as id, + tmp.Id_Ticket as ticketFk, + tmp.Id_Cliente as clientFk, + tmp.Alias as client, + tmp.Fecha as `date`, + tmp.Hora as hour, + tmp.POBLACION as city, + tmp.PROVINCIA as province, + tmp.province_id as provinceFk, + tmp.Agencia as agency, + tmp.agency_id as agencyFk, + tmp.lines, + tmp.m3, + tmp.problems, + tmp.problem, + tmp.state as stateFk, + t.Id_Trabajador as workerfk, + concat(t.Nombre, ' ', t.Apellidos) as worker, + tt.Id_Trabajador as salesPersonFk, + concat(tt.Nombre, ' ', tt.Apellidos) as salesPerson, + s.name as state, + tmp.Cajas as boxes, + tmp.Id_Ruta as routeFk + from tmp.production_buffer tmp + inner join vn2008.state s + on tmp.state = s.id + inner join vn2008.Trabajadores t + on tmp.CodigoTrabajador = t.CodigoTrabajador collate utf8_unicode_ci + inner join vn2008.Trabajadores tt + on tmp.Comercial = tt.CodigoTrabajador collate utf8_unicode_ci + ); + + DELETE FROM FakeProduction; + + INSERT INTO FakeProduction + SELECT * + FROM FakeProduction_tmp + WHERE routeFk IS NOT NULL + GROUP BY RouteFk + ORDER BY routeFk; + */ + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Current Database: `bs` +-- + +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `bs` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; + +USE `bs`; + +-- +-- Temporary view structure for view `VentasPorCliente` +-- + +DROP TABLE IF EXISTS `VentasPorCliente`; +/*!50001 DROP VIEW IF EXISTS `VentasPorCliente`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `VentasPorCliente` AS SELECT + 1 AS `Id_Cliente`, + 1 AS `VentaBasica`, + 1 AS `year`, + 1 AS `month`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `bancos_evolution` +-- + +DROP TABLE IF EXISTS `bancos_evolution`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `bancos_evolution` ( + `Fecha` date NOT NULL, + `Id_Banco` int(11) NOT NULL, + `saldo` double NOT NULL DEFAULT '0', + `quilla` double NOT NULL DEFAULT '0', + `deuda` double NOT NULL DEFAULT '0', + `liquidez` double NOT NULL DEFAULT '0', + `disponibilidad ajena` double NOT NULL DEFAULT '0', + `saldo_aux` double NOT NULL DEFAULT '0' COMMENT 'Saldo auxiliar para el calculo de lo dispuesto en las polizas', + PRIMARY KEY (`Fecha`,`Id_Banco`), + KEY `fk_banco_evolution_idx` (`Id_Banco`), + CONSTRAINT `fk_banco_evolution` FOREIGN KEY (`Id_Banco`) REFERENCES `vn2008`.`Bancos` (`Id_Banco`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena los saldos bancarios'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `carteras` +-- + +DROP TABLE IF EXISTS `carteras`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `carteras` ( + `CodigoTrabajador` varchar(3) CHARACTER SET latin1 NOT NULL, + `Año` int(11) NOT NULL, + `Mes` int(11) NOT NULL, + `Peso` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`CodigoTrabajador`,`Año`,`Mes`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `compradores` +-- + +DROP TABLE IF EXISTS `compradores`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `compradores` ( + `Id_Trabajador` int(11) NOT NULL, + `año` int(4) NOT NULL, + `semana` int(2) NOT NULL, + `importe` decimal(10,2) DEFAULT NULL, + `comision` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`Id_Trabajador`,`año`,`semana`), + CONSTRAINT `comprador_trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `compradores_evolution` +-- + +DROP TABLE IF EXISTS `compradores_evolution`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `compradores_evolution` ( + `Id_Trabajador` int(11) NOT NULL, + `fecha` date NOT NULL, + `importe` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`Id_Trabajador`,`fecha`), + CONSTRAINT `evo_trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `experienceIberflora2016` +-- + +DROP TABLE IF EXISTS `experienceIberflora2016`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `experienceIberflora2016` ( + `Id_Cliente` int(11) NOT NULL, + `isVisitor` tinyint(4) NOT NULL DEFAULT '0', + PRIMARY KEY (`Id_Cliente`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de clientes que participan en el estudio sobre la mejora del consumo tras la visita a las instalaciones de Silla'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `fondo_maniobra` +-- + +DROP TABLE IF EXISTS `fondo_maniobra`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `fondo_maniobra` ( + `fecha` date NOT NULL, + `fondo` double DEFAULT NULL, + `clientes_facturas` double DEFAULT NULL, + `clientes_cobros` double DEFAULT NULL, + `proveedores_facturas` double DEFAULT NULL, + `proveedores_pagos` double DEFAULT NULL, + `fondo_medio` double DEFAULT NULL, + PRIMARY KEY (`fecha`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `manaCustomer` +-- + +DROP TABLE IF EXISTS `manaCustomer`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `manaCustomer` ( + `Id_Cliente` int(11) NOT NULL, + `Mana` decimal(10,0) NOT NULL DEFAULT '0', + `dated` date NOT NULL, + PRIMARY KEY (`Id_Cliente`,`dated`), + CONSTRAINT `cliente_fk` FOREIGN KEY (`Id_Cliente`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mana_spellers` +-- + +DROP TABLE IF EXISTS `mana_spellers`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mana_spellers` ( + `Id_Trabajador` int(11) NOT NULL, + `size` int(11) NOT NULL DEFAULT '300', + `used` int(11) NOT NULL DEFAULT '0', + `prices_modifier_rate` double NOT NULL DEFAULT '0', + `prices_modifier_activated` tinyint(1) NOT NULL DEFAULT '1', + PRIMARY KEY (`Id_Trabajador`), + KEY `fk_mana_spellers_Trabajadores_idx` (`Id_Trabajador`), + CONSTRAINT `fk_mana_spellers_Trabajadores` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `bs`.`mana_spellers_AFTER_INSERT` AFTER INSERT ON `mana_spellers` FOR EACH ROW +BEGIN + + + REPLACE vn2008.Permisos(Id_Grupo, Id_Trabajador) + VALUES(6, NEW.Id_Trabajador); + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Table structure for table `nightTask` +-- + +DROP TABLE IF EXISTS `nightTask`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `nightTask` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `started` datetime DEFAULT NULL, + `finished` datetime DEFAULT NULL, + `order` int(11) DEFAULT NULL, + `schema` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `procedure` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `bs`.`nightTaskBeforeInsert` BEFORE INSERT ON `nightTask` FOR EACH ROW +BEGIN + + IF NOT (NEW.`schema`REGEXP '^[0-9a-zA-Z_]+$') OR NOT (NEW.`procedure`REGEXP '^[0-9a-zA-Z_]+$') THEN + + CALL util.throw('ONLY_ALPHANUMERICS_ALLOWED'); + + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `bs`.`nightTaskBeforeUpdate` BEFORE UPDATE ON `nightTask` FOR EACH ROW +BEGIN + + IF NOT (NEW.`schema`REGEXP '^[0-9a-zA-Z_]+$') OR NOT (NEW.`procedure`REGEXP '^[0-9a-zA-Z_]+$') THEN + + CALL util.throw('ONLY_ALPHANUMERICS_ALLOWED'); + + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Temporary view structure for view `v_ventas` +-- + +DROP TABLE IF EXISTS `v_ventas`; +/*!50001 DROP VIEW IF EXISTS `v_ventas`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `v_ventas` AS SELECT + 1 AS `importe`, + 1 AS `recargo`, + 1 AS `year`, + 1 AS `month`, + 1 AS `week`, + 1 AS `day`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `vendedores` +-- + +DROP TABLE IF EXISTS `vendedores`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `vendedores` ( + `Id_Trabajador` int(11) NOT NULL, + `año` int(4) NOT NULL, + `mes` int(2) NOT NULL, + `importe` decimal(10,2) DEFAULT NULL, + `comision` decimal(10,2) DEFAULT NULL, + `comisionArrendada` decimal(10,2) DEFAULT NULL COMMENT 'comision proveniente de clientes que han sido donados. Ver tabla Clientes_cedidos', + `comisionCedida` decimal(10,2) DEFAULT NULL COMMENT 'comision generada por los clientes que han sido donados. Ver tabla Clientes_cedidos', + PRIMARY KEY (`Id_Trabajador`,`año`,`mes`), + CONSTRAINT `trabajador_trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `vendedores_evolution` +-- + +DROP TABLE IF EXISTS `vendedores_evolution`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `vendedores_evolution` ( + `Id_Trabajador` int(11) NOT NULL, + `fecha` date NOT NULL, + `importe` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`Id_Trabajador`,`fecha`), + CONSTRAINT `evo_vendedor_trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `ventas` +-- + +DROP TABLE IF EXISTS `ventas`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ventas` ( + `Id_Movimiento` int(11) NOT NULL, + `importe` decimal(10,3) NOT NULL DEFAULT '0.000', + `recargo` decimal(10,3) NOT NULL DEFAULT '0.000', + `fecha` date NOT NULL, + `tipo_id` smallint(5) unsigned NOT NULL, + `Id_Cliente` int(11) NOT NULL DEFAULT '1', + `empresa_id` smallint(5) unsigned NOT NULL DEFAULT '442', + PRIMARY KEY (`Id_Movimiento`), + KEY `tip_to_tip_idx` (`tipo_id`), + KEY `clientes_bs_ventas_idx` (`Id_Cliente`), + KEY `empresa_bs_ventas_idx` (`empresa_id`), + KEY `fecha_bs` (`fecha`), + CONSTRAINT `clientes_bs_ventas` FOREIGN KEY (`Id_Cliente`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `empresa_bs_ventas` FOREIGN KEY (`empresa_id`) REFERENCES `vn2008`.`empresa` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `mov_to_mov` FOREIGN KEY (`Id_Movimiento`) REFERENCES `vn2008`.`Movimientos` (`Id_Movimiento`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `tip_to_tip` FOREIGN KEY (`tipo_id`) REFERENCES `vn2008`.`Tipos` (`tipo_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `ventas_contables` +-- + +DROP TABLE IF EXISTS `ventas_contables`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ventas_contables` ( + `year` int(4) NOT NULL, + `month` int(2) NOT NULL, + `venta` decimal(10,2) DEFAULT NULL, + `grupo` int(1) NOT NULL, + `reino_id` int(10) unsigned NOT NULL, + `tipo_id` smallint(5) unsigned NOT NULL, + `empresa_id` int(4) NOT NULL, + `gasto` varchar(10) CHARACTER SET latin1 NOT NULL, + PRIMARY KEY (`year`,`month`,`grupo`,`reino_id`,`tipo_id`,`empresa_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping routines for database 'bs' +-- +/*!50003 DROP PROCEDURE IF EXISTS `bancos_evolution_add` */; +ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bancos_evolution_add`() +BEGIN +/* + +Inserta en la tabla bancos_evolution los saldos acumulados + +*/ + + +DECLARE vCurrentDate DATE; +DECLARE vStartingDate DATE DEFAULT '2015-01-01'; +DECLARE vMaxDate DATE DEFAULT TIMESTAMPADD(MONTH, 2, CURDATE()); + +SELECT max(Fecha) + INTO vStartingDate + FROM bs.bancos_evolution + WHERE Fecha > '2015-01-01'; + +DELETE FROM bs.bancos_evolution +WHERE Fecha > vStartingDate; + +SET vCurrentDate = vStartingDate; + + + + + WHILE vCurrentDate < vMaxDate DO + + IF day(vCurrentDate) mod 28 = 0 then + SELECT vCurrentDate; + end if; + + + REPLACE bs.bancos_evolution( Fecha + ,Id_Banco + ,saldo) + + SELECT vCurrentDate + , Id_Banco + , sum(saldo) + + FROM + ( + + SELECT Id_Banco + ,saldo_aux as saldo + FROM bs.bancos_evolution + + WHERE Fecha = TIMESTAMPADD(DAY,-1,vCurrentDate) -- los saldos acumulados del dia anterior + + UNION ALL + + SELECT c.Id_Banco, IFNULL(sum(Entrada),0) - ifnull(sum(Salida),0) as saldo + FROM vn2008.Cajas c + JOIN vn2008.Bancos b using(Id_Banco) -- saldos de las cajas + WHERE cash IN (0,3) + AND Cajafecha = vCurrentDate + AND (Serie = 'MB' OR cash = 3) + GROUP BY Id_Banco + + UNION ALL + + SELECT id_banco, - importe -- pagos futuros + FROM vn2008.pago + WHERE fecha = vCurrentDate + AND fecha >= CURDATE() + AND NOT conciliado + + UNION ALL + + SELECT Id_Banco, Entregado -- cobros futuros + FROM vn2008.Recibos + WHERE Fechacobro = vCurrentDate + AND Fechacobro > CURDATE() + + UNION ALL + + SELECT sp.Id_Banco, Importe -- saldos de la tabla prevision + FROM vn2008.Saldos_Prevision sp + JOIN vn2008.Bancos b using(Id_Banco) + WHERE cash IN (0,3) + AND Fecha = vCurrentDate + + + + )sub + GROUP BY Id_Banco; + + -- Utilizamos el saldo_auxiliar para calcular lo dispuesto en las polizas + + UPDATE bs.bancos_evolution be + SET saldo_aux = saldo; + + -- Ahora actualizamos la quilla + UPDATE bs.bancos_evolution be + LEFT JOIN + ( + SELECT Id_Banco, - sum(importe) as quilla + FROM vn2008.Bancos_poliza + WHERE vCurrentDate between apertura AND IFNULL(cierre, vCurrentDate) + GROUP BY Id_Banco + ) sub using(Id_Banco) + SET be.quilla = sub.quilla + WHERE be.Fecha = vCurrentDate; + + + SET vCurrentDate = TIMESTAMPADD(DAY,1,vCurrentDate); + + END WHILE; + + + -- Deuda + UPDATE bs.bancos_evolution be + JOIN vn2008.Bancos using(Id_Banco) + SET be.deuda = IF(cash = 3, be.saldo_aux, 0) + , be.saldo = IF(cash = 3, 0, be.saldo_aux) + WHERE Fecha >= vStartingDate; + + + -- Liquidez + update bs.bancos_evolution set liquidez = saldo - quilla + deuda WHERE Fecha >= vStartingDate; + + -- Disponibilidad + update bs.bancos_evolution set `disponibilidad ajena` = - quilla + deuda WHERE Fecha >= vStartingDate; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `campaignComparative` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `campaignComparative`(vDateFrom DATE, vDateTo DATE) +BEGIN + SELECT + workerName, + id, + name, + CAST(SUM(previousAmmount) AS DECIMAL(10, 0)) AS previousAmmount, + CAST(SUM(currentAmmount) AS DECIMAL(10, 0)) AS currentAmmount + FROM ( + (SELECT + CONCAT(w.firstname, ' ', w.name) AS workerName, + c.id, + c.name, + SUM(v.importe) AS previousAmmount, + 0 currentAmmount + FROM bs.ventas v + INNER JOIN vn.`client` c ON v.Id_Cliente = c.id + INNER JOIN vn.worker w ON c.workerFk = w.id + WHERE v.fecha BETWEEN DATE_ADD(vDateFrom, INTERVAL - 1 YEAR) + AND DATE_ADD(vDateTo, INTERVAL - 1 YEAR) + GROUP BY w.id, v.Id_Cliente) + UNION ALL + (SELECT + CONCAT(w.firstname, ' ', w.name) AS workerName, + c.id, + c.name, + 0 AS previousAmmount, + SUM(s.quantity * s.price) AS currentAmmount + FROM vn.sale s + JOIN vn.ticket t ON t.id = s.ticketFk + JOIN vn.client c ON c.id = t.clientFk + JOIN vn.worker w ON c.workerFk = w.id + WHERE t.shipped BETWEEN vDateFrom + AND vDateTo + GROUP BY w.id, c.id) + ) comparative + GROUP BY workerName, id + HAVING (previousAmmount <> 0 OR currentAmmount <> 0) + ORDER BY workerName, id; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `carteras_add` */; +ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `carteras_add`() +BEGIN + +DELETE FROM bs.carteras +WHERE Año >= YEAR(CURDATE()) - 1; + +INSERT INTO bs.carteras(Año,Mes,CodigoTrabajador,Peso) +SELECT year as Año, month as Mes, CodigoTrabajador, sum(importe) as Peso +FROM vn2008.time t +JOIN bs.ventas v on t.date = v.fecha +JOIN vn2008.Clientes c on c.Id_Cliente = v.Id_Cliente +JOIN vn2008.Trabajadores tr on tr.Id_Trabajador = c.Id_Trabajador +WHERE t.year >= YEAR(CURDATE()) - 1 +GROUP BY CodigoTrabajador, Año, Mes; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `comercialesCompleto` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `comercialesCompleto`(IN vWorker INT) +BEGIN + +SELECT + c.Id_Cliente id_cliente, + c.calidad, + c.Cliente cliente, + cr.recobro * 100 tarifa, + c.Telefono telefono, + c.movil, + c.POBLACION poblacion, + p.`name` provincia, + vn2008.red(f.futur) futur, + c.Credito credito, + pm.`name` forma_pago, + vn2008.red(c365 / 12) consumo_medio365, + vn2008.red(c365) consumo365, + vn2008.red(CmLy.peso) peso_mes_año_pasado, + vn2008.red(CmLy.peso * 1.19) objetivo, + tr.CodigoTrabajador, + vn2008.red(mes_actual.consumo) consumoMes, + vn2008.red(IFNULL(mes_actual.consumo, 0) - IFNULL(CmLy.peso * 1.19, 0)) como_lo_llevo, + DATE(LastTicket) ultimo_ticket, + dead.muerto, + g.Greuge, + cr.recobro +FROM + vn2008.Clientes c + LEFT JOIN + (SELECT Id_Cliente, Greuge + FROM bi.Greuge_Evolution + WHERE Fecha = (SELECT MAX(Fecha) FROM bi.Greuge_Evolution) + ) g ON g.Id_Cliente = c.Id_Cliente + LEFT JOIN + vn2008.province p ON p.province_id = c.province_id + JOIN + vn2008.pay_met pm ON pm.id = c.pay_met_id + LEFT JOIN + vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador + LEFT JOIN + bi.claims_ratio cr on cr.Id_Cliente = c.Id_Cliente + LEFT JOIN + (SELECT + v.Id_Cliente, SUM(importe) c365 + FROM + bs.ventas v + INNER JOIN vn2008.Clientes c USING (Id_Cliente) + LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador + WHERE + (c.Id_Trabajador = vWorker OR tr.boss = vWorker) + AND v.fecha BETWEEN TIMESTAMPADD(YEAR, - 1, CURDATE()) AND CURDATE() + GROUP BY v.Id_Cliente) c365 ON c365.Id_Cliente = c.Id_Cliente + LEFT JOIN + (SELECT + Id_Cliente, SUM(importe) consumo + FROM + bs.ventas v + INNER JOIN vn2008.Clientes c USING (Id_Cliente) + LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador + WHERE + (c.Id_Trabajador = vWorker OR tr.boss = vWorker) + AND (v.fecha BETWEEN TIMESTAMPADD(DAY, - DAY(CURDATE()) + 1, CURDATE()) AND CURDATE() - 1) + GROUP BY Id_Cliente) mes_actual ON mes_actual.Id_Cliente = c.Id_Cliente + LEFT JOIN + (SELECT + t.Id_Cliente, + SUM(m.preu * m.Cantidad * (1 - m.Descuento / 100)) futur + FROM + vn2008.Tickets t + JOIN vn2008.Clientes c ON c.Id_Cliente = t.Id_Cliente + JOIN vn2008.Movimientos m ON m.Id_Ticket = t.Id_Ticket + LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador + WHERE + (c.Id_Trabajador = vWorker OR tr.boss = vWorker) + AND DATE(Fecha) BETWEEN CURDATE() AND LAST_DAY(CURDATE()) + GROUP BY Id_Cliente) f ON c.Id_Cliente = f.Id_Cliente + LEFT JOIN + (SELECT + MAX(t.Fecha) LastTicket, c.Id_Cliente + FROM + vn2008.Tickets t + JOIN vn2008.Clientes c ON c.Id_cliente = t.Id_Cliente + LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador + + WHERE + (c.Id_Trabajador = vWorker OR tr.boss = vWorker) + GROUP BY t.Id_Cliente) LastTicket ON LastTicket.Id_Cliente = c.Id_Cliente + LEFT JOIN + (SELECT + SUM(importe) peso, c.Id_Cliente + FROM + bs.ventas v + JOIN vn2008.Clientes c ON c.Id_Cliente = v.Id_Cliente + LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador + WHERE + MONTH(fecha) = MONTH(CURDATE()) + AND YEAR(fecha) = YEAR(CURDATE()) - 1 + AND (c.Id_Trabajador = vWorker OR tr.boss = vWorker) + GROUP BY c.Id_Cliente) CmLy ON CmLy.Id_Cliente = c.Id_Cliente + LEFT JOIN + (SELECT + c.Id_Cliente, + IF(MAX(Fecha) < DATE_FORMAT(TIMESTAMPADD(MONTH, - 1, CURDATE()), '%Y- %m-01'), TRUE, FALSE) muerto + FROM + vn2008.Facturas f + JOIN vn2008.Clientes c ON c.Id_cliente = f.Id_Cliente + LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador + WHERE + (c.Id_Trabajador = vWorker OR tr.boss = vWorker) + GROUP BY Id_Cliente) dead ON dead.Id_Cliente = c.Id_Cliente +WHERE + (c.Id_Trabajador = vWorker OR tr.boss = vWorker); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `compradores_add` */; +ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `compradores_add`(IN intYEAR INT, IN intWEEK_START INT, IN intWEEK_END INT) +BEGIN + +REPLACE bs.compradores + +SELECT tp.Id_Trabajador + , intYEAR as año + , tm.week as semana + , sum(importe) as importe + , 0 as comision + +FROM bs.ventas v +JOIN vn2008.time tm on tm.date = v.fecha +JOIN vn2008.Tipos tp using(tipo_id) +WHERE tm.year = intYEAR and tm.week between intWEEK_START and intWEEK_END +AND reino_id != 6 +GROUP BY tp.Id_Trabajador, tm.week; + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `compradores_evolution_add` */; +ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `compradores_evolution_add`() +BEGIN +/* + +Inserta en la tabla compradores_evolution las ventas acumuladas en los ultimos 365 dias + +*/ + +DECLARE datFEC DATE; + + +SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) INTO datFEC FROM bs.compradores_evolution; + + WHILE datFEC < CURDATE() DO + + SELECT datFEC; + + REPLACE bs.compradores_evolution( Id_Trabajador + , fecha + , importe) + + SELECT Id_Trabajador + , datFEC as fecha + , sum(importe) as importe + + FROM + ( + + SELECT Id_Trabajador + , importe + FROM bs.compradores_evolution + WHERE fecha = TIMESTAMPADD(DAY,-1,datFEC) -- las ventas acumuladas del dia anterior + + UNION ALL + + SELECT Id_Trabajador + , importe * IF(v.fecha < datFEC,-1,1) -- se restan las ventas del año anterior y se suman las del actual + FROM bs.ventas v + JOIN vn2008.Tipos tp using(tipo_id) + WHERE fecha IN (datFEC, TIMESTAMPADD(DAY,-365,datFEC)) + AND reino_id != 6 + + )sub + GROUP BY Id_Trabajador; + + + + + SET datFEC = TIMESTAMPADD(DAY,1,datFEC); + + END WHILE; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `fondo_evolution_add` */; +ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `fondo_evolution_add`() +BEGIN +/* + +Inserta en la tabla fondo_maniobra los saldos acumulados en los ultimos 365 dias + +*/ + +DECLARE datFEC DATE DEFAULT '2015-01-01'; + + +SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) INTO datFEC FROM bs.fondo_maniobra; + + WHILE datFEC < CURDATE() DO + + -- esto solo sirve para no aburrirse mientras esperamos... + + IF day(datFEC) mod 28 = 0 then + SELECT datFEC; + end if; + + + REPLACE bs.fondo_maniobra(Fecha, clientes_facturas, clientes_cobros,proveedores_facturas,proveedores_pagos, fondo) + SELECT datFEC as Fecha, Facturas, Cobros,Recibidas,Pagos, Facturas + Cobros + Recibidas + Pagos + FROM + ( + SELECT Sum(Facturas.Importe) AS Facturas + FROM vn2008.Facturas + INNER JOIN vn2008.Clientes ON Facturas.Id_Cliente = Clientes.Id_cliente + WHERE Clientes.`real` + AND empresa_id <>1381 + AND Fecha between '2011-01-01' and datFEC) fac + JOIN + ( + SELECT - Sum(Entregado) AS Cobros + FROM vn2008.Recibos + INNER JOIN vn2008.Clientes ON Recibos.Id_Cliente = Clientes.Id_cliente + WHERE Clientes.`real` + AND empresa_id <> 1381 + AND Fechacobro Between '2011-01-01' and datFEC) cob + JOIN + ( + SELECT - Sum(cantidad) AS Recibidas + FROM vn2008.recibida + INNER JOIN vn2008.recibida_vencimiento ON recibida.id = recibida_vencimiento.recibida_id + WHERE empresa_id <> 1381 + AND recibida.fecha Between '2015-01-01' and datFEC) rec + JOIN + ( + SELECT Sum(importe) AS Pagos + FROM vn2008.pago + WHERE empresa_id <>1381 AND pago.fecha Between '2015-01-01' and datFEC) pag; + + + + UPDATE bs.fondo_maniobra + JOIN + (SELECT avg(fondo) as media + FROM bs.fondo_maniobra + WHERE fecha <= datFEC) sub + SET fondo_medio = media + WHERE fecha = datFEC; + + + SET datFEC = TIMESTAMPADD(DAY,1,datFEC); + + END WHILE; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `manaCustomerFill_kk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `manaCustomerFill_kk`() +BEGIN + + +/* Rellena la tabla caché bs.manaCustomer desde 0 +* +* Utilizar para reconstruirla en caso de que se corrompa. +* +*/ + +DECLARE vFromDated DATE; +DECLARE vToDated DATETIME DEFAULT '2015-12-31 23:59:59'; +DECLARE isDone BOOLEAN DEFAULT FALSE; + +DELETE FROM bs.manaCustomer; + +WHILE NOT isDone DO + + SELECT TIMESTAMPADD(DAY,1,vToDated), TIMESTAMPADD(MONTH, 1, vToDated) + INTO vFromDated, vToDated; + + IF vToDated >= CURDATE() THEN + + SET vToDated = TIMESTAMPADD(SECOND,-1,CURDATE()); + SET isDone = TRUE; + + END IF; + + INSERT INTO bs.manaCustomer(Id_Cliente, Mana) + SELECT Id_Cliente, newMana + FROM + (SELECT cs.Id_Cliente, - sum(Cantidad * Valor) as newMana + FROM vn2008.Tickets t + JOIN vn2008.Consignatarios cs using(Id_Consigna) + JOIN vn2008.Movimientos m using(Id_Ticket) + JOIN vn2008.Movimientos_componentes mc using(Id_Movimiento) + WHERE Id_Componente IN (39, 37) -- maná auto y maná + AND Fecha BETWEEN vFromDated AND vToDated + GROUP BY cs.Id_Cliente + ) t1 + ON DUPLICATE KEY UPDATE Mana = Mana + newMana; + + SELECT vFromDated, vToDated; + +END WHILE; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `manaCustomerUpdate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `manaCustomerUpdate`() +BEGIN +DECLARE vToDated DATE; + DECLARE vFromDated DATE; + DECLARE vForDeleteDated DATE; + DECLARE vManaId INT DEFAULT 37; + DECLARE vManaAutoId INT DEFAULT 39; + DECLARE vManaBankId INT DEFAULT 66; + DECLARE vManaGreugeTypeId INT DEFAULT 3; + + SELECT IFNULL(max(dated), '2016-01-01') + INTO vFromDated + FROM bs.manaCustomer; + + WHILE timestampadd(week,1,vFromDated) < CURDATE() DO + + SELECT + timestampadd(week,1,vFromDated), + timestampadd(week,-4,vFromDated) + INTO + vToDated, + vForDeleteDated; + + DELETE FROM bs.manaCustomer + WHERE dated <= vForDeleteDated; + + + INSERT INTO bs.manaCustomer(Id_Cliente, Mana, dated) + + SELECT + Id_Cliente, + cast(sum(mana) as decimal(10,2)) as mana, + vToDated as dated + FROM + + ( + SELECT cs.Id_Cliente, Cantidad * Valor as mana + FROM vn2008.Tickets t + JOIN vn2008.Consignatarios cs using(Id_Consigna) + JOIN vn2008.Movimientos m on m.Id_Ticket = t.Id_Ticket + JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento + WHERE Id_Componente IN (vManaAutoId, vManaId) + AND Fecha > vFromDated + AND Fecha <= vToDated + + + UNION ALL + + SELECT r.Id_Cliente, - Entregado + FROM vn2008.Recibos r + WHERE Id_Banco = vManaBankId + AND Fechacobro > vFromDated + AND Fechacobro <= vToDated + + UNION ALL + + SELECT g.Id_Cliente, g.Importe + FROM vn2008.Greuges g + WHERE Greuges_type_id = vManaGreugeTypeId + AND Fecha > vFromDated + AND Fecha <= vToDated + + UNION ALL + + SELECT Id_Cliente, mana + FROM bs.manaCustomer + WHERE dated = vFromDated + ) sub + + GROUP BY Id_Cliente + HAVING Id_Cliente; + + SET vFromDated = vToDated; + + END WHILE; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `mana_price_modifier_update` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `mana_price_modifier_update`() +BEGIN + +INSERT INTO vn2008.daily_task_log(consulta) +VALUES ('bs.mana_price_modifier_update'); + +UPDATE mana_spellers +JOIN + (SELECT Id_Trabajador, floor(sum(importe)/12) as pesoCarteraMensual + FROM bs.vendedores v + WHERE año * 100 + mes >= (year(curdate()) -1) * 100 + month(curdate()) + GROUP BY Id_Trabajador + ) ultimo_año_de_ventas using(Id_Trabajador) +SET prices_modifier_rate = GREATEST(-0.05,LEAST(0.05,round(- used/pesoCarteraMensual,3))) ; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nightly_tasks` */; +ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nightly_tasks`() +BEGIN + +DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN + INSERT INTO vn2008.mail SET `to` = 'informatica@verdnatura.es', subject = 'bs.nightly_tasks', `text` = CONCAT('ERROR ', @errno, ' (', @sqlstate, '): ', @text); + INSERT INTO vn2008.mail SET `to` = 'pako@verdnatura.es', subject = 'bs.nightly_tasks', `text` = CONCAT('ERROR ', @errno, ' (', @sqlstate, '): ', @text); +END; + + insert into vn2008.daily_task_log(consulta) VALUES('arranca el event bs.nightly_tasks'); + + call bancos_evolution_add; + + call fondo_evolution_add; + + call ventas_add(timestampadd(month,-1,curdate()),curdate()); + + call ventas_contables_add(YEAR(TIMESTAMPADD(MONTH,-1,CURDATE())), MONTH(TIMESTAMPADD(MONTH,-1,CURDATE()))); + + call bs.vendedores_add(year(curdate()), month(curdate())); + + call bs.vendedores_add(year(timestampadd(month,-1,curdate())) + , month(timestampadd(month,-1,curdate())) + ); + + call carteras_add; + + call vn2008.mana_inventory_requery; + + call bs.mana_price_modifier_update; + + call bs.manaCustomerUpdate; + + insert into vn2008.daily_task_log(consulta) VALUES('finalitza el event bs.nightly_tasks'); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `nightTaskLauncher` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nightTaskLauncher`() +BEGIN + + DECLARE done BOOL DEFAULT FALSE; + DECLARE vSchema VARCHAR(255); + DECLARE vProcedure VARCHAR(255); + DECLARE vId INT; + + DECLARE rs CURSOR FOR + SELECT id,`schema`, `procedure` + FROM bs.nightTask + WHERE IFNULL(finished,0) <= CURDATE() + ORDER BY `order`; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + OPEN rs; + + FETCH rs INTO vId, vSchema, vProcedure; + + WHILE NOT done DO + + SELECT vId, vSchema, vProcedure; + + UPDATE bs.nightTask + SET started = now() + WHERE id = vId; + + CALL vn2008.sql_query (sql_printf('CALL %s.%s',vSchema, vProcedure)); + + UPDATE bs.nightTask + SET finished = now() + WHERE id = vId; + + FETCH rs INTO vId, vSchema, vProcedure; + + END WHILE; + + CLOSE rs; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nocturnEvent_Tickets_Bionizar` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nocturnEvent_Tickets_Bionizar`() +BEGIN + +DECLARE MyDate DATE; +/* + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + + GET DIAGNOSTICS CONDITION 2 @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT; + SELECT CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto')); + INSERT INTO vn2008.mail (`to`,`subject`,`text`) VALUES ('jgallego@verdnatura.es', 'nocturnEvent_Tickets_Bionizar' ,CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto'))); + INSERT INTO vn2008.mail (`to`,`subject`,`text`) VALUES ('pako@verdnatura.es', 'nocturnEvent_Tickets_Bionizar' ,CONCAT('ERROR ', IFNULL(@errno,0), ': ', ifnull(@text,'texto'))); + +END; +*/ + + +SET MyDate = timestampadd(week,-1,curdate()); + + INSERT INTO vn2008.daily_task_log(consulta) VALUES('Comença la rebionització de tickets '); + +WHILE MyDate < CURDATE() DO + + CALL `vn2008`.`bionic_tickets_range_bionizar`(MyDate, MyDate); + + SET MyDate = timestampadd(DAY,1,MyDate); + + SELECT MyDate; + +END WHILE; + + INSERT INTO vn2008.daily_task_log(consulta) VALUES('finalitza la rebionització de tickets '); + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `vendedores_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_add`(IN intYEAR INT, IN intMONTH INT) +BEGIN + +REPLACE vendedores + +SELECT c.Id_Trabajador + , intYEAR + , intMONTH + , sum(importe) as importe + , sum(importe) * 0.029 as comision + , 0 as comisionCedida + , 0 as comisionArrendada + +FROM ventas v +JOIN vn2008.Clientes c on v.Id_Cliente = c.Id_Cliente +JOIN vn2008.time on time.date = v.fecha +WHERE time.year = intYEAR and time.month = intMONTH +AND c.Id_Trabajador is not null +GROUP BY c.Id_Trabajador; + +-- Ventas cedidas + +UPDATE vendedores +JOIN +( +SELECT cc.Id_Trabajador_old as Id_Trabajador + , sum(importe) * 0.029 * comision_old as cedido + +FROM ventas v +JOIN vn2008.Clientes c on v.Id_Cliente = c.Id_Cliente +JOIN vn2008.Clientes_cedidos cc on cc.Id_Cliente = c.Id_Cliente +JOIN vn2008.time on time.date = v.fecha +WHERE time.year = intYEAR and time.month = intMONTH +AND c.Id_Trabajador is not null +GROUP BY cc.Id_Trabajador_old +) sub using(Id_Trabajador) +SET comisionCedida = cedido, comision = comision - cedido +WHERE año = intYEAR and mes = intMONTH; + +-- Ventas arrendadas + +UPDATE vendedores +JOIN +( +SELECT cc.Id_Trabajador_new as Id_Trabajador + , sum(importe) * 0.029 * comision_new as arrendada + +FROM ventas v +JOIN vn2008.Clientes c on v.Id_Cliente = c.Id_Cliente +JOIN vn2008.Clientes_cedidos cc on cc.Id_Cliente = c.Id_Cliente AND v.fecha between datSTART and datEND +JOIN vn2008.time on time.date = v.fecha +WHERE time.year = intYEAR and time.month = intMONTH +AND c.Id_Trabajador is not null +GROUP BY cc.Id_Trabajador_new +) sub using(Id_Trabajador) +SET comisionArrendada = arrendada, comision = comision - arrendada +WHERE año = intYEAR and mes = intMONTH; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `vendedores_add_launcher` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_add_launcher`() +BEGIN + + call bs.vendedores_add(year(curdate()), month(curdate())); + call bs.vendedores_add(year(timestampadd(month,-1,curdate())), month(timestampadd(month,-1,curdate()))); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `vendedores_evolution_add` */; +ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_evolution_add`() +BEGIN +/* + +Inserta en la tabla compradores_evolution las ventas acumuladas en los ultimos 365 dias + +*/ + +DECLARE datFEC DATE; + + +SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) INTO datFEC FROM bs.vendedores_evolution; + + WHILE datFEC < CURDATE() DO + + SELECT datFEC; + + REPLACE bs.vendedores_evolution( Id_Trabajador + , fecha + , importe) + + SELECT Id_Trabajador + , datFEC as fecha + , sum(importe) as importe + + FROM + ( + + SELECT Id_Trabajador + , importe + FROM bs.vendedores_evolution + WHERE fecha = TIMESTAMPADD(DAY,-1,datFEC) -- las ventas acumuladas del dia anterior + + UNION ALL + + SELECT c.Id_Trabajador + , importe * IF(v.fecha < datFEC,-1,1) -- se restan las ventas del año anterior y se suman las del actual + FROM bs.ventas v + JOIN vn2008.Movimientos m using(Id_Movimiento) + JOIN vn2008.Tickets t using(Id_Ticket) + JOIN vn2008.Consignatarios cs using(Id_Consigna) + JOIN vn2008.Clientes c on cs.Id_Cliente = c.Id_Cliente + JOIN vn2008.Tipos using(tipo_id) + WHERE v.fecha IN (datFEC, TIMESTAMPADD(DAY,-365,datFEC)) + AND c.Id_Trabajador is not null + AND (Id_Article = 98 or Id_Article = 95 or reino_id != 6) + GROUP BY c.Id_Trabajador + + + )sub + GROUP BY Id_Trabajador; + + + + + SET datFEC = TIMESTAMPADD(DAY,1,datFEC); + + END WHILE; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `ventas_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ventas_add`(IN datSTART DATE, IN datEND DATE) +BEGIN + + +DECLARE vStartingPeriod INT; +DECLARE vStartingDate DATETIME; +DECLARE vEndingDate DATETIME; +DECLARE TIPO_PATRIMONIAL INT DEFAULT 188; + +SET datEND = vn2008.dayend(datEND); +SET vStartingDate = GREATEST('2015-10-01',datSTART); +SET vEndingDate = vn2008.dayend(vStartingDate); + +DELETE FROM ventas +WHERE fecha between vStartingDate and datEND; + +WHILE vEndingDate <= datEND DO + + +-- Ventes bioniques + SELECT vStartingDate,vEndingDate; + + INSERT INTO ventas(Id_Movimiento, importe, recargo, fecha, tipo_id, Id_Cliente, empresa_id) + SELECT Id_Movimiento + , sum( IF(base, Cantidad * Valor, 0) ) as importe + , sum( IF(base, 0, Cantidad * Valor) ) as recargo + , vStartingDate + , a.tipo_id + , cs.Id_Cliente + , t.empresa_id + FROM vn2008.Movimientos_componentes mc + JOIN bi.tarifa_componentes tc using(Id_Componente) + JOIN bi.tarifa_componentes_series tcs using(tarifa_componentes_series_id) + JOIN vn2008.Movimientos m using(Id_Movimiento) + JOIN vn2008.Articles a using(Id_Article) + JOIN vn2008.Tipos tp using(tipo_id) + JOIN vn2008.reinos r on r.id = tp.reino_id + JOIN vn2008.Tickets t using(Id_Ticket) + JOIN vn2008.Consignatarios cs using(Id_Consigna) + JOIN vn2008.Clientes c on c.Id_Cliente = cs.Id_Cliente + JOIN vn2008.empresa e on e.id = empresa_id + WHERE t.Fecha between vStartingDate and vEndingDate + AND datEND >= '2015-10-01' + AND ( + c.`Real` != 0 + OR c.Razonsocial = 'MIRIAM FERRER TORIBIO' + OR c.Razonsocial = 'VERDNATURA COMPLEMENTOS' + ) + AND Cantidad <> 0 + AND a.tipo_id != TIPO_PATRIMONIAL + AND c.Id_Trabajador IS NOT NULL + AND m.Descuento <> 100 + AND (m.Id_Article = 98 or m.Id_Article = 95 or r.mercancia != 0) + GROUP BY mc.Id_Movimiento + HAVING IFNULL(importe,0) <> 0 OR IFNULL(recargo,0) <> 0; + +/* +UPDATE vn2008.Movimientos m +JOIN bs.ventas v ON v.Id_Movimiento = m.Id_Movimiento +SET m.Costfixat = IFNULL(round(v.importe/m.Cantidad,2),0) +WHERE v.fecha between vStartingDate and vEndingDate; +*/ + + SET vStartingDate = TIMESTAMPADD(DAY,1, vStartingDate); + SET vEndingDate = vn2008.dayend(vStartingDate); + + IF CURDATE() = '2017-02-28' THEN + SELECT vStartingDate; + END IF; + +END WHILE; + + + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ventas_add_launcher` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ventas_add_launcher`() +BEGIN + + call bs.ventas_add(timestampadd(week,-2,curdate()),curdate()); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ventas_contables_add` */; +ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ventas_contables_add`(IN vYear INT, IN vMonth INT) +BEGIN +/** + * Reemplaza las ventas contables. Es el origen de datos para el balance de Entradas + * + * @param vYear Año a reemplazar + * @param vMonth Mes a reemplazar + * + * + **/ +DECLARE TIPO_PATRIMONIAL INT DEFAULT 188; + +DELETE FROM bs.ventas_contables + WHERE year = vYear + AND month = vMonth; + +DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; + +CREATE TEMPORARY TABLE tmp.ticket_list + (PRIMARY KEY (Id_Ticket)) + SELECT Id_Ticket + FROM vn2008.Tickets t + JOIN vn2008.Facturas f ON f.Id_Factura = t.Factura + WHERE year(f.Fecha) = vYear + AND month(f.Fecha) = vMonth; + + +INSERT INTO bs.ventas_contables(year + , month + , venta + , grupo + , reino_id + , tipo_id + , empresa_id + , gasto) + + SELECT vYear + , vMonth + , round(sum(Cantidad * Preu * (100 - m.Descuento)/100)) + , if( + e.empresa_grupo = e2.empresa_grupo + ,1 + ,if(e2.empresa_grupo,2,0) + ) as grupo + , tp.reino_id + , a.tipo_id + , t.empresa_id + , 7000000000 + + if(e.empresa_grupo = e2.empresa_grupo + ,1 + ,if(e2.empresa_grupo,2,0) + ) * 1000000 + + IF(tp.Id_Trabajador = 24 , 7,tp.reino_id) * 10000 as Gasto + FROM vn2008.Movimientos m + JOIN vn2008.Tickets t on t.Id_Ticket = m.Id_Ticket + JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna + JOIN vn2008.Clientes c on c.Id_Cliente = cs.Id_Cliente + JOIN tmp.ticket_list tt on tt.Id_Ticket = t.Id_Ticket + JOIN vn2008.Articles a on m.Id_Article = a.Id_Article + JOIN vn2008.empresa e on e.id = t.empresa_id + LEFT JOIN vn2008.empresa e2 on e2.Id_Cliente = c.Id_Cliente + JOIN vn2008.Tipos tp on tp.tipo_id = a.tipo_id + WHERE Cantidad <> 0 + AND Preu <> 0 + AND m.Descuento <> 100 + AND a.tipo_id != TIPO_PATRIMONIAL + GROUP BY grupo, reino_id, tipo_id, empresa_id, Gasto; + + +DROP TEMPORARY TABLE tmp.ticket_list; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `ventas_contables_add_launcher` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ventas_contables_add_launcher`() +BEGIN + + call bs.ventas_contables_add(YEAR(TIMESTAMPADD(MONTH,-1,CURDATE())), MONTH(TIMESTAMPADD(MONTH,-1,CURDATE()))); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ventas_contables_por_cliente` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ventas_contables_por_cliente`(IN vYear INT, IN vMonth INT) +BEGIN + + +DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; + +CREATE TEMPORARY TABLE tmp.ticket_list + (PRIMARY KEY (Id_Ticket)) + SELECT Id_Ticket + FROM vn2008.Tickets t + JOIN vn2008.Facturas f ON f.Id_Factura = t.Factura + WHERE year(f.Fecha) = vYear + AND month(f.Fecha) = vMonth; + + + + SELECT vYear Año + , vMonth Mes + , t.Id_Cliente + , round(sum(Cantidad * Preu * (100 - m.Descuento)/100)) Venta + , if( + e.empresa_grupo = e2.empresa_grupo + ,1 + ,if(e2.empresa_grupo,2,0) + ) as grupo + , t.empresa_id empresa + FROM vn2008.Movimientos m + JOIN vn2008.Tickets t on t.Id_Ticket = m.Id_Ticket + JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna + JOIN vn2008.Clientes c on c.Id_Cliente = cs.Id_Cliente + JOIN tmp.ticket_list tt on tt.Id_Ticket = t.Id_Ticket + JOIN vn2008.Articles a on m.Id_Article = a.Id_Article + JOIN vn2008.empresa e on e.id = t.empresa_id + LEFT JOIN vn2008.empresa e2 on e2.Id_Cliente = c.Id_Cliente + JOIN vn2008.Tipos tp on tp.tipo_id = a.tipo_id + WHERE Cantidad <> 0 + AND Preu <> 0 + AND m.Descuento <> 100 + AND a.tipo_id != 188 + GROUP BY t.Id_Cliente, grupo,t.empresa_id; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Current Database: `account` +-- + +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `account` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; + +USE `account`; + +-- +-- Table structure for table `account` +-- + +DROP TABLE IF EXISTS `account`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `account` ( + `id` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + CONSTRAINT `account_ibfk_3` FOREIGN KEY (`id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Users allowed to have an account'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `accountConfig` +-- + +DROP TABLE IF EXISTS `accountConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `accountConfig` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `homedir` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The base folder for users home directories', + `shell` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The default shell', + `min` smallint(6) NOT NULL, + `max` smallint(6) NOT NULL, + `warn` smallint(6) NOT NULL, + `inact` smallint(6) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global configuration parameters for accounts'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `accountDovecot` +-- + +DROP TABLE IF EXISTS `accountDovecot`; +/*!50001 DROP VIEW IF EXISTS `accountDovecot`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `accountDovecot` AS SELECT + 1 AS `name`, + 1 AS `password`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `accountLog` +-- + +DROP TABLE IF EXISTS `accountLog`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `accountLog` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `msg` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `pid` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `user` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `host` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `rhost` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `time` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `accountNss` +-- + +DROP TABLE IF EXISTS `accountNss`; +/*!50001 DROP VIEW IF EXISTS `accountNss`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `accountNss` AS SELECT + 1 AS `surname`, + 1 AS `name`, + 1 AS `password`, + 1 AS `home`, + 1 AS `shell`, + 1 AS `min`, + 1 AS `max`, + 1 AS `warn`, + 1 AS `inact`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `accountPam` +-- + +DROP TABLE IF EXISTS `accountPam`; +/*!50001 DROP VIEW IF EXISTS `accountPam`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `accountPam` AS SELECT + 1 AS `name`, + 1 AS `password`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `ldapConfig` +-- + +DROP TABLE IF EXISTS `ldapConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ldapConfig` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `host` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The hostname of LDAP server', + `rdn` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The LDAP user', + `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Base64 encoded password', + `baseDn` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The base DN to do the query', + `filter` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Filter to apply to the query', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='LDAP server configuration parameters'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mailAlias` +-- + +DROP TABLE IF EXISTS `mailAlias`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mailAlias` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `alias` varchar(50) CHARACTER SET utf8 NOT NULL, + `isPublic` tinyint(4) NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `alias` (`alias`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Mail aliases'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mailAliasAccount` +-- + +DROP TABLE IF EXISTS `mailAliasAccount`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mailAliasAccount` ( + `mailAlias` int(10) unsigned NOT NULL, + `account` int(10) unsigned NOT NULL, + PRIMARY KEY (`mailAlias`,`account`), + KEY `account` (`account`), + CONSTRAINT `account` FOREIGN KEY (`account`) REFERENCES `account` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `mailAlias` FOREIGN KEY (`mailAlias`) REFERENCES `mailAlias` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Mail alias that is assigned to each account'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mailForward` +-- + +DROP TABLE IF EXISTS `mailForward`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mailForward` ( + `account` int(10) unsigned NOT NULL, + `forwardTo` varchar(250) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`account`), + CONSTRAINT `mailForward_ibfk_1` FOREIGN KEY (`account`) REFERENCES `account` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Mail forwarding'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `role` +-- + +DROP TABLE IF EXISTS `role`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `role` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(14) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `hasLogin` tinyint(3) unsigned NOT NULL DEFAULT '0', + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Roles'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `roleInherit` +-- + +DROP TABLE IF EXISTS `roleInherit`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `roleInherit` ( + `role` int(10) unsigned NOT NULL, + `inheritsFrom` int(10) unsigned NOT NULL, + PRIMARY KEY (`role`,`inheritsFrom`), + KEY `owner_id` (`inheritsFrom`), + CONSTRAINT `roleInherit_ibfk_1` FOREIGN KEY (`role`) REFERENCES `role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `roleInherit_ibfk_2` FOREIGN KEY (`inheritsFrom`) REFERENCES `role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Role inheritance'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `roleRole` +-- + +DROP TABLE IF EXISTS `roleRole`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `roleRole` ( + `role` int(10) unsigned NOT NULL, + `inheritsFrom` int(10) unsigned NOT NULL, + UNIQUE KEY `role` (`role`,`inheritsFrom`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Calculated role inheritance'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `sambaConfig` +-- + +DROP TABLE IF EXISTS `sambaConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `sambaConfig` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `host` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The hosname of Samba server', + `sshUser` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The SSH user to connect to servers', + `sshPass` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The SSH password base64 encoded', + `domain` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The default domain for mail accounts, its appended to the user name', + `uidBase` int(10) unsigned NOT NULL DEFAULT '10000' COMMENT 'The base for Unix uids', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global configuration parameters for accounts'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `user` +-- + +DROP TABLE IF EXISTS `user`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `user` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(30) CHARACTER SET utf8 NOT NULL, + `password` char(64) COLLATE utf8_unicode_ci NOT NULL, + `role` int(10) unsigned NOT NULL DEFAULT '2', + `active` tinyint(1) NOT NULL DEFAULT '1', + `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `sync` tinyint(4) NOT NULL DEFAULT '0', + `recoverPass` tinyint(3) unsigned NOT NULL DEFAULT '1', + `lastPassChange` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`), + KEY `role` (`role`), + KEY `email` (`email`), + CONSTRAINT `user_ibfk_2` FOREIGN KEY (`role`) REFERENCES `role` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global users'; +/*!40101 SET character_set_client = @saved_cs_client */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `account`.`userBeforeInsert` +BEFORE INSERT ON `user` FOR EACH ROW +BEGIN + CALL userCheckName (NEW.`name`); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `account`.`userBeforeUpdate` +BEFORE UPDATE ON `user` FOR EACH ROW +BEGIN + IF OLD.`name` != NEW.`name` THEN + CALL userCheckName (NEW.`name`); + END IF; + + IF NEW.`password` != OLD.`password` + OR (OLD.`password` IS NULL AND NEW.`password` IS NOT NULL) + THEN + SET NEW.lastPassChange = NOW(); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `userAfterUpdate` +AFTER UPDATE ON `user` FOR EACH ROW +BEGIN + IF NEW.role <> OLD.role + THEN + INSERT INTO vn2008.mail(`to`,reply_to,`subject`,`text`) + SELECT 'jgallego@verdnatura.es','jgallego@verdnatura.es','Rol modificado', + CONCAT(`name`,' ha modificado el rol del usuario ',NEW.`name`,' de ',OLD.role,' a ',NEW.role) + FROM account.user WHERE id = account.userGetId(); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Table structure for table `userPassword` +-- + +DROP TABLE IF EXISTS `userPassword`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `userPassword` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `length` tinyint(3) unsigned NOT NULL, + `nAlpha` tinyint(3) unsigned NOT NULL, + `nUpper` tinyint(3) unsigned NOT NULL, + `nDigits` tinyint(3) unsigned NOT NULL, + `nPunct` tinyint(3) unsigned NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Restrictions on user passwords'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `userRole` +-- + +DROP TABLE IF EXISTS `userRole`; +/*!50001 DROP VIEW IF EXISTS `userRole`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `userRole` AS SELECT + 1 AS `id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `userSession` +-- + +DROP TABLE IF EXISTS `userSession`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `userSession` ( + `connectionId` int(10) unsigned NOT NULL, + `user` int(10) unsigned NOT NULL, + `userName` varchar(30) CHARACTER SET utf8 DEFAULT NULL, + `creationDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`connectionId`), + KEY `creationDate` (`creationDate`) +) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `userView` +-- + +DROP TABLE IF EXISTS `userView`; +/*!50001 DROP VIEW IF EXISTS `userView`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `userView` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `active`, + 1 AS `email`, + 1 AS `role`, + 1 AS `recoverPass`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Dumping routines for database 'account' +-- +/*!50003 DROP FUNCTION IF EXISTS `toUnixDays` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `toUnixDays`(vDate DATE) RETURNS int(11) + DETERMINISTIC +BEGIN +/** + * Devuelve el timestamp unix en días de una fecha. + * + * @param vData La fecha + * @return Unix timestamp en días + */ + RETURN UNIX_TIMESTAMP(vDate) DIV 86400; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `userGetId` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `userGetId`() RETURNS int(11) + DETERMINISTIC +BEGIN +/** + * Devuelve el identificador del usuario actual. + * + * @return El id del usuario + */ + DECLARE vUser INT DEFAULT NULL; + + SELECT user INTO vUser FROM userSession + WHERE connectionId = CONNECTION_ID(); + + IF vUser IS NULL THEN + SELECT id INTO vUser FROM user + WHERE name = LEFT(USER(), INSTR(USER(), '@') - 1); + END IF; + + RETURN vUser; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `userGetMysqlRole` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `userGetMysqlRole`(vUserName VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 +BEGIN +/** + * A partir de un nombre de usuario devuelve el rol + * de MySQL asociado y con el que deberia autenticarse + * cuando se utilice sistemas de autenticación externos. + * + * @param vUserName El nombre de usuario + * @return El rol de MySQL asociado + */ + DECLARE vRole VARCHAR(255); + + SELECT CONCAT(IF(r.hasLogin, 'z-', ''), r.name) INTO vRole + FROM role r + JOIN user u ON u.role = r.id + WHERE u.name = vUserName; + + RETURN vRole; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `userGetName` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `userGetName`() RETURNS varchar(30) CHARSET utf8 + DETERMINISTIC +BEGIN +/** + * Devuelve el nombre del usuario actual. + * + * @return El nombre de usuario + */ + DECLARE vUser VARCHAR(30) DEFAULT NULL; + + -- FIXME: Esta consulta bloquea la base de datos + SELECT userName INTO vUser + FROM userSession + WHERE connectionId = CONNECTION_ID(); + + IF vUser IS NULL THEN + SET vUser = LEFT(USER(), INSTR(USER(), '@') - 1); + END IF; + + RETURN vUser; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `userGetNameFromId` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `userGetNameFromId`(vId INT) RETURNS varchar(30) CHARSET utf8 +BEGIN +/** + * Obtener nombre de usuari a partir de su id + * + * @param vId Id del usuario + * @return Nombre de usuario + */ + DECLARE vName VARCHAR(30); + + SELECT `name` INTO vName + FROM user + WHERE id = vId; + + RETURN vName; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `userHasRole` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `userHasRole`(vRoleName VARCHAR(255)) RETURNS tinyint(1) + DETERMINISTIC +BEGIN +/** + * Comprueba si el usuario actual tiene asociado un rol. + * + * @param vRoleName Nombre del rol a comprobar + * @return %TRUE si tiene el rol, %FALSE en caso contrario + */ + DECLARE vRoleId INT; + + SELECT id INTO vRoleId + FROM role + WHERE `name` = vRoleName COLLATE 'utf8_unicode_ci'; + + RETURN userHasRoleId (vRoleId); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `userHasRoleId` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `userHasRoleId`(vRoleId INT) RETURNS tinyint(1) + DETERMINISTIC +BEGIN +/** + * Comprueba si el usuario actual tiene asociado un rol. + * + * @param vRoleId Identificador del rol a comprobar + * @return %TRUE si tiene el rol, %FALSE en caso contrario + */ + DECLARE vHasRole BOOL DEFAULT FALSE; + + SELECT COUNT(*) > 0 INTO vHasRole + FROM userRole + WHERE id = vRoleId; + + RETURN vHasRole; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `privSync` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `privSync`() +proc: BEGIN +/** + * Sincroniza los permisos de los usuarios 'rol' de MySQL + * en base a la jerarquía de roles. Los usuarios rol resultantes + * de la mezcla de permisos serán nombrados singuiendo el patrón + * z-[nombre_rol]. + * + * Para que el procedimiento funcione debe de existir un usuario + * any@% que se usara como plantilla base. + * + * ¡Atención! Este procedimiento solo debe ser llamado cuando se + * modifiquen los privilegios de MySQL. Si se modifica la jerarquía + * de roles, se debe llamar al procedimiento roleSync() que llama a + * este internamente. + */ + DECLARE vTplUser VARCHAR(255) DEFAULT 'any'; + DECLARE vHost VARCHAR(255) DEFAULT '%'; + DECLARE vPrefix VARCHAR(2) DEFAULT 'z-'; + + DECLARE vTplExists BOOL; + DECLARE vTplHost VARCHAR(255); + DECLARE vPrefixedLike VARCHAR(255); + + -- Comprueba que el usuario plantilla existe + + SELECT COUNT(*) > 0, `Host` + INTO vTplExists, vTplHost + FROM mysql.user + WHERE `User` = vTplUser + LIMIT 1; + + IF NOT vTplExists THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'TEMPLATE_USER_NOT_EXISTS'; + END IF; + + -- Borra todos los privilegios calculados + + SET vPrefixedLike = CONCAT(vPrefix, '%'); + + DELETE FROM mysql.user + WHERE `User` LIKE vPrefixedLike; + + DELETE FROM mysql.db + WHERE `User` LIKE vPrefixedLike; + + DELETE FROM mysql.tables_priv + WHERE `User` LIKE vPrefixedLike; + + DELETE FROM mysql.columns_priv + WHERE `User` LIKE vPrefixedLike; + + DELETE FROM mysql.procs_priv + WHERE `User` LIKE vPrefixedLike; + + DELETE FROM mysql.proxies_priv + WHERE `Proxied_user` LIKE vPrefixedLike; + + -- Tablas temporales + + DROP TEMPORARY TABLE IF EXISTS tRole; + CREATE TEMPORARY TABLE tRole + ENGINE = MEMORY + SELECT + `name` role, + CONCAT(vPrefix, `name`) prefixedRole + FROM role + WHERE hasLogin; + + DROP TEMPORARY TABLE IF EXISTS tRoleInherit; + CREATE TEMPORARY TABLE tRoleInherit + (INDEX (inheritsFrom)) + ENGINE = MEMORY + SELECT + CONCAT(vPrefix, r.`name`) prefixedRole, + ri.`name` inheritsFrom + FROM role r + JOIN roleRole rr ON rr.role = r.id + JOIN role ri ON ri.id = rr.inheritsFrom; + + -- Vueve a crear el usuario + + INSERT INTO mysql.user ( + `User`, + `Host`, + `Password`, + `ssl_type`, + `ssl_cipher`, + `x509_issuer`, + `x509_subject`, + `max_questions`, + `max_updates`, + `max_connections`, + `max_user_connections` + ) + SELECT + r.prefixedRole, + vTplHost, + IF('' != u.`Password`, + u.`Password`, t.`Password`), + IF('' != u.`ssl_type`, + u.`ssl_type`, t.`ssl_type`), + IF('' != u.`ssl_cipher`, + u.`ssl_cipher`, t.`ssl_cipher`), + IF('' != u.`x509_issuer`, + u.`x509_issuer`, t.`x509_issuer`), + IF('' != u.`x509_subject`, + u.`x509_subject`, t.`x509_subject`), + IF(0 != u.`max_questions`, + u.`max_questions`, t.`max_questions`), + IF(0 != u.`max_updates`, + u.`max_updates`, t.`max_updates`), + IF(0 != u.`max_connections`, + u.`max_connections`, t.`max_connections`), + IF(0 != u.`max_user_connections`, + u.`max_user_connections`, t.`max_user_connections`) + FROM tRole r + JOIN mysql.user t + ON t.`User` = vTplUser + AND t.`Host` = vTplHost + LEFT JOIN mysql.user u + ON u.`User` = r.role + AND u.`Host` = vHost; + + INSERT INTO mysql.proxies_priv ( + `User`, + `Host`, + `Proxied_user`, + `Proxied_host`, + `Grantor` + ) + SELECT + '', + vHost, + prefixedRole, + vHost, + CONCAT(prefixedRole, '@', vTplHost) + FROM tRole; + + -- Copia los privilegios globales del usuario + + DROP TEMPORARY TABLE IF EXISTS tUserPriv; + CREATE TEMPORARY TABLE tUserPriv + (INDEX (prefixedRole)) + ENGINE = MEMORY + SELECT + r.prefixedRole, + MAX(u.`Select_priv`) `Select_priv`, + MAX(u.`Insert_priv`) `Insert_priv`, + MAX(u.`Update_priv`) `Update_priv`, + MAX(u.`Delete_priv`) `Delete_priv`, + MAX(u.`Create_priv`) `Create_priv`, + MAX(u.`Drop_priv`) `Drop_priv`, + MAX(u.`Reload_priv`) `Reload_priv`, + MAX(u.`Shutdown_priv`) `Shutdown_priv`, + MAX(u.`Process_priv`) `Process_priv`, + MAX(u.`File_priv`) `File_priv`, + MAX(u.`Grant_priv`) `Grant_priv`, + MAX(u.`References_priv`) `References_priv`, + MAX(u.`Index_priv`) `Index_priv`, + MAX(u.`Alter_priv`) `Alter_priv`, + MAX(u.`Show_db_priv`) `Show_db_priv`, + MAX(u.`Super_priv`) `Super_priv`, + MAX(u.`Create_tmp_table_priv`) `Create_tmp_table_priv`, + MAX(u.`Lock_tables_priv`) `Lock_tables_priv`, + MAX(u.`Execute_priv`) `Execute_priv`, + MAX(u.`Repl_slave_priv`) `Repl_slave_priv`, + MAX(u.`Repl_client_priv`) `Repl_client_priv`, + MAX(u.`Create_view_priv`) `Create_view_priv`, + MAX(u.`Show_view_priv`) `Show_view_priv`, + MAX(u.`Create_routine_priv`) `Create_routine_priv`, + MAX(u.`Alter_routine_priv`) `Alter_routine_priv`, + MAX(u.`Create_user_priv`) `Create_user_priv`, + MAX(u.`Event_priv`) `Event_priv`, + MAX(u.`Trigger_priv`) `Trigger_priv`, + MAX(u.`Create_tablespace_priv`) `Create_tablespace_priv` + FROM tRoleInherit r + JOIN mysql.user u + ON u.`User` = r.inheritsFrom + AND u.`Host`= vHost + GROUP BY r.prefixedRole; + + UPDATE mysql.user u + JOIN tUserPriv t + ON u.`User` = t.prefixedRole + AND u.`Host` = vHost + SET + u.`Select_priv` + = t.`Select_priv`, + u.`Insert_priv` + = t.`Insert_priv`, + u.`Update_priv` + = t.`Update_priv`, + u.`Delete_priv` + = t.`Delete_priv`, + u.`Create_priv` + = t.`Create_priv`, + u.`Drop_priv` + = t.`Drop_priv`, + u.`Reload_priv` + = t.`Reload_priv`, + u.`Shutdown_priv` + = t.`Shutdown_priv`, + u.`Process_priv` + = t.`Process_priv`, + u.`File_priv` + = t.`File_priv`, + u.`Grant_priv` + = t.`Grant_priv`, + u.`References_priv` + = t.`References_priv`, + u.`Index_priv` + = t.`Index_priv`, + u.`Alter_priv` + = t.`Alter_priv`, + u.`Show_db_priv` + = t.`Show_db_priv`, + u.`Super_priv` + = t.`Super_priv`, + u.`Create_tmp_table_priv` + = t.`Create_tmp_table_priv`, + u.`Lock_tables_priv` + = t.`Lock_tables_priv`, + u.`Execute_priv` + = t.`Execute_priv`, + u.`Repl_slave_priv` + = t.`Repl_slave_priv`, + u.`Repl_client_priv` + = t.`Repl_client_priv`, + u.`Create_view_priv` + = t.`Create_view_priv`, + u.`Show_view_priv` + = t.`Show_view_priv`, + u.`Create_routine_priv` + = t.`Create_routine_priv`, + u.`Alter_routine_priv` + = t.`Alter_routine_priv`, + u.`Create_user_priv` + = t.`Create_user_priv`, + u.`Event_priv` + = t.`Event_priv`, + u.`Trigger_priv` + = t.`Trigger_priv`, + u.`Create_tablespace_priv` + = t.`Create_tablespace_priv`; + + DROP TEMPORARY TABLE tUserPriv; + + -- Copia los privilegios a nivel de esquema + + INSERT INTO mysql.db ( + `User`, + `Host`, + `Db`, + `Select_priv`, + `Insert_priv`, + `Update_priv`, + `Delete_priv`, + `Create_priv`, + `Drop_priv`, + `Grant_priv`, + `References_priv`, + `Index_priv`, + `Alter_priv`, + `Create_tmp_table_priv`, + `Lock_tables_priv`, + `Create_view_priv`, + `Show_view_priv`, + `Create_routine_priv`, + `Alter_routine_priv`, + `Execute_priv`, + `Event_priv`, + `Trigger_priv` + ) + SELECT + r.prefixedRole, + vTplHost, + t.`Db`, + MAX(t.`Select_priv`), + MAX(t.`Insert_priv`), + MAX(t.`Update_priv`), + MAX(t.`Delete_priv`), + MAX(t.`Create_priv`), + MAX(t.`Drop_priv`), + MAX(t.`Grant_priv`), + MAX(t.`References_priv`), + MAX(t.`Index_priv`), + MAX(t.`Alter_priv`), + MAX(t.`Create_tmp_table_priv`), + MAX(t.`Lock_tables_priv`), + MAX(t.`Create_view_priv`), + MAX(t.`Show_view_priv`), + MAX(t.`Create_routine_priv`), + MAX(t.`Alter_routine_priv`), + MAX(t.`Execute_priv`), + MAX(t.`Event_priv`), + MAX(t.`Trigger_priv`) + FROM tRoleInherit r + JOIN mysql.db t + ON t.`User` = r.inheritsFrom + AND t.`Host`= vHost + GROUP BY r.prefixedRole, t.`Db`; + + -- Copia los privilegios a nivel de tabla + + INSERT INTO mysql.tables_priv ( + `User`, + `Host`, + `Db`, + `Table_name`, + `Grantor`, + `Timestamp`, + `Table_priv`, + `Column_priv` + ) + SELECT + r.prefixedRole, + vTplHost, + t.`Db`, + t.`Table_name`, + t.`Grantor`, + MAX(t.`Timestamp`), + GROUP_CONCAT(CONCAT(t.`Table_priv`, ',')), + GROUP_CONCAT(CONCAT(t.`Column_priv`, ',')) + FROM tRoleInherit r + JOIN mysql.tables_priv t + ON t.`User` = r.inheritsFrom + AND t.`Host`= vHost + GROUP BY r.prefixedRole, t.`Db`, t.`Table_name`; + + -- Copia los privilegios a nivel de columna + + INSERT INTO mysql.columns_priv ( + `User`, + `Host`, + `Db`, + `Table_name`, + `Column_name`, + `Timestamp`, + `Column_priv` + ) + SELECT + r.prefixedRole, + vTplHost, + t.`Db`, + t.`Table_name`, + t.`Column_name`, + MAX(t.`Timestamp`), + GROUP_CONCAT(CONCAT(t.`Column_priv`, ',')) + FROM tRoleInherit r + JOIN mysql.columns_priv t + ON t.`User` = r.inheritsFrom + AND t.`Host`= vHost + GROUP BY r.prefixedRole, t.`Db`, t.`Table_name`, t.`Column_name`; + + -- Copia los privilegios de los procedimientos + + INSERT IGNORE INTO mysql.procs_priv ( + `User`, + `Host`, + `Db`, + `Routine_name`, + `Routine_type`, + `Grantor`, + `Timestamp`, + `Proc_priv` + ) + SELECT + r.prefixedRole, + vTplHost, + t.`Db`, + t.`Routine_name`, + t.`Routine_type`, + t.`Grantor`, + t.`Timestamp`, + t.`Proc_priv` + FROM tRoleInherit r + JOIN mysql.procs_priv t + ON t.`User` = r.inheritsFrom + AND t.`Host`= vHost; + + -- Libera memoria + + DROP TEMPORARY TABLE + tRole, + tRoleInherit; + + FLUSH PRIVILEGES; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `roleGetDescendents` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `roleGetDescendents`(vRole INT) +BEGIN +/** + * Obtiene los identificadores de todos los subroles + * implementados por un rol (Incluido el mismo). + * + * @param vRole Identificador del rol + * @table tmp.role Subroles implementados por el rol + */ + DECLARE vIsRoot BOOL; + + DROP TEMPORARY TABLE IF EXISTS + tmp.role, parents, childs; + + CREATE TEMPORARY TABLE tmp.role + (UNIQUE (id)) + ENGINE = MEMORY + SELECT vRole AS id; + + CREATE TEMPORARY TABLE parents + ENGINE = MEMORY + SELECT vRole AS id; + + CREATE TEMPORARY TABLE childs + LIKE parents; + + REPEAT + DELETE FROM childs; + INSERT INTO childs + SELECT DISTINCT r.inheritsFrom id + FROM parents p + JOIN roleInherit r ON r.role = p.id + LEFT JOIN tmp.role t ON t.id = r.inheritsFrom + WHERE t.id IS NULL; + + DELETE FROM parents; + INSERT INTO parents + SELECT * FROM childs; + + INSERT INTO tmp.role + SELECT * FROM childs; + + UNTIL ROW_COUNT() <= 0 + END REPEAT; + + -- If it is root all the roles are added + + SELECT COUNT(*) > 0 INTO vIsRoot + FROM tmp.role + WHERE id = 0; + + IF vIsRoot THEN + INSERT IGNORE INTO tmp.role (id) + SELECT id FROM role; + END IF; + + -- Cleaning + + DROP TEMPORARY TABLE + parents, childs; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `roleSync` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `roleSync`() +BEGIN +/** + * Sincroniza la tabla @roleRole con la jerarquía de roles + * actual. Este procedimiento debe ser llamado cada vez que + * se modifique la tabla @roleInherit para que los cambios + * realizados sobre esta sean efectivos. + */ + DECLARE vRoleId INT; + DECLARE vDone BOOL; + + DECLARE cur CURSOR FOR + SELECT id FROM role; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + TRUNCATE TABLE roleRole; + + OPEN cur; + + l: LOOP + SET vDone = FALSE; + FETCH cur INTO vRoleId; + + IF vDone THEN + LEAVE l; + END IF; + + CALL roleGetDescendents (vRoleId); + + INSERT INTO roleRole (role, inheritsFrom) + SELECT vRoleId, id FROM tmp.role; + + DROP TEMPORARY TABLE tmp.role; + END LOOP; + + CLOSE cur; + + CALL privSync(); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `userChangePassword` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `userChangePassword`(vOldPassword VARCHAR(255), vPassword VARCHAR(255)) +BEGIN +/** + * Cambia la contraseña del usuario actual,si el usuario se + * encuntra en modo restauración se ignorará la contraseña + * actual. + * + * @param vOldPassword Contraseña actual + * @param vPassword Nueva contraseña + */ + DECLARE vPasswordOk BOOL; + + SELECT `password` = MD5(vOldPassword) OR recoverPass + INTO vPasswordOk + FROM user WHERE id = account.userGetId(); + + IF NOT vPasswordOk THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'Invalid password'; + END IF; + + CALL userSetPassword (userGetName(), vPassword); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `userCheckName` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `userCheckName`(vUserName VARCHAR(255)) +BEGIN +/** + * Comprueba que el nombre de usuario reune los requisitos + * de sintaxis necesarios, en caso contrario lanza una + * excepción. + * El nombre de usuario solo debe contener letras minúsculas + * o, a partir del segundo carácter, números o subguiones. + **/ + IF vUserName NOT REGEXP '^[a-z0-9_]*$' THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'INVALID_USER_NAME'; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `userCheckPassword` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `userCheckPassword`(vPassword VARCHAR(255)) +BEGIN +/** + * Comprueba si la contraseña cumple los requisitos de seguridad + * establecidos. Lanza una excepción si no se cumplen. + * + * @param vPassword Contraseña a comprobar + */ + DECLARE vChr CHAR(1); + DECLARE vPasswordOk TINYINT; + DECLARE vI TINYINT DEFAULT 1; + DECLARE vNAlpha TINYINT DEFAULT 0; + DECLARE vNUpper TINYINT DEFAULT 0; + DECLARE vNDigits TINYINT DEFAULT 0; + DECLARE vNPunct TINYINT DEFAULT 0; + + WHILE vI <= CHAR_LENGTH(vPassword) + DO + SET vChr = SUBSTRING(vPassword, vI, 1); + + IF vChr REGEXP '[[:alpha:]]' + THEN + SET vNAlpha = vNAlpha+1; + + IF vChr REGEXP '[A-Z]' + THEN + SET vNUpper = vNUpper+1; + END IF; + ELSEIF vChr REGEXP '[[:digit:]]' + THEN + SET vNDigits = vNDigits+1; + ELSEIF vChr REGEXP '[[:punct:]]' + THEN + SET vNPunct = vNPunct+1; + END IF; + + SET vI = vI+1; + END WHILE; + + SELECT + CHAR_LENGTH(vPassword) >= length + AND vNAlpha >= nAlpha + AND vNUpper >= nUpper + AND vNDigits >= nDigits + AND vNPunct >= nPunct + INTO vPasswordOk + FROM userPassword LIMIT 1; + + IF NOT vPasswordOk THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'Password does not meet requirements'; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `userLogin` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `userLogin`(vUserName VARCHAR(255), vPassword VARCHAR(255)) +BEGIN +/** + * Incicia sesión utilizando las credenciales del usuario. + * + * @param vUserName El nombre de usuario + * @param vPassword La contraseña del usuario + */ + DECLARE vUserId INT DEFAULT NULL; + + SELECT id INTO vUserId FROM user + WHERE name = vUserName + AND password = MD5(vPassword) + AND active; + + IF vUserId IS NOT NULL + THEN + REPLACE INTO userSession (connectionId, user, userName) + VALUES (CONNECTION_ID(), vUserId, vUserName); + ELSE + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'INVALID_CREDENTIALS'; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `userLoginWithName` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `userLoginWithName`(vUserName VARCHAR(255)) +BEGIN +/** + * Incicia sesión utilizando únicamente el nombre del + * usuario. Este procedimiento esta pensado para el uso + * de los desarrolladores por lo que los usuarios normales + * no deberían tener permisos de ejecución sobre él. + * + * @param vUserName El nombre de usuario + */ + DECLARE vUserId INT DEFAULT NULL; + + SELECT id INTO vUserId FROM user + WHERE name = vUserName; + + REPLACE INTO userSession (connectionId, user, userName) + VALUES (CONNECTION_ID(), vUserId, vUserName); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `userLogout` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `userLogout`() +BEGIN +/** + * Cierra la sesión del usuario y limpia registros + * residuales. + */ + DECLARE vCleanTime DATETIME + DEFAULT TIMESTAMPADD(MINUTE, -30, NOW()); + + DELETE FROM userSession + WHERE connectionId = CONNECTION_ID() + OR creationDate < vCleanTime; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `userSetPassword` */; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `userSetPassword`(vUserName VARCHAR(255), vPassword VARCHAR(255)) +BEGIN +/** + * Cambia la contraseña del usuario pasado como parámetro. + * Solo los administradores deberian de tener privilegios de + * ejecución sobre el procedimiento ya que no solicita la + * contraseña actual del usuario. + * + * @param vUserName Nombre de usuario + * @param vPassword Nueva contraseña + */ + CALL userCheckPassword (vPassword); + + UPDATE user SET + password = MD5(vPassword), + recoverPass = FALSE + WHERE `name` = vUserName; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `account` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Current Database: `cache` +-- + +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `cache` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; + +USE `cache`; + +-- +-- Table structure for table `available` +-- + +DROP TABLE IF EXISTS `available`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `available` ( + `calc_id` int(10) unsigned NOT NULL, + `item_id` int(11) NOT NULL, + `available` int(11) NOT NULL, + KEY `calc_id_4` (`calc_id`) USING BTREE, + KEY `calc_id` (`item_id`,`calc_id`) +) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `barcodes` +-- + +DROP TABLE IF EXISTS `barcodes`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `barcodes` ( + `code` varchar(22) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `Id_Article` int(11) NOT NULL DEFAULT '0', + `Article` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `Medida` int(10) unsigned DEFAULT NULL, + `Color` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `Categoria` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `Producer` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cache` +-- + +DROP TABLE IF EXISTS `cache`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cache` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) CHARACTER SET utf8 NOT NULL, + `lifetime` time NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cache_calc` +-- + +DROP TABLE IF EXISTS `cache_calc`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cache_calc` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `cache_id` int(10) unsigned NOT NULL, + `cacheName` varchar(255) CHARACTER SET utf8 DEFAULT NULL, + `params` varchar(100) CHARACTER SET utf8 NOT NULL DEFAULT '', + `last_refresh` datetime DEFAULT NULL, + `expires` datetime DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `connection_id` int(10) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `cache_name` (`cache_id`,`params`), + KEY `cache_id` (`cache_id`), + KEY `cacheName` (`cacheName`), + KEY `expires` (`expires`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `cache_valid` +-- + +DROP TABLE IF EXISTS `cache_valid`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cache_valid` ( + `valid` tinyint(3) unsigned NOT NULL +) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `daily_task_log` +-- + +DROP TABLE IF EXISTS `daily_task_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `daily_task_log` ( + `state` varchar(250) COLLATE utf8_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='No he encontrado el lugar en el que vicente almacena la hora en que se ejecutan las daily tasks, asi que he hecho esta tabla, a eliminar cuando se considere oportuno'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `departure_limit` +-- + +DROP TABLE IF EXISTS `departure_limit`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `departure_limit` ( + `warehouse_id` smallint(6) unsigned NOT NULL, + `fecha` date NOT NULL, + `hora` int(11) NOT NULL DEFAULT '0', + `minSpeed` decimal(10,2) NOT NULL DEFAULT '0.00', + PRIMARY KEY (`warehouse_id`,`fecha`), + CONSTRAINT `warehouse_departure` FOREIGN KEY (`warehouse_id`) REFERENCES `vn2008`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `equalizator` +-- + +DROP TABLE IF EXISTS `equalizator`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `equalizator` ( + `warehouse_id` int(11) NOT NULL, + `Vista` int(11) NOT NULL, + `Pedido` int(11) DEFAULT NULL, + `Impreso` int(11) DEFAULT NULL, + `Encajado` int(11) DEFAULT NULL, + PRIMARY KEY (`Vista`,`warehouse_id`) +) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `itemTagFormat` +-- + +DROP TABLE IF EXISTS `itemTagFormat`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `itemTagFormat` ( + `itemFk` int(11) NOT NULL, + `labels1` varchar(80) CHARACTER SET utf8 DEFAULT NULL, + `values1` varchar(80) CHARACTER SET utf8 DEFAULT NULL, + `labels2` varchar(80) CHARACTER SET utf8 DEFAULT NULL, + `values2` varchar(80) CHARACTER SET utf8 DEFAULT NULL, + `description` varchar(255) CHARACTER SET utf8 DEFAULT NULL, + PRIMARY KEY (`itemFk`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Almacena el formato para los tags de los articulos'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `item_range` +-- + +DROP TABLE IF EXISTS `item_range`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `item_range` ( + `calc_id` int(11) NOT NULL, + `item_id` int(11) NOT NULL, + `date_end` datetime DEFAULT NULL, + KEY `calc_item` (`calc_id`,`item_id`), + KEY `calc_id` (`calc_id`) USING BTREE +) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `last_buy` +-- + +DROP TABLE IF EXISTS `last_buy`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `last_buy` ( + `item_id` int(10) unsigned NOT NULL, + `warehouse_id` smallint(5) unsigned NOT NULL, + `buy_id` int(10) unsigned DEFAULT NULL, + `landing` date DEFAULT NULL, + KEY `buy_id` (`buy_id`), + KEY `item_id` (`item_id`,`warehouse_id`), + KEY `warehouse_id` (`warehouse_id`) USING BTREE +) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `prod_graphic_source` +-- + +DROP TABLE IF EXISTS `prod_graphic_source`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `prod_graphic_source` ( + `m3` double NOT NULL DEFAULT '0', + `warehouse_id` int(11) NOT NULL, + `hora` int(11) NOT NULL, + `order` int(11) NOT NULL DEFAULT '0', + `alert_level` int(11) NOT NULL DEFAULT '0', + `Agencia` varchar(45) CHARACTER SET utf8 NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `stock` +-- + +DROP TABLE IF EXISTS `stock`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `stock` ( + `warehouse_id` smallint(5) unsigned NOT NULL, + `item_id` int(10) unsigned NOT NULL, + `amount` int(11) NOT NULL, + KEY `warehouse_id` (`warehouse_id`,`item_id`), + KEY `warehouse_id_2` (`warehouse_id`) USING BTREE +) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `visible` +-- + +DROP TABLE IF EXISTS `visible`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `visible` ( + `calc_id` int(10) unsigned NOT NULL, + `item_id` int(11) NOT NULL, + `visible` int(11) NOT NULL, + KEY `id` (`calc_id`) USING BTREE, + KEY `calc_id` (`calc_id`,`item_id`) +) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `weekly_sales` +-- + +DROP TABLE IF EXISTS `weekly_sales`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `weekly_sales` ( + `week` int(10) unsigned NOT NULL, + `item_id` int(10) unsigned NOT NULL, + `warehouse_id` smallint(5) unsigned NOT NULL, + `amount` int(11) NOT NULL, + `price` double NOT NULL, + KEY `item_id` (`item_id`,`warehouse_id`), + KEY `week` (`week`) USING BTREE +) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping routines for database 'cache' +-- +/*!50003 DROP PROCEDURE IF EXISTS `available_refresh` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `available_refresh`(OUT v_calc INT, v_refresh BOOL, v_warehouse INT, v_date DATE) +proc: BEGIN + DECLARE v_date_ini DATE; + DECLARE v_date_end DATETIME; + DECLARE v_reserve_date DATETIME; + DECLARE v_params CHAR(100); + DECLARE v_date_inv DATE; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + CALL cache_calc_unlock (v_calc); + RESIGNAL; + END; + + IF v_date < CURDATE() + THEN + LEAVE proc; + END IF; + + CALL vn2008.item_stock (v_warehouse, v_date, NULL); + + SET v_params = CONCAT_WS('/', v_warehouse, v_date); + CALL cache_calc_start (v_calc, v_refresh, 'available', v_params); + + IF !v_refresh + THEN + LEAVE proc; + END IF; + + -- Limpia las caches antiguas + + DELETE a + FROM available a + LEFT JOIN cache_calc c ON c.id = a.calc_id + WHERE c.id IS NULL; + + -- Calcula algunos parámetros necesarios + + SET v_date_ini = TIMESTAMP(v_date, '00:00:00'); + SET v_date_end = TIMESTAMP(TIMESTAMPADD(DAY, 4, v_date), '23:59:59'); + + SELECT FechaInventario INTO v_date_inv FROM vn2008.tblContadores; + + SELECT SUBTIME(NOW(), reserve_time) INTO v_reserve_date + FROM hedera.order_config; + + -- Calcula el ultimo dia de vida para cada producto + + DROP TEMPORARY TABLE IF EXISTS item_range; + CREATE TEMPORARY TABLE item_range + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT c.item_id, IF(t.life IS NULL, NULL, TIMESTAMP(TIMESTAMPADD(DAY, t.life, c.landing), '23:59:59')) AS date_end + FROM ( + SELECT c.Id_Article item_id, MAX(landing) landing + FROM vn2008.Compres c + JOIN vn2008.Entradas e ON c.Id_Entrada = e.Id_Entrada + JOIN vn2008.travel t ON t.id = e.travel_id + JOIN vn2008.warehouse w ON w.id = t.warehouse_id + WHERE t.landing BETWEEN v_date_inv AND v_date_ini + AND t.warehouse_id = v_warehouse + AND NOT e.Inventario + AND NOT e.Redada + GROUP BY Id_Article + ) c + JOIN vn2008.Articles a ON a.Id_Article = c.item_id + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + HAVING date_end >= v_date_ini OR date_end IS NULL; +/* + -- Tabla con el ultimo dia de precios fijados para cada producto que hace un replace de la anterior + + DROP TEMPORARY TABLE IF EXISTS item_range_copy; + CREATE TEMPORARY TABLE item_range_copy LIKE item_range; + INSERT INTO item_range_copy + SELECT * FROM item_range; + + REPLACE item_range + SELECT item_id, TIMESTAMP(date_end, '23:59:59') date_end FROM ( + SELECT p.item_id, p.date_end + FROM vn2008.price_fixed p + LEFT JOIN item_range_copy i USING(item_id) + WHERE IFNULL(i.date_end,v_date_ini) BETWEEN p.date_start AND p.date_end + AND warehouse_id IN (0, v_warehouse) + ORDER BY item_id, warehouse_id DESC, date_end DESC + ) t GROUP BY item_id; + + DROP TEMPORARY TABLE item_range_copy; +*/ + -- Replica la tabla item_range para poder usarla varias veces en la misma consulta + + DROP TEMPORARY TABLE IF EXISTS item_range_copy1; + CREATE TEMPORARY TABLE item_range_copy1 LIKE item_range; + INSERT INTO item_range_copy1 + SELECT * FROM item_range; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy2; + CREATE TEMPORARY TABLE item_range_copy2 LIKE item_range; + INSERT INTO item_range_copy2 + SELECT * FROM item_range; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy3; + CREATE TEMPORARY TABLE item_range_copy3 LIKE item_range; + INSERT INTO item_range_copy3 + SELECT * FROM item_range; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy4; + CREATE TEMPORARY TABLE item_range_copy4 LIKE item_range; + INSERT INTO item_range_copy4 + SELECT * FROM item_range; + + -- Calcula el ATP + + DELETE FROM available WHERE calc_id = v_calc; + + INSERT INTO available (calc_id, item_id, available) + SELECT v_calc, t.item_id, SUM(stock) amount FROM ( + SELECT ti.item_id, stock + FROM vn2008.tmp_item ti + JOIN item_range ir ON ir.item_id = ti.item_id + UNION ALL + SELECT t.item_id, minacum(dt, amount, v_date) AS available FROM ( + SELECT item_id, DATE(dat) dt, SUM(amount) amount FROM ( + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_out i + JOIN item_range_copy1 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = v_warehouse + UNION ALL + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_entry_in i + JOIN item_range_copy2 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = v_warehouse + UNION ALL + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_entry_out i + JOIN item_range_copy3 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = v_warehouse + UNION ALL + SELECT r.item_id, r.shipment, -r.amount + FROM hedera.order_row r + JOIN hedera.`order` o ON o.id = r.order_id + JOIN item_range_copy4 ir ON ir.item_id = r.item_id + WHERE r.shipment >= v_date_ini + AND (ir.date_end IS NULL OR r.shipment <= ir.date_end) + AND r.warehouse_id = v_warehouse + AND r.created >= v_reserve_date + AND NOT o.confirmed + ) t + GROUP BY item_id, dt + ) t + GROUP BY t.item_id + ) t GROUP BY t.item_id HAVING amount != 0; + + + DROP TEMPORARY TABLE + vn2008.tmp_item + ,item_range + ,item_range_copy1 + ,item_range_copy2 + ,item_range_copy3 + ,item_range_copy4; + + CALL cache_calc_end (v_calc); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `available_refreshtest` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `available_refreshtest`(OUT v_calc INT, v_refresh BOOL, v_warehouse INT, v_date DATE) +proc: BEGIN + DECLARE v_date_ini DATE; + DECLARE v_date_end DATETIME; + DECLARE v_reserve_date DATETIME; + DECLARE v_params CHAR(100); + DECLARE v_date_inv DATE; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + CALL cache_calc_unlock (v_calc); + RESIGNAL; + END; + + IF v_date < CURDATE() + THEN + LEAVE proc; + END IF; + + CALL vn2008.item_stock (v_warehouse, v_date, NULL); + + SET v_params = CONCAT_WS('/', v_warehouse, v_date); + CALL cache_calc_start (v_calc, v_refresh, 'available', v_params); + + IF !v_refresh + THEN + LEAVE proc; + END IF; + + -- Limpia las caches antiguas + + IF TRUE -- GET_LOCK('available/clean', 1) + THEN + DELETE FROM available WHERE calc_id NOT IN ( + SELECT cc.id + FROM `cache` c + JOIN cache_calc cc ON c.id = cc.cache_id + WHERE c.`name` = 'available'); + + -- DO RELEASE_LOCK('available/clean'); + END IF; + + -- Calcula algunos parámetros necesarios + + SET v_date_ini = TIMESTAMP(v_date, '00:00:00'); + SET v_date_end = TIMESTAMP(TIMESTAMPADD(DAY, 4, v_date), '23:59:59'); + + SELECT FechaInventario INTO v_date_inv FROM vn2008.tblContadores; + + SELECT SUBTIME(NOW(), reserve_time) INTO v_reserve_date + FROM hedera.order_config; + + -- Calcula el ultimo dia de vida para cada producto + + DROP TEMPORARY TABLE IF EXISTS item_range; + CREATE TEMPORARY TABLE item_range + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT c.item_id, IF(t.life IS NULL, NULL, TIMESTAMP(TIMESTAMPADD(DAY, t.life, c.landing), '23:59:59')) AS date_end + FROM ( + SELECT c.Id_Article item_id, MAX(landing) landing + FROM vn2008.Compres c + JOIN vn2008.Entradas e ON c.Id_Entrada = e.Id_Entrada + JOIN vn2008.travel t ON t.id = e.travel_id + JOIN vn2008.warehouse w ON w.id = t.warehouse_id + WHERE t.landing BETWEEN v_date_inv AND v_date_ini + AND t.warehouse_id = v_warehouse + AND NOT e.Inventario + AND NOT e.Redada + GROUP BY Id_Article + ) c + JOIN vn2008.Articles a ON a.Id_Article = c.item_id + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + HAVING date_end >= v_date_ini OR date_end IS NULL; +/* + -- Tabla con el ultimo dia de precios fijados para cada producto que hace un replace de la anterior + + DROP TEMPORARY TABLE IF EXISTS item_range_copy; + CREATE TEMPORARY TABLE item_range_copy LIKE item_range; + INSERT INTO item_range_copy + SELECT * FROM item_range; + + REPLACE item_range + SELECT item_id, TIMESTAMP(date_end, '23:59:59') date_end FROM ( + SELECT p.item_id, p.date_end + FROM vn2008.price_fixed p + LEFT JOIN item_range_copy i USING(item_id) + WHERE IFNULL(i.date_end,v_date_ini) BETWEEN p.date_start AND p.date_end + AND warehouse_id IN (0, v_warehouse) + ORDER BY item_id, warehouse_id DESC, date_end DESC + ) t GROUP BY item_id; + + DROP TEMPORARY TABLE item_range_copy; +*/ + -- Replica la tabla item_range para poder usarla varias veces en la misma consulta + + DROP TEMPORARY TABLE IF EXISTS item_range_copy1; + CREATE TEMPORARY TABLE item_range_copy1 LIKE item_range; + INSERT INTO item_range_copy1 + SELECT * FROM item_range; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy2; + CREATE TEMPORARY TABLE item_range_copy2 LIKE item_range; + INSERT INTO item_range_copy2 + SELECT * FROM item_range; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy3; + CREATE TEMPORARY TABLE item_range_copy3 LIKE item_range; + INSERT INTO item_range_copy3 + SELECT * FROM item_range; + + DROP TEMPORARY TABLE IF EXISTS item_range_copy4; + CREATE TEMPORARY TABLE item_range_copy4 LIKE item_range; + INSERT INTO item_range_copy4 + SELECT * FROM item_range; + + -- Calcula el ATP + + DELETE FROM available WHERE calc_id = v_calc; + + INSERT INTO available (calc_id, item_id, available) + SELECT v_calc, t.item_id, SUM(stock) amount FROM ( + SELECT ti.item_id, stock + FROM vn2008.tmp_item ti + JOIN item_range ir ON ir.item_id = ti.item_id + UNION ALL + SELECT t.item_id, minacum(dt, amount, v_date) AS available FROM ( + SELECT item_id, DATE(dat) dt, SUM(amount) amount FROM ( + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_out i + JOIN item_range_copy1 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = v_warehouse + UNION ALL + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_entry_in i + JOIN item_range_copy2 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = v_warehouse + UNION ALL + SELECT i.item_id, i.dat, i.amount + FROM vn2008.item_entry_out i + JOIN item_range_copy3 ir ON ir.item_id = i.item_id + WHERE i.dat >= v_date_ini + AND (ir.date_end IS NULL OR i.dat <= ir.date_end) + AND i.warehouse_id = v_warehouse + UNION ALL + SELECT r.item_id, r.shipment, -r.amount + FROM hedera.order_row r + JOIN hedera.`order` o ON o.id = r.order_id + JOIN item_range_copy4 ir ON ir.item_id = r.item_id + WHERE r.shipment >= v_date_ini + AND (ir.date_end IS NULL OR r.shipment <= ir.date_end) + AND r.warehouse_id = v_warehouse + AND r.created >= v_reserve_date + AND NOT o.confirmed + ) t + GROUP BY item_id, dt + ) t + GROUP BY t.item_id + ) t GROUP BY t.item_id HAVING amount != 0; + + DROP TEMPORARY TABLE + vn2008.tmp_item + ,item_range + ,item_range_copy1 + ,item_range_copy2 + ,item_range_copy3 + ,item_range_copy4; + + CALL cache_calc_end (v_calc); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `barcodes_articles_update` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `barcodes_articles_update`() +BEGIN + +REPLACE cache.barcodes + + SELECT + `Articles`.`Id_Article` AS `code`, + `Articles`.`Id_Article` AS `Id_Article`, + `Articles`.`Article` AS `Article`, + `Articles`.`Medida` AS `Medida`, + `Articles`.`Color` AS `Color`, + `Articles`.`Categoria` AS `Categoria`, + `p`.`name` AS `Producer` + FROM + vn2008.Articles + LEFT JOIN vn2008.`producer` `p` using(producer_id); + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `barcodes_barcodes_update` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `barcodes_barcodes_update`() +BEGIN + +REPLACE cache.barcodes + + SELECT + `barcodes`.`code` AS `code`, + `barcodes`.`Id_Article` AS `Id_Article`, + `Articles`.`Article` AS `Article`, + `Articles`.`Medida` AS `Medida`, + `Articles`.`Color` AS `Color`, + `Articles`.`Categoria` AS `Categoria`, + `p`.`name` AS `Producer` + FROM + vn2008.`barcodes` + JOIN + vn2008.Articles using(Id_Article) + LEFT JOIN vn2008.`producer` `p` using(producer_id); + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `barcodes_compres_update` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `barcodes_compres_update`() +BEGIN + +REPLACE cache.barcodes + + SELECT + Compres.`Id_Compra` AS `code`, + Compres.`Id_Article` AS `Id_Article`, + `Articles`.`Article` AS `Article`, + `Articles`.`Medida` AS `Medida`, + `Articles`.`Color` AS `Color`, + `Articles`.`Categoria` AS `Categoria`, + producer.`name` AS `Producer` + + + FROM + vn2008.Compres + JOIN vn2008.Articles using(Id_Article) + LEFT JOIN vn2008.producer using(producer_id) + JOIN vn2008.Entradas using(Id_Entrada) + JOIN vn2008.travel on travel.id = travel_id + WHERE + landing >= TIMESTAMPADD(WEEK, -2, CURDATE()) + ; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `barcodes_expeditions_update` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `barcodes_expeditions_update`(IN idExpedition BIGINT) +BEGIN + +REPLACE cache.barcodes + + SELECT + `e`.`expeditions_id` AS `code`, + `Tickets`.`Id_Ruta` AS `Id_Article`, + `Tickets`.`Alias` AS `Article`, + `Tickets`.`Bultos` AS `Medida`, + `Tickets`.`Id_Ruta` AS `Color`, + `w`.`name` AS `Categoria`, + `a`.`Agencia` AS `Producer` + FROM + vn2008.expeditions `e` + JOIN vn2008.Tickets ON `Tickets`.`Id_Ticket` = `e`.`ticket_id` + JOIN vn2008.warehouse `w` ON `w`.`id` = `Tickets`.`warehouse_id` + JOIN vn2008.Rutas `r` ON `r`.`Id_Ruta` = `Tickets`.`Id_Ruta` + JOIN vn2008.Agencias `a` ON `a`.`Id_Agencia` = `r`.`Id_Agencia` + WHERE + idExpedition IN (e.expeditions_id,0) + AND + `Tickets`.`Fecha` >= (CURDATE() + INTERVAL -(2) DAY) + + + ; + + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `barcodes_update` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `barcodes_update`() +BEGIN + + declare allExpeditions int default 0; + + call barcodes_articles_update; + + call barcodes_barcodes_update; + + call barcodes_compres_update; + + call barcodes_expeditions_update(allExpeditions); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `cacheCalcClean` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `cacheCalcClean`() +BEGIN + DECLARE vCleanTime DATETIME DEFAULT TIMESTAMPADD(MINUTE, -5, NOW()); + + DELETE FROM cache_calc WHERE expires < vCleanTime; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `cache_calc_end` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `cache_calc_end`(v_calc INT) +BEGIN + DECLARE v_cache_name VARCHAR(255); + DECLARE v_params VARCHAR(255); + + -- Libera el bloqueo y actualiza la fecha de ultimo refresco. + + UPDATE cache_calc cc JOIN cache c ON c.id = cc.cache_id + SET + cc.last_refresh = NOW(), + cc.expires = ADDTIME(NOW(), c.lifetime), + cc.connection_id = NULL + WHERE cc.id = v_calc; + + SELECT c.name, ca.params INTO v_cache_name, v_params + FROM cache c + JOIN cache_calc ca ON c.id = ca.cache_id + WHERE ca.id = v_calc; + + DO RELEASE_LOCK(CONCAT_WS('/', v_cache_name, IFNULL(v_params, ''))); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `cache_calc_start` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `cache_calc_start`(OUT v_calc INT, INOUT v_refresh BOOL, v_cache_name VARCHAR(50), v_params VARCHAR(100)) +proc: BEGIN + DECLARE v_valid BOOL; + DECLARE v_lock_id VARCHAR(100); + DECLARE v_cache_id INT; + DECLARE v_expires DATETIME; + DECLARE v_clean_time DATETIME; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + DO RELEASE_LOCK(v_lock_id); + RESIGNAL; + END; + + SET v_params = IFNULL(v_params, ''); + + -- Si el servidor se ha reiniciado invalida todos los calculos. + + SELECT COUNT(*) > 0 INTO v_valid FROM cache_valid; + + IF !v_valid + THEN + DELETE FROM cache_calc; + INSERT INTO cache_valid (valid) VALUES (TRUE); + END IF; + + -- Obtiene un bloqueo exclusivo para que no haya problemas de concurrencia. + + SET v_lock_id = CONCAT_WS('/', v_cache_name, v_params); + + IF !GET_LOCK(v_lock_id, 30) + THEN + SET v_calc = NULL; + SET v_refresh = FALSE; + LEAVE proc; + END IF; + + -- Comprueba si el calculo solicitado existe y esta actualizado. + + SELECT c.id, ca.id, ca.expires + INTO v_cache_id, v_calc, v_expires + FROM cache c + LEFT JOIN cache_calc ca + ON ca.cache_id = c.id AND ca.params = v_params COLLATE 'utf8_general_ci' + WHERE c.name = v_cache_name COLLATE 'utf8_general_ci'; + + -- Si existe una calculo valido libera el bloqueo y devuelve su identificador. + + IF !v_refresh AND NOW() < v_expires + THEN + DO RELEASE_LOCK(v_lock_id); + SET v_refresh = FALSE; + LEAVE proc; + END IF; + + -- Si el calculo no existe le crea una entrada en la tabla de calculos. + + IF v_calc IS NULL + THEN + INSERT INTO cache_calc SET + cache_id = v_cache_id, + cacheName = v_cache_name, + params = v_params, + last_refresh = NULL, + expires = NULL, + connection_id = CONNECTION_ID(); + + SET v_calc = LAST_INSERT_ID(); + ELSE + UPDATE cache_calc + SET + last_refresh = NULL, + expires = NULL, + connection_id = CONNECTION_ID() + WHERE id = v_calc; + END IF; + + -- Si se debe recalcular mantiene el bloqueo y devuelve su identificador. + + SET v_refresh = TRUE; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `cache_calc_unlock` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `cache_calc_unlock`(v_calc INT) +BEGIN + DECLARE v_cache_name VARCHAR(50); + DECLARE v_params VARCHAR(100); + + SELECT c.name, ca.params INTO v_cache_name, v_params + FROM cache c + JOIN cache_calc ca ON c.id = ca.cache_id + WHERE ca.id = v_calc; + + DELETE FROM cache_calc WHERE id = v_calc; + + DO RELEASE_LOCK(CONCAT_WS('/', v_cache_name, IFNULL(v_params, ''))); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `clean` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `clean`() +BEGIN + + DECLARE vDateShort DATETIME; + + SET vDateShort = TIMESTAMPADD(MONTH, -1, CURDATE()); + + INSERT INTO cache.daily_task_log(state) VALUES('clean START'); + + DELETE FROM cache.departure_limit WHERE Fecha < vDateShort; + + INSERT INTO cache.daily_task_log(state) VALUES('clean END'); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `departure_timing` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `departure_timing`() +BEGIN + +DECLARE done BOOL DEFAULT FALSE; +DECLARE rsDeparture INT; +DECLARE rsHoras DECIMAL(5,2); +DECLARE rsInicio DECIMAL(5,2); +DECLARE resto DECIMAL(5,2); +DECLARE horasProd DECIMAL(5,2); +DECLARE inicioProd DECIMAL(5,2) DEFAULT 24.00; +DECLARE myTime DECIMAL(5,2); +DECLARE departureLimit INT; +DECLARE myWarehouse INT; +DECLARE myMinSpeed DECIMAL(10,2); + + +DECLARE rs CURSOR FOR + SELECT Departure + , Sum(pb.m3)/(GREATEST(v.m3,IFNULL(minSpeed,0))/1.3) AS Horas + , curDate()+(Departure-(Sum(pb.m3)/(GREATEST(v.m3,IFNULL(minSpeed,0))/1.3))/24) AS InicioPreparacion + FROM tmp.production_buffer pb + JOIN vn2008.v_encajado_ultima_hora v ON v.warehouse_id = pb.warehouse_id + LEFT JOIN cache.departure_limit dp ON dp.warehouse_id = pb.warehouse_id AND dp.fecha = CURDATE() + WHERE pb.Fecha = CURDATE() + AND alert_level < 2 + AND IFNULL(Departure,0) > 0 + GROUP BY Departure + ORDER BY Departure DESC; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +SET myTime = HOUR(now()) + MINUTE(now()) / 60; + +SELECT warehouse_id INTO myWarehouse +FROM tmp.production_buffer +LIMIT 1; + +OPEN rs; + +FETCH rs INTO rsDeparture, rsHoras , rsInicio; + +-- SELECT rsDeparture, rsHoras , rsInicio, myWarehouse; + +WHILE NOT done DO + + SET resto = IF(inicioProd < rsDeparture, rsDeparture - inicioProd,0); + + SET inicioProd = rsDeparture - rsHoras; + + IF inicioProd - resto < myTime THEN + + SET done = TRUE; + + ELSE + + SET departureLimit = rsDeparture; + + FETCH rs INTO rsDeparture, rsHoras , rsInicio; + + -- SELECT rsDeparture, rsHoras , rsInicio; + + END IF; + +END WHILE; + +SET departureLimit = IFNULL(departureLimit,24); +SET departureLimit = IF(departureLimit = 0, 24, departureLimit); + + SELECT minSpeed INTO myMinSpeed + FROM cache.departure_limit + WHERE warehouse_id = myWarehouse + AND fecha = CURDATE(); + + REPLACE cache.departure_limit(warehouse_id, fecha, hora, minSpeed) + VALUES (myWarehouse, CURDATE(), IFNULL(departureLimit,24), IFNULL(myMinSpeed,0)); + + +CLOSE rs; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `departure_timing_beta` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `departure_timing_beta`() +BEGIN + +DECLARE done BOOL DEFAULT FALSE; +DECLARE rsDeparture INT; +DECLARE rsHoras DECIMAL(5,2); +DECLARE rsInicio DECIMAL(5,2); +DECLARE resto DECIMAL(5,2); +DECLARE horasProd DECIMAL(5,2); +DECLARE inicioProd DECIMAL(5,2) DEFAULT 24.00; +DECLARE myTime DECIMAL(5,2); +DECLARE departureLimit INT; +DECLARE myWarehouse INT; + +DECLARE rs CURSOR FOR + SELECT Departure + , Sum(pb.m3)/GREATEST(v.m3,IFNULL(minSpeed,0)) AS Horas + , curDate()+(Departure-(Sum(pb.m3)/GREATEST(v.m3,IFNULL(minSpeed,0)))/24) AS InicioPreparacion + FROM tmp.production_buffer pb + JOIN vn2008.v_encajado_ultima_hora v ON v.warehouse_id = pb.warehouse_id + LEFT JOIN cache.departure_limit dp ON dp.warehouse_id = pb.warehouse_id AND dp.fecha = CURDATE() + WHERE pb.Fecha = CURDATE() + AND alert_level < 2 + AND IFNULL(Departure,0) > 0 + GROUP BY Departure + ORDER BY Departure DESC; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + + +SET myTime = HOUR(now()) + MINUTE(now()) / 60; + +SELECT warehouse_id INTO myWarehouse +FROM tmp.production_buffer +LIMIT 1; + +OPEN rs; + +FETCH rs INTO rsDeparture, rsHoras , rsInicio; + +SELECT rsDeparture, rsHoras , rsInicio, myWarehouse, done; + +WHILE NOT done DO + + SET resto = IF(inicioProd < rsDeparture, rsDeparture - inicioProd,0); + + SET inicioProd = rsDeparture - rsHoras; + + SELECT rsDeparture, rsHoras , rsInicio, resto,inicioProd; + + IF inicioProd - resto < myTime THEN + + SET done = TRUE; + + ELSE + + SET departureLimit = rsDeparture; + + FETCH rs INTO rsDeparture, rsHoras , rsInicio; + + END IF; + +END WHILE; + +SELECT rsDeparture, rsHoras , rsInicio, resto,inicioProd; + + +SET departureLimit = IFNULL(departureLimit,24); + +IF departureLimit > 0 THEN + + REPLACE cache.departure_limit(warehouse_id, fecha, hora, minSpeed) + VALUES (myWarehouse, CURDATE(), departureLimit, myMinSpeed); + +END IF; + +CLOSE rs; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `departure_timing_kk` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `departure_timing_kk`() +BEGIN + +DECLARE done BOOL DEFAULT FALSE; +DECLARE rsDeparture INT; +DECLARE rsHoras DECIMAL(5,2); +DECLARE rsInicio DECIMAL(5,2); +DECLARE resto DECIMAL(5,2); +DECLARE horasProd DECIMAL(5,2); +DECLARE inicioProd DECIMAL(5,2) DEFAULT 24.00; +DECLARE myTime DECIMAL(5,2); +DECLARE departureLimit INT; +DECLARE myWarehouse INT; +DECLARE myMinSpeed DECIMAL(10,2); + + +DECLARE rs CURSOR FOR + SELECT Departure + , Sum(pb.m3)/(GREATEST(v.m3, 100)/1.3) AS Horas + , curDate()+(Departure-Sum(pb.m3)/(GREATEST(v.m3, 100)/1.3))/24 AS InicioPreparacion + FROM tmp.production_buffer pb + JOIN vn2008.v_encajado_ultima_hora v ON v.warehouse_id = pb.warehouse_id + WHERE Fecha = CURDATE() + AND alert_level < 2 + AND IFNULL(Departure,0) > 0 + GROUP BY Departure + ORDER BY Departure DESC; + +DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + +SELECT IFNULL(minSpeed,0) INTO myMinSpeed +FROM cache.departure_limit +WHERE warehouse_id = myWarehouse +AND fecha = CURDATE(); + +SET myTime = HOUR(now()) + MINUTE(now()) / 60; + +SELECT warehouse_id INTO myWarehouse +FROM tmp.production_buffer +LIMIT 1; + +OPEN rs; + +FETCH rs INTO rsDeparture, rsHoras , rsInicio; + +WHILE NOT done DO + + SET resto = IF(inicioProd < rsDeparture, rsDeparture - inicioProd,0); + + SET inicioProd = rsDeparture - rsHoras; + + IF inicioProd - resto < myTime THEN + + SET done = TRUE; + + ELSE + + SET departureLimit = rsDeparture; + + FETCH rs INTO rsDeparture, rsHoras , rsInicio; + + END IF; + +END WHILE; + +IF departureLimit > 0 THEN + + REPLACE cache.departure_limit(warehouse_id, fecha, hora, minSpeed) + VALUES (myWarehouse, CURDATE(), departureLimit, myMinSpeed); + +END IF; + +CLOSE rs; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `equaliza` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `equaliza`(wh_id INT) +BEGIN + -- DEPRECATED usar equalizator_refesh + + + + CALL equalizator_refresh (FALSE, wh_id); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `equalizator_refresh` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `equalizator_refresh`(v_refresh BOOL, wh_id INT) +proc: BEGIN + DECLARE datEQ DATETIME; + DECLARE timDIF TIME; + DECLARE v_calc INT; + /* JGF 2017-03-20 cuelga el sistema + CALL cache_calc_start (v_calc, v_refresh, 'equalizator', wh_id); + + IF !v_refresh + THEN + LEAVE proc; + END IF; + + REPLACE equalizator (warehouse_id, Vista, Encajado, Impreso, Pedido) + SELECT + t.warehouse_id, + Vista, + sum(IF(t.Factura IS NOT NULL + OR t.Etiquetasemitidas + OR IFNULL(ticket_id,0), Cantidad * r.cm3, 0)) as encajado, + sum(IF(PedidoImpreso, Cantidad * r.cm3,0)) as impreso, + sum(Cantidad * r.cm3 ) as Pedido + FROM + vn2008.Movimientos m + JOIN + vn2008.Tickets t USING (Id_Ticket) + JOIN + bi.rotacion r on r.warehouse_id = t.warehouse_id and r.Id_Article = m.Id_Article + JOIN + vn2008.Agencias a ON t.Id_Agencia = a.Id_Agencia + JOIN + vn2008.Clientes C USING (Id_Cliente) + LEFT JOIN + (SELECT distinct + ticket_id + FROM + vn2008.expeditions e JOIN vn2008.Tickets t + ON t.Id_Ticket = e.ticket_id + WHERE Fecha >= curDate() + ) exp ON ticket_id = Id_Ticket + WHERE + invoice And Fecha >= curDate() + AND wh_id in (0,t.warehouse_id) + AND fecha < (TIMESTAMPADD(DAY, 1, CURDATE())) + GROUP BY t.warehouse_id, Vista; + + -- Reducimos las cantidades para que el grafico tenga sentido + + UPDATE equalizator SET + pedido = (pedido - (impreso - encajado) - encajado) / 1000000, + impreso = (impreso - encajado) / 1000000, + encajado = encajado / 1000000 + WHERE wh_id in (0,warehouse_id); + + CALL cache_calc_end (v_calc); + */ +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `item_range_refresh` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_range_refresh`(OUT v_calc INT, v_refresh BOOL, v_warehouse INT, v_date DATE) +proc: BEGIN + DECLARE v_params CHAR(100); + DECLARE v_date_inv DATE; + + IF v_date < CURDATE() + THEN + LEAVE proc; + END IF; + + SET v_params = CONCAT_WS('/', v_warehouse, v_date); + CALL cache_calc_start (v_calc, v_refresh, 'item_range', v_params); + + IF !v_refresh + THEN + LEAVE proc; + END IF; + + -- Limpia las caches antiguas + + DELETE FROM item_range WHERE calc_id NOT IN ( + SELECT cc.id + FROM `cache` c + JOIN cache_calc cc ON c.id = cc.cache_id + WHERE c.`name` = 'item_range'); + + -- Calculos previos + + CALL last_buy_refresh (FALSE); + + SET v_date_inv = vn2008.date_inv(); + + -- Calcula el ultimo dia de vida para cada producto + + DROP TEMPORARY TABLE IF EXISTS tmp.item_range; + CREATE TEMPORARY TABLE tmp.item_range + (INDEX (item_id)) + ENGINE = MEMORY + SELECT c.item_id, IF(t.life IS NULL, NULL, TIMESTAMPADD(DAY, t.life + 1, GREATEST(c.landing, b.landing))) AS date_end + FROM last_buy b + JOIN ( + SELECT c.Id_Article item_id, MAX(landing) landing + FROM vn2008.Compres c + JOIN vn2008.Entradas e ON c.Id_Entrada = e.Id_Entrada + JOIN vn2008.travel t ON t.id = e.travel_id + JOIN vn2008.warehouse w ON w.id = t.warehouse_id + WHERE t.landing BETWEEN v_date_inv AND v_date + AND t.warehouse_id = v_warehouse + AND NOT e.Inventario + AND NOT e.Redada + GROUP BY item_id + ) c ON c.item_id = b.item_id + JOIN vn2008.Articles a ON a.Id_Article = b.item_id + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + WHERE b.warehouse_id = v_warehouse + HAVING date_end >= v_date OR date_end IS NULL; + + -- Tabla con el ultimo dia de precios fijados para cada producto + + DROP TEMPORARY TABLE IF EXISTS tmp.fix_range; + CREATE TEMPORARY TABLE tmp.fix_range + ENGINE = MEMORY + SELECT item_id, date_end FROM ( + SELECT p.item_id, p.date_end + FROM vn2008.price_fixed p + LEFT JOIN tmp.item_range i USING(item_id) + WHERE IFNULL(i.date_end, v_date) BETWEEN p.date_start AND p.date_end + AND warehouse_id IN (0, v_warehouse) + ORDER BY item_id, warehouse_id DESC, date_end DESC + ) t GROUP BY item_id; + + -- Calcula los rangos + + DELETE FROM item_range WHERE calc_id = v_calc; + + INSERT INTO item_range (calc_id, item_id, date_end) + SELECT v_calc, item_id, date_end + FROM ( + SELECT * FROM tmp.fix_range + UNION ALL + SELECT * FROM tmp.item_range + ) t + GROUP BY item_id; + + -- Limpieza + + DROP TEMPORARY TABLE tmp.item_range; + DROP TEMPORARY TABLE tmp.fix_range; + + CALL cache_calc_end (v_calc); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `last_buy_refresh` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `last_buy_refresh`(v_refresh BOOL) +proc: BEGIN +/** + * Crea o actualiza la cache con la última compra y fecha de cada + * artículo hasta ayer. Para obtener la última compra hasta una fecha + * determinada utilizar el procedimiento vn2008.item_last_buy_(). + * + * @param v_refresh %TRUE para forzar el recálculo de la cache + **/ + DECLARE v_calc INT; + DECLARE v_date_ini DATE; + DECLARE v_date_end DATE; + DECLARE v_last_refresh DATE; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + CALL cache_calc_unlock (v_calc); + RESIGNAL; + END; + + CALL cache_calc_start (v_calc, v_refresh, 'last_buy', NULL); + + IF !v_refresh + THEN + LEAVE proc; + END IF; + + -- TODO: ¿Se puede usar la fecha del ultimo inventario? + SET v_date_ini = vn2008.date_inv();-- TIMESTAMPADD(DAY, -90, CURDATE()); + SET v_date_end = CURDATE(); -- TIMESTAMPADD(DAY, -1, CURDATE()); + + CALL vn2008.item_last_buy_from_interval (NULL, v_date_ini, v_date_end); + + DELETE FROM last_buy; + + INSERT INTO last_buy (item_id, warehouse_id, buy_id, landing) + SELECT item_id, warehouse_id, buy_id, landing + FROM tmp.item_last_buy_from_interval; + + DROP TEMPORARY TABLE tmp.item_last_buy_from_interval; + + CALL cache_calc_end (v_calc); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `prod_graphic_refresh` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `prod_graphic_refresh`(v_refresh BOOL, wh_id INT) +proc: BEGIN + DECLARE datEQ DATETIME; + DECLARE timDIF TIME; + DECLARE v_calc INT; + + CALL cache_calc_start (v_calc, v_refresh, 'prod_graphic', wh_id); + + IF !v_refresh + THEN + LEAVE proc; + END IF; + + CALL vn2008.production_control_source(wh_id, 0); + + DELETE FROM prod_graphic_source; + + INSERT INTO prod_graphic_source (warehouse_id, alert_level, m3, hora, `order`, Agencia) + SELECT + wh_id, + pb.alert_level, + m3, + pb.Hora, + pb.state_order, + pb.Agencia + FROM tmp.production_buffer pb + WHERE Fecha = CURDATE() + ; + + + CALL cache_calc_end (v_calc); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `sales_refresh` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `sales_refresh`() +proc:BEGIN + + DECLARE v_calc INT; + DECLARE v_refresh BOOL DEFAULT TRUE; + DECLARE datMONTH INT; + DECLARE datYEAR INT; + + CALL cache_calc_start (v_calc, v_refresh, 'sales', NULL); + + IF !v_refresh + THEN + LEAVE proc; + END IF; + + + SELECT MONTH(CURDATE()) INTO datMONTH; + SELECT YEAR(CURDATE()) INTO datYEAR; + + -- preparamos una tabla con los meses y años que interesan + DROP TEMPORARY TABLE IF EXISTS tmp.periods; + CREATE TEMPORARY TABLE tmp.periods + select distinct month, year(date) as year + from vn2008.time + where date <= CURDATE() + order by year desc, month desc + limit 3; + + -- borramos los datos para evitar flecos + DELETE s.* + FROM bi.sales s + join tmp.periods using(year,month); + + -- insertamos las ventas de cada comercial + REPLACE bi.sales(Id_Trabajador, year, month, weight, boss_id) + select v.Id_Trabajador, year, month, round(sum(total)) as weight, IFNULL(j.boss_id,20) + from bi.v_ticket_total v + join tmp.periods using(year,month) + left join (SELECT jerarquia.boss_id, jerarquia.worker_id + FROM vn2008.jerarquia + ) j on j.worker_id = v.Id_Trabajador + group by v.Id_Trabajador, year, month; + + + + -- caso especial: Claudi ajuda a Josep a llegar a los 1200 euros de comision + /* + update bi.sales + set boss_aid = 34285 - weight + where Id_Trabajador = 378 + and year >= 2015 + and month > datmonth -2; + + update bi.sales s + join + (select year, month, boss_aid + from bi.sales + where Id_Trabajador = 378 + and year >= 2015 + and month > datmonth -2) sub using(year,month) + set s.boss_aid = s.boss_aid - sub.boss_aid + where Id_Trabajador = 208 + and year >= 2015 + and month > datmonth -2; + */ + + + + +-- ahora, las comisiones + +update bi.sales s +set comision = weight * 0.029; + + DROP TEMPORARY TABLE IF EXISTS tmp.periods; + + CALL cache_calc_end (v_calc); + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `stock_refresh` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `stock_refresh`(v_refresh BOOL) +proc: BEGIN +/** + * Crea o actualiza la cache con el disponible hasta el día de + * ayer. Esta cache es usada como base para otros procedimientos + * como el cáculo del visible o del ATP. + * + * @param v_refresh %TRUE para forzar el recálculo de la cache + **/ + DECLARE v_calc INT; + DECLARE v_date_inv DATE; + DECLARE v_curdate DATE; + DECLARE v_last_refresh DATETIME; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + CALL cache_calc_unlock (v_calc); + RESIGNAL; + END; + + CALL cache_calc_start (v_calc, v_refresh, 'stock', NULL); + + IF !v_refresh + THEN + LEAVE proc; + END IF; + + SET v_date_inv = (SELECT FechaInventario FROM vn2008.tblContadores LIMIT 1); + SET v_curdate = CURDATE(); + + DELETE FROM stock; + + INSERT INTO stock (item_id, warehouse_id, amount) + SELECT item_id, warehouse_id, SUM(amount) amount FROM + ( + SELECT item_id, warehouse_id, amount FROM vn2008.item_out + WHERE dat >= v_date_inv AND dat < v_curdate + UNION ALL + SELECT item_id, warehouse_id, amount FROM vn2008.item_entry_in + WHERE dat >= v_date_inv AND dat < v_curdate + UNION ALL + SELECT item_id ,warehouse_id, amount FROM vn2008.item_entry_out + WHERE dat >= v_date_inv AND dat < v_curdate + ) t + GROUP BY item_id, warehouse_id HAVING amount != 0; + + CALL cache_calc_end (v_calc); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `visible_refresh` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `visible_refresh`(OUT v_calc INT, v_refresh BOOL, v_warehouse INT) +proc: BEGIN + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + CALL cache_calc_unlock (v_calc); + RESIGNAL; + END; + + CALL cache_calc_start (v_calc, v_refresh, 'visible', v_warehouse); + + IF !v_refresh + THEN + LEAVE proc; + END IF; + + -- Limpia las caches antiguas + + IF TRUE -- GET_LOCK('visible/clean', 1) + THEN + DELETE FROM visible WHERE calc_id NOT IN ( + SELECT cc.id + FROM `cache` c + JOIN cache_calc cc ON c.id = cc.cache_id + WHERE c.`name` = 'visible'); + + -- DO RELEASE_LOCK('visible/clean'); + END IF; + + -- Calculamos el stock hasta ayer + + CALL `cache`.stock_refresh(false); + + DROP TEMPORARY TABLE IF EXISTS vn2008.tmp_item; + CREATE TEMPORARY TABLE vn2008.tmp_item + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT item_id, amount stock, amount visible FROM `cache`.stock + WHERE warehouse_id = v_warehouse; + + -- Calculamos los movimientos confirmados de hoy + + CALL vn2008.item_stock_visible(v_warehouse, NULL); + + DELETE FROM visible WHERE calc_id = v_calc; + + INSERT INTO visible (calc_id, item_id,visible) + SELECT v_calc, item_id, visible FROM vn2008.tmp_item; + + CALL cache_calc_end (v_calc); + + DROP TEMPORARY TABLE vn2008.tmp_item; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `weekly_sales_refresh` */; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `weekly_sales_refresh`(v_refresh BOOL) +BEGIN + DECLARE v_week_ini INT; + DECLARE v_week_end INT; + DECLARE v_date_ini DATE; + DECLARE v_date_end DATE; + DECLARE v_last_refresh DATE; + + IF GET_LOCK('weekly_sales', 300) + THEN + SELECT last_refresh INTO v_last_refresh FROM weekly_sales_info; + + IF v_last_refresh IS NULL THEN + SET v_refresh = TRUE; + END IF; + + IF v_refresh || v_last_refresh < CURDATE() + THEN + SET v_date_ini = TIMESTAMPADD(DAY, -(366 * 1.5), CURDATE()); + SET v_date_end = TIMESTAMPADD(DAY, -1, CURDATE()); + + IF v_refresh + THEN + TRUNCATE TABLE weekly_sales; + ELSE + SET v_week_ini = vn2008.to_weeks (v_date_ini); + SET v_date_ini = TIMESTAMPADD(DAY, -WEEKDAY(v_last_refresh) - 7, v_last_refresh); + SET v_week_end = vn2008.to_weeks (v_date_ini); + + DELETE FROM weekly_sales + WHERE week < v_week_ini OR week >= v_week_end; + END IF; + + CALL vn2008.weekly_sales_new (0, v_date_ini, v_date_end); + + INSERT INTO weekly_sales (item_id, week, warehouse_id, amount, price) + SELECT item_id, week, warehouse_id, amount, price FROM vn2008.weekly_sales; + + DROP TEMPORARY TABLE vn2008.weekly_sales; + + TRUNCATE TABLE weekly_sales_info; + INSERT INTO weekly_sales_info (last_refresh) VALUES (CURDATE()); + END IF; + + DO RELEASE_LOCK('weekly_sales'); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `cache` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Current Database: `pbx` +-- + +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `pbx` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; + +USE `pbx`; + +-- +-- Table structure for table `blacklist` +-- + +DROP TABLE IF EXISTS `blacklist`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `blacklist` ( + `phone` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`phone`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Hangup input calls from this list'; +/*!40101 SET character_set_client = @saved_cs_client */; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`blacklistBeforeInsert` +BEFORE INSERT ON `blacklist` FOR EACH ROW +BEGIN + CALL phoneIsValid (NEW.phone); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`blacklistBerforeUpdate` +BEFORE UPDATE ON `blacklist` FOR EACH ROW +BEGIN + CALL phoneIsValid (NEW.phone); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Table structure for table `cdr` +-- + +DROP TABLE IF EXISTS `cdr`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `cdr` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `call_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `clid` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `src` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `dst` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `dcontext` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `channel` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `dst_channel` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `last_app` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `last_data` varchar(80) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `duration` int(11) NOT NULL DEFAULT '0', + `billsec` int(11) NOT NULL DEFAULT '0', + `disposition` varchar(45) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `ama_flags` int(11) NOT NULL DEFAULT '0', + `account_code` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `unique_id` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + `user_field` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', + PRIMARY KEY (`id`), + KEY `calldate` (`call_date`), + KEY `dst` (`dst`), + KEY `accountcode` (`account_code`), + KEY `dstchannel` (`dst_channel`), + KEY `disposition` (`disposition`), + KEY `src` (`src`) +) ENGINE=MyISAM AUTO_INCREMENT=156174 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `cdrConf` +-- + +DROP TABLE IF EXISTS `cdrConf`; +/*!50001 DROP VIEW IF EXISTS `cdrConf`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `cdrConf` AS SELECT + 1 AS `calldate`, + 1 AS `clid`, + 1 AS `src`, + 1 AS `dst`, + 1 AS `dcontext`, + 1 AS `channel`, + 1 AS `dstchannel`, + 1 AS `lastapp`, + 1 AS `lastdata`, + 1 AS `duration`, + 1 AS `billsec`, + 1 AS `disposition`, + 1 AS `amaflags`, + 1 AS `accountcode`, + 1 AS `uniqueid`, + 1 AS `userfield`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `config` +-- + +DROP TABLE IF EXISTS `config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `config` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `sundayFestive` tinyint(4) NOT NULL, + `countryPrefix` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global configuration'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `followme` +-- + +DROP TABLE IF EXISTS `followme`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `followme` ( + `extension` varchar(128) CHARACTER SET utf8 NOT NULL, + `phone` varchar(20) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`extension`), + CONSTRAINT `followme_ibfk_1` FOREIGN KEY (`extension`) REFERENCES `sip` (`extension`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`followmeBeforeInsert` +BEFORE INSERT ON `followme` FOR EACH ROW +BEGIN + CALL pbx.phoneIsValid (NEW.phone); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`followmeBeforeUpdate` +BEFORE UPDATE ON `followme` FOR EACH ROW +BEGIN + CALL pbx.phoneIsValid (NEW.phone); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Temporary view structure for view `followmeConf` +-- + +DROP TABLE IF EXISTS `followmeConf`; +/*!50001 DROP VIEW IF EXISTS `followmeConf`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `followmeConf` AS SELECT + 1 AS `name`, + 1 AS `music`, + 1 AS `context`, + 1 AS `takecall`, + 1 AS `declinecall`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `followmeConfig` +-- + +DROP TABLE IF EXISTS `followmeConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `followmeConfig` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `music` varchar(50) CHARACTER SET utf8 DEFAULT NULL, + `context` varchar(50) CHARACTER SET utf8 NOT NULL, + `takeCall` char(1) CHARACTER SET utf8 NOT NULL, + `declineCall` char(1) CHARACTER SET utf8 NOT NULL, + `timeout` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `followmeNumberConf` +-- + +DROP TABLE IF EXISTS `followmeNumberConf`; +/*!50001 DROP VIEW IF EXISTS `followmeNumberConf`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `followmeNumberConf` AS SELECT + 1 AS `name`, + 1 AS `ordinal`, + 1 AS `phonenumber`, + 1 AS `timeout`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `queue` +-- + +DROP TABLE IF EXISTS `queue`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `queue` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `description` varchar(128) CHARACTER SET utf8 NOT NULL, + `name` varchar(128) CHARACTER SET utf8 NOT NULL, + `config` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`), + UNIQUE KEY `description` (`description`), + KEY `config` (`config`), + CONSTRAINT `queue_ibfk_1` FOREIGN KEY (`config`) REFERENCES `queueConfig` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Queues'; +/*!40101 SET character_set_client = @saved_cs_client */; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queueBeforeInsert` +BEFORE INSERT ON `queue` FOR EACH ROW +BEGIN + CALL queueIsValid (NEW.name); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queueBeforeUpdate` +BEFORE UPDATE ON `queue` FOR EACH ROW +BEGIN + CALL queueIsValid (NEW.name); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Temporary view structure for view `queueConf` +-- + +DROP TABLE IF EXISTS `queueConf`; +/*!50001 DROP VIEW IF EXISTS `queueConf`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `queueConf` AS SELECT + 1 AS `name`, + 1 AS `strategy`, + 1 AS `timeout`, + 1 AS `retry`, + 1 AS `weight`, + 1 AS `maxlen`, + 1 AS `ringinuse`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `queueConfig` +-- + +DROP TABLE IF EXISTS `queueConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `queueConfig` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `strategy` varchar(128) CHARACTER SET utf8 NOT NULL, + `timeout` int(10) unsigned NOT NULL, + `retry` int(10) unsigned NOT NULL, + `weight` int(10) unsigned NOT NULL, + `maxLen` int(10) unsigned NOT NULL, + `ringInUse` tinyint(4) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Default values for queues configuration'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `queueMember` +-- + +DROP TABLE IF EXISTS `queueMember`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `queueMember` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `queue` varchar(128) CHARACTER SET utf8 NOT NULL, + `extension` varchar(128) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `queue` (`queue`,`extension`), + KEY `extension` (`extension`), + CONSTRAINT `queueMember_ibfk_1` FOREIGN KEY (`queue`) REFERENCES `queue` (`name`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `queueMember_ibfk_2` FOREIGN KEY (`extension`) REFERENCES `sip` (`extension`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Queue members'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `queueMemberConf` +-- + +DROP TABLE IF EXISTS `queueMemberConf`; +/*!50001 DROP VIEW IF EXISTS `queueMemberConf`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `queueMemberConf` AS SELECT + 1 AS `uniqueid`, + 1 AS `queue_name`, + 1 AS `interface`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `queuePhone` +-- + +DROP TABLE IF EXISTS `queuePhone`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `queuePhone` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `queue` varchar(128) CHARACTER SET utf8 NOT NULL, + `phone` varchar(128) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `queue` (`queue`,`phone`), + CONSTRAINT `queuePhone_ibfk_1` FOREIGN KEY (`queue`) REFERENCES `queue` (`name`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queuePhoneBeforeInsert` +BEFORE INSERT ON `queuePhone` FOR EACH ROW +BEGIN + CALL phoneIsValid (NEW.phone); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queuePhoneBeforeUpdate` +BEFORE UPDATE ON `queuePhone` FOR EACH ROW +BEGIN + CALL phoneIsValid (NEW.phone); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Table structure for table `schedule` +-- + +DROP TABLE IF EXISTS `schedule`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `schedule` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `weekDay` tinyint(3) unsigned NOT NULL COMMENT '0 = Monday, 6 = Sunday', + `timeStart` time NOT NULL, + `timeEnd` time NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `sip` +-- + +DROP TABLE IF EXISTS `sip`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `sip` ( + `user_id` int(10) unsigned NOT NULL DEFAULT '0', + `extension` varchar(128) CHARACTER SET utf8 NOT NULL, + `secret` varchar(80) CHARACTER SET utf8 NOT NULL, + `caller_id` varchar(80) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`user_id`), + UNIQUE KEY `extension` (`extension`), + CONSTRAINT `sip_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='SIP accounts'; +/*!40101 SET character_set_client = @saved_cs_client */; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`sipBeforeInsert` +BEFORE INSERT ON `sip` FOR EACH ROW +BEGIN + CALL extensionIsValid (NEW.extension); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `sipAfterInsert` +AFTER INSERT ON `sip` FOR EACH ROW +BEGIN + INSERT INTO sipReg (userId) VALUES (NEW.user_id); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`sipBeforeUpdate` +BEFORE UPDATE ON `sip` FOR EACH ROW +BEGIN + CALL extensionIsValid (NEW.extension); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Temporary view structure for view `sipConf` +-- + +DROP TABLE IF EXISTS `sipConf`; +/*!50001 DROP VIEW IF EXISTS `sipConf`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `sipConf` AS SELECT + 1 AS `id`, + 1 AS `name`, + 1 AS `secret`, + 1 AS `callerid`, + 1 AS `host`, + 1 AS `deny`, + 1 AS `permit`, + 1 AS `type`, + 1 AS `context`, + 1 AS `incominglimit`, + 1 AS `pickupgroup`, + 1 AS `careinvite`, + 1 AS `ipaddr`, + 1 AS `regseconds`, + 1 AS `port`, + 1 AS `defaultuser`, + 1 AS `useragent`, + 1 AS `lastms`, + 1 AS `fullcontact`, + 1 AS `regserver`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `sipConfig` +-- + +DROP TABLE IF EXISTS `sipConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `sipConfig` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `host` varchar(40) CHARACTER SET utf8 DEFAULT NULL, + `deny` varchar(95) CHARACTER SET utf8 NOT NULL, + `permit` varchar(95) CHARACTER SET utf8 NOT NULL, + `type` enum('user','peer','friend') CHARACTER SET utf8 NOT NULL, + `context` varchar(80) CHARACTER SET utf8 NOT NULL, + `incomingLimit` varchar(10) CHARACTER SET utf8 NOT NULL, + `pickupGroup` varchar(10) CHARACTER SET utf8 NOT NULL, + `careInvite` varchar(10) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Default values for SIP accounts'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `sipReg` +-- + +DROP TABLE IF EXISTS `sipReg`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `sipReg` ( + `userId` int(10) unsigned NOT NULL, + `ipAddr` varchar(40) CHARACTER SET utf8 DEFAULT NULL, + `regSeconds` int(10) unsigned DEFAULT NULL, + `port` varchar(50) CHARACTER SET utf8 DEFAULT NULL, + `defaultUser` varchar(50) CHARACTER SET utf8 DEFAULT NULL, + `userAgent` varchar(80) CHARACTER SET utf8 DEFAULT NULL, + `lastMs` varchar(50) CHARACTER SET utf8 DEFAULT NULL, + `fullContact` varchar(50) CHARACTER SET utf8 DEFAULT NULL, + `regServer` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + PRIMARY KEY (`userId`), + CONSTRAINT `sipReg_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `sip` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='SIP registrations'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping routines for database 'pbx' +-- +/*!50003 DROP FUNCTION IF EXISTS `clientFromPhone` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `clientFromPhone`(vPhone VARCHAR(255)) RETURNS int(11) + DETERMINISTIC +BEGIN + DECLARE vClient INT DEFAULT NULL; + + -- SET vPhone = vPhone COLLATE 'utf8_unicode_ci'; + + -- Searchs a customer associated to the phone number + + DROP TEMPORARY TABLE IF EXISTS tmp.customer; + CREATE TEMPORARY TABLE tmp.customer + ENGINE = MEMORY + SELECT id_cliente customer + FROM vn2008.Clientes c + WHERE telefono = vPhone + OR movil = vPhone + UNION + SELECT id_cliente + FROM vn2008.Consignatarios + WHERE telefono = vPhone + OR movil = vPhone + UNION + SELECT r.id_cliente + FROM vn2008.Relaciones r + JOIN vn2008.Contactos c ON r.Id_Contacto = c.Id_Contacto + WHERE c.telefono = vPhone + OR c.movil = vPhone; + + SELECT t.customer INTO vClient + FROM tmp.customer t + JOIN vn2008.Clientes c ON c.id_cliente = t.customer + WHERE c.activo + LIMIT 1; + + DROP TEMPORARY TABLE tmp.customer; + + RETURN vClient; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `phoneFormat` */; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `phoneFormat`(vPhone VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 +BEGIN + DECLARE vI INT DEFAULT 0; + DECLARE vChr VARCHAR(1); + DECLARE vLen INT DEFAULT LENGTH(vPhone); + DECLARE vNewPhone VARCHAR(255) DEFAULT ''; + + WHILE vI < vLen + DO + SET vChr = SUBSTR(vPhone, vI + 1, 1); + + IF vChr REGEXP '^[0-9]$' + THEN + SET vNewPhone = CONCAT(vNewPhone, vChr); + ELSEIF vChr = '+' AND vI = 0 + THEN + SET vNewPhone = CONCAT(vNewPhone, '00'); + END IF; + + SET vI = vI + 1; + END WHILE; + + IF vNewPhone REGEXP '^0+$' OR vNewPhone = '' THEN + RETURN NULL; + END IF; + + IF vNewPhone REGEXP '^0034' THEN + SET vNewPhone = SUBSTR(vNewPhone, 5); + END IF; + + RETURN vNewPhone; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `extensionIsValid` */; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `extensionIsValid`(vExtension VARCHAR(255)) + DETERMINISTIC +BEGIN + DECLARE vIsValid BOOLEAN; + + SET vIsValid = vExtension IS NULL + OR (vExtension REGEXP '^[0-9]{4}$' + AND MOD(vExtension, 100) != 0); + + IF NOT vIsValid + THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'EXTENSION_INVALID_FORMAT'; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `phoneIsValid` */; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `phoneIsValid`(vPhone VARCHAR(255)) +BEGIN + DECLARE vIsValid BOOLEAN; + + SET vIsValid = vPhone IS NULL + OR (vPhone REGEXP '^[0-9]+$' + AND vPhone NOT REGEXP '^0+$' + AND vPhone NOT REGEXP '^0034'); + + IF NOT vIsValid + THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'PHONE_INVALID_FORMAT'; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `queueIsValid` */; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `queueIsValid`(vQueue VARCHAR(255)) + DETERMINISTIC +BEGIN + DECLARE vIsValid BOOLEAN; + + SET vIsValid = vQueue IS NULL + OR vQueue REGEXP '^[1-9][0-9]00$'; + + IF NOT vIsValid + THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'QUEUE_INVALID_FORMAT'; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; + +-- +-- Current Database: `hedera` +-- + +CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hedera` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; + +USE `hedera`; + +-- +-- Temporary view structure for view `address_view` +-- + +DROP TABLE IF EXISTS `address_view`; +/*!50001 DROP VIEW IF EXISTS `address_view`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `address_view` AS SELECT + 1 AS `id`, + 1 AS `customer_id`, + 1 AS `warehouse_id`, + 1 AS `name`, + 1 AS `city`, + 1 AS `province_id`, + 1 AS `zip_code`, + 1 AS `consignee`, + 1 AS `default`, + 1 AS `type_id`, + 1 AS `specs`, + 1 AS `insurance`, + 1 AS `postage`, + 1 AS `active`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `basket` +-- + +DROP TABLE IF EXISTS `basket`; +/*!50001 DROP VIEW IF EXISTS `basket`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `basket` AS SELECT + 1 AS `id`, + 1 AS `date_make`, + 1 AS `date_send`, + 1 AS `customer_id`, + 1 AS `delivery_method_id`, + 1 AS `agency_id`, + 1 AS `address_id`, + 1 AS `company_id`, + 1 AS `note`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `basket_defaults` +-- + +DROP TABLE IF EXISTS `basket_defaults`; +/*!50001 DROP VIEW IF EXISTS `basket_defaults`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `basket_defaults` AS SELECT + 1 AS `address_id`, + 1 AS `agency_id`, + 1 AS `delivery_method`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `basket_item` +-- + +DROP TABLE IF EXISTS `basket_item`; +/*!50001 DROP VIEW IF EXISTS `basket_item`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `basket_item` AS SELECT + 1 AS `id`, + 1 AS `order_id`, + 1 AS `warehouse_id`, + 1 AS `item_id`, + 1 AS `amount`, + 1 AS `price`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `browser` +-- + +DROP TABLE IF EXISTS `browser`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `browser` ( + `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Browser name in browscap', + `version` float NOT NULL COMMENT 'Minimal version', + UNIQUE KEY `name` (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='List of compatible web browsers and its version'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `config` +-- + +DROP TABLE IF EXISTS `config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `config` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `default_lang` char(2) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The default language if none is specified', + `https` tinyint(3) unsigned NOT NULL COMMENT 'Wether to force de use of HTTPS', + `cookie_life` smallint(5) unsigned NOT NULL COMMENT 'The cookies life, in days', + `jwtKey` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The key used to encode/decode JWT tokens', + `default_form` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Form loaded at web login', + `restUri` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `testRestUri` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `image_host` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, + `image_dir` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Directory where images are allocated', + `guest_user` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Guest user name', + `guest_pass` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Guest password, base64 encoded', + `test_domain` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The address for beta website', + `production_domain` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The address for production website', + `pdfs_dir` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Directory where pdfs are allocated', + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global configuration parameters'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `contact` +-- + +DROP TABLE IF EXISTS `contact`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `contact` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `recipient` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `customer_user` +-- + +DROP TABLE IF EXISTS `customer_user`; +/*!50001 DROP VIEW IF EXISTS `customer_user`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `customer_user` AS SELECT + 1 AS `user_id`, + 1 AS `name`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `customer_view` +-- + +DROP TABLE IF EXISTS `customer_view`; +/*!50001 DROP VIEW IF EXISTS `customer_view`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `customer_view` AS SELECT + 1 AS `user_id`, + 1 AS `name`, + 1 AS `email`, + 1 AS `mail`, + 1 AS `default_address`, + 1 AS `credit`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `form` +-- + +DROP TABLE IF EXISTS `form`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `form` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `description` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `path` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `role_id` int(10) unsigned NOT NULL, + `parent` int(10) unsigned DEFAULT NULL, + `display_order` tinyint(4) unsigned NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + KEY `group_id` (`role_id`), + KEY `parent` (`parent`), + CONSTRAINT `form_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `account`.`role` (`id`) ON UPDATE CASCADE, + CONSTRAINT `form_ibfk_2` FOREIGN KEY (`parent`) REFERENCES `form` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `gallery` +-- + +DROP TABLE IF EXISTS `gallery`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `gallery` ( + `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `comment` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `image_config` +-- + +DROP TABLE IF EXISTS `image_config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `image_config` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Identifier', + `max_size` int(10) unsigned NOT NULL COMMENT 'Maximun size for uploaded images in MB', + `use_xsendfile` tinyint(4) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global image parameters'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `image_file` +-- + +DROP TABLE IF EXISTS `image_file`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `image_file` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `schema_id` int(10) unsigned NOT NULL, + `file` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `stamp` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `schema_id_file` (`schema_id`,`file`), + CONSTRAINT `image_file_ibfk_1` FOREIGN KEY (`schema_id`) REFERENCES `image_schema` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `image_schema` +-- + +DROP TABLE IF EXISTS `image_schema`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `image_schema` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `desc` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `max_width` int(10) unsigned NOT NULL, + `max_height` int(10) unsigned NOT NULL, + `schema` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `table` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `column` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `image_schema_size` +-- + +DROP TABLE IF EXISTS `image_schema_size`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `image_schema_size` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `image_schema_id` int(10) unsigned NOT NULL, + `width` int(10) unsigned NOT NULL, + `height` int(10) unsigned NOT NULL, + `crop` tinyint(3) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `image_schema_id` (`image_schema_id`), + CONSTRAINT `image_schema_size_ibfk_1` FOREIGN KEY (`image_schema_id`) REFERENCES `image_schema` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `invoice_view` +-- + +DROP TABLE IF EXISTS `invoice_view`; +/*!50001 DROP VIEW IF EXISTS `invoice_view`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `invoice_view` AS SELECT + 1 AS `invoice_id`, + 1 AS `serial_num`, + 1 AS `issued`, + 1 AS `amount`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `language` +-- + +DROP TABLE IF EXISTS `language`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `language` ( + `code` varchar(10) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(20) COLLATE utf8_unicode_ci NOT NULL, + `active` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`code`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `link` +-- + +DROP TABLE IF EXISTS `link`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `link` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `link` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `image` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `location` +-- + +DROP TABLE IF EXISTS `location`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `location` ( + `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `lat` varchar(12) COLLATE utf8_unicode_ci NOT NULL, + `lng` varchar(12) COLLATE utf8_unicode_ci NOT NULL, + `title` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `address` varchar(75) COLLATE utf8_unicode_ci DEFAULT NULL, + `postcode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `city` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `province` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `phone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `language` char(2) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `mail_config` +-- + +DROP TABLE IF EXISTS `mail_config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `mail_config` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Identifier', + `host` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'localhost' COMMENT 'SMTP host', + `port` smallint(6) NOT NULL DEFAULT '465' COMMENT 'SMTP port', + `secure` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'Wether to use a secure connection', + `sender` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The sender mail address', + `sender_name` varchar(75) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The sender name', + `user` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'SMTP user', + `password` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'SMTP password, base64 encoded', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `metatag` +-- + +DROP TABLE IF EXISTS `metatag`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `metatag` ( + `id` int(11) NOT NULL, + `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `content` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `news` +-- + +DROP TABLE IF EXISTS `news`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `news` ( + `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `title` varchar(150) COLLATE utf8_unicode_ci NOT NULL, + `text` text COLLATE utf8_unicode_ci NOT NULL, + `image` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `user_id` int(10) unsigned NOT NULL, + `date_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `priority` tinyint(3) unsigned NOT NULL DEFAULT '3', + `tag` varchar(15) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'new', + PRIMARY KEY (`id`), + KEY `user` (`user_id`), + KEY `tag` (`tag`), + CONSTRAINT `news_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `account`.`account` (`id`) ON UPDATE CASCADE, + CONSTRAINT `news_ibfk_2` FOREIGN KEY (`tag`) REFERENCES `news_tag` (`name`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `news_tag` +-- + +DROP TABLE IF EXISTS `news_tag`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `news_tag` ( + `name` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `order` +-- + +DROP TABLE IF EXISTS `order`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `order` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `date_send` date NOT NULL DEFAULT '0000-00-00', + `customer_id` int(11) NOT NULL, + `delivery_method_id` int(11) DEFAULT '3', + `agency_id` int(11) DEFAULT '2', + `address_id` int(11) DEFAULT NULL, + `company_id` smallint(5) unsigned DEFAULT '442', + `note` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `source_app` set('WEB','ANDROID','IOS','TPV','TABLET_VN','') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'TPV', + `is_bionic` tinyint(1) NOT NULL DEFAULT '1', + `confirmed` tinyint(1) NOT NULL DEFAULT '0', + `date_make` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `first_row_stamp` datetime DEFAULT NULL, + `confirm_date` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `address` (`address_id`), + KEY `delivery_method` (`delivery_method_id`), + KEY `agency` (`agency_id`), + KEY `customer_id` (`customer_id`), + KEY `company_id` (`company_id`), + KEY `id` (`id`,`customer_id`), + KEY `source_app` (`source_app`), + CONSTRAINT `order_ibfk_5` FOREIGN KEY (`address_id`) REFERENCES `vn2008`.`Consignatarios` (`id_consigna`) ON UPDATE CASCADE, + CONSTRAINT `order_ibfk_8` FOREIGN KEY (`delivery_method_id`) REFERENCES `vn2008`.`Vistas` (`vista_id`) ON UPDATE CASCADE, + CONSTRAINT `order_ibfk_9` FOREIGN KEY (`agency_id`) REFERENCES `vn2008`.`Agencias` (`Id_Agencia`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `order_basket` +-- + +DROP TABLE IF EXISTS `order_basket`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `order_basket` ( + `order_id` int(10) unsigned NOT NULL, + `customer_id` int(11) NOT NULL, + PRIMARY KEY (`order_id`,`customer_id`), + UNIQUE KEY `customer_id` (`customer_id`), + CONSTRAINT `order_basket_ibfk_1` FOREIGN KEY (`order_id`, `customer_id`) REFERENCES `order` (`id`, `customer_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `order_basket_ibfk_2` FOREIGN KEY (`order_id`) REFERENCES `order` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `order_basket_ibfk_3` FOREIGN KEY (`customer_id`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `order_check` +-- + +DROP TABLE IF EXISTS `order_check`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `order_check` ( + `id` tinyint(1) unsigned NOT NULL AUTO_INCREMENT, + `max_time` time NOT NULL, + `deny_sunday` tinyint(1) unsigned NOT NULL, + `deny_day` date DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Conditions to check when an order is confirmed'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `order_check_festive` +-- + +DROP TABLE IF EXISTS `order_check_festive`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `order_check_festive` ( + `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `date` date NOT NULL, + `accept_orders` tinyint(1) unsigned NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + UNIQUE KEY `date` (`date`) +) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `order_check_wday` +-- + +DROP TABLE IF EXISTS `order_check_wday`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `order_check_wday` ( + `weekday` tinyint(3) unsigned NOT NULL COMMENT '0 = Monday, 6 = Sunday', + `max_time` time NOT NULL, + PRIMARY KEY (`weekday`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `order_component` +-- + +DROP TABLE IF EXISTS `order_component`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `order_component` ( + `order_row_id` int(10) unsigned NOT NULL, + `component_id` int(11) NOT NULL, + `price` decimal(12,4) NOT NULL, + PRIMARY KEY (`order_row_id`,`component_id`), + KEY `component_id` (`component_id`), + CONSTRAINT `order_component_ibfk_1` FOREIGN KEY (`order_row_id`) REFERENCES `order_row` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `order_config` +-- + +DROP TABLE IF EXISTS `order_config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `order_config` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `employee_id` int(11) NOT NULL, + `delivery_agency` int(11) NOT NULL, + `guest_method` varchar(45) COLLATE utf8_unicode_ci NOT NULL, + `guest_agency` int(11) NOT NULL, + `reserve_time` time NOT NULL, + PRIMARY KEY (`id`), + KEY `employee_id` (`employee_id`), + KEY `delivery_agency` (`delivery_agency`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `order_confirm_time` +-- + +DROP TABLE IF EXISTS `order_confirm_time`; +/*!50001 DROP VIEW IF EXISTS `order_confirm_time`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `order_confirm_time` AS SELECT + 1 AS `date_make`, + 1 AS `source_app`, + 1 AS `customer_id`, + 1 AS `confirm_date`, + 1 AS `first_row_stamp`, + 1 AS `minutos`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `order_row` +-- + +DROP TABLE IF EXISTS `order_row`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `order_row` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `order_id` int(10) unsigned NOT NULL DEFAULT '0', + `item_id` int(11) NOT NULL DEFAULT '0', + `warehouse_id` int(11) DEFAULT NULL, + `shipment` date DEFAULT NULL, + `amount` smallint(6) unsigned NOT NULL DEFAULT '0', + `price` decimal(12,2) DEFAULT NULL, + `rate` smallint(5) unsigned DEFAULT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Id_Movimiento` int(11) DEFAULT NULL COMMENT 'Deprecated', + PRIMARY KEY (`id`), + KEY `item` (`item_id`), + KEY `order_id` (`order_id`), + KEY `created` (`created`), + KEY `warehouse_shipment` (`warehouse_id`,`shipment`), + CONSTRAINT `order_row_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON UPDATE CASCADE, + CONSTRAINT `order_row_ibfk_3` FOREIGN KEY (`order_id`) REFERENCES `order` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `order_row_bi` BEFORE INSERT ON `order_row` +FOR EACH ROW +BEGIN + DECLARE v_is_first BOOLEAN; + + SELECT (first_row_stamp IS NULL) INTO v_is_first + FROM `order` + WHERE id = NEW.order_id; + + IF v_is_first THEN + UPDATE `order` SET first_row_stamp = NOW() + WHERE id = NEW.order_id; + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Temporary view structure for view `order_row_view` +-- + +DROP TABLE IF EXISTS `order_row_view`; +/*!50001 DROP VIEW IF EXISTS `order_row_view`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `order_row_view` AS SELECT + 1 AS `id`, + 1 AS `order_id`, + 1 AS `warehouse_id`, + 1 AS `item_id`, + 1 AS `amount`, + 1 AS `price2`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `order_view` +-- + +DROP TABLE IF EXISTS `order_view`; +/*!50001 DROP VIEW IF EXISTS `order_view`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `order_view` AS SELECT + 1 AS `id`, + 1 AS `date_make`, + 1 AS `date_send`, + 1 AS `customer_id`, + 1 AS `delivery_method_id`, + 1 AS `agency_id`, + 1 AS `note`, + 1 AS `address_id`, + 1 AS `company_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `restPriv` +-- + +DROP TABLE IF EXISTS `restPriv`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `restPriv` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `methodPath` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `role` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `role` (`role`), + CONSTRAINT `restPriv_ibfk_1` FOREIGN KEY (`role`) REFERENCES `account`.`role` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `shelf` +-- + +DROP TABLE IF EXISTS `shelf`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `shelf` ( + `id` int(10) unsigned NOT NULL, + `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `nTrays` tinyint(3) unsigned NOT NULL, + `trayheight` mediumint(8) unsigned NOT NULL, + `topTrayHeight` mediumint(8) unsigned NOT NULL, + `width` mediumint(8) unsigned NOT NULL, + `depth` mediumint(8) unsigned NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Dimensiones de las estanterias'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `shelfConfig` +-- + +DROP TABLE IF EXISTS `shelfConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `shelfConfig` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(25) COLLATE utf8_unicode_ci NOT NULL, + `namePrefix` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `warehouse` smallint(5) unsigned NOT NULL, + `family` smallint(5) unsigned NOT NULL, + `shelf` int(10) unsigned NOT NULL, + `maxAmount` smallint(5) unsigned DEFAULT NULL, + `showPacking` tinyint(4) NOT NULL, + `stack` tinyint(4) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `shelf_id` (`shelf`), + KEY `family_id` (`family`), + KEY `warehouse_id` (`warehouse`), + CONSTRAINT `shelfConfig_ibfk_1` FOREIGN KEY (`family`) REFERENCES `vn2008`.`Tipos` (`tipo_id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `shelfConfig_ibfk_2` FOREIGN KEY (`shelf`) REFERENCES `shelf` (`id`) ON UPDATE CASCADE, + CONSTRAINT `shelfConfig_ibfk_3` FOREIGN KEY (`warehouse`) REFERENCES `vn2008`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `sms_config` +-- + +DROP TABLE IF EXISTS `sms_config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `sms_config` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `uri` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `user` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `password` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `title` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='SMS configuration parameters'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `social` +-- + +DROP TABLE IF EXISTS `social`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `social` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `title` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `link` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `icon` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `priority` tinyint(3) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `priority` (`priority`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `sql_message` +-- + +DROP TABLE IF EXISTS `sql_message`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `sql_message` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `code` char(35) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `code` (`code`) +) ENGINE=MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `survey` +-- + +DROP TABLE IF EXISTS `survey`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `survey` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `question` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `survey_answer` +-- + +DROP TABLE IF EXISTS `survey_answer`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `survey_answer` ( + `id` int(10) unsigned NOT NULL, + `survey_id` int(10) unsigned NOT NULL, + `answer` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `votes` int(10) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `survey` (`survey_id`), + CONSTRAINT `survey_answer_ibfk_1` FOREIGN KEY (`survey_id`) REFERENCES `survey` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `survey_vote` +-- + +DROP TABLE IF EXISTS `survey_vote`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `survey_vote` ( + `survey_id` int(10) unsigned NOT NULL, + `user_id` int(10) unsigned NOT NULL, + PRIMARY KEY (`survey_id`,`user_id`), + KEY `user_id` (`user_id`), + CONSTRAINT `survey_vote_ibfk_1` FOREIGN KEY (`survey_id`) REFERENCES `survey` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `survey_vote_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `ticket_row_view` +-- + +DROP TABLE IF EXISTS `ticket_row_view`; +/*!50001 DROP VIEW IF EXISTS `ticket_row_view`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ticket_row_view` AS SELECT + 1 AS `id`, + 1 AS `item_id`, + 1 AS `ticket_id`, + 1 AS `concept`, + 1 AS `amount`, + 1 AS `price`, + 1 AS `fixed`, + 1 AS `discount`, + 1 AS `cost`, + 1 AS `reserved`, + 1 AS `ok`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Temporary view structure for view `ticket_view` +-- + +DROP TABLE IF EXISTS `ticket_view`; +/*!50001 DROP VIEW IF EXISTS `ticket_view`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ticket_view` AS SELECT + 1 AS `id`, + 1 AS `customer_id`, + 1 AS `warehouse_id`, + 1 AS `date`, + 1 AS `delivery`, + 1 AS `alias`, + 1 AS `agency_id`, + 1 AS `note`, + 1 AS `invoice`, + 1 AS `address_id`, + 1 AS `employee_id`, + 1 AS `comments`, + 1 AS `signed`, + 1 AS `packages`, + 1 AS `location`, + 1 AS `hour`, + 1 AS `blocked`, + 1 AS `solution`, + 1 AS `company_id`, + 1 AS `type`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `tpv_config` +-- + +DROP TABLE IF EXISTS `tpv_config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tpv_config` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `currency` smallint(5) unsigned NOT NULL, + `terminal` tinyint(3) unsigned NOT NULL, + `transaction_type` tinyint(3) unsigned NOT NULL, + `employee_id` int(10) NOT NULL, + `url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The bank web service URL for production environment', + `test_mode` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Whether test mode is enabled', + `test_url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The bank web service URL for test environment', + `test_key` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'The bank secret key for test environment', + `merchant_url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `employee_id` (`employee_id`), + CONSTRAINT `employee_id` FOREIGN KEY (`employee_id`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Virtual TPV parameters'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tpv_error` +-- + +DROP TABLE IF EXISTS `tpv_error`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tpv_error` ( + `code` char(7) COLLATE utf8_unicode_ci NOT NULL, + `message` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT=' List of possible TPV errors'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tpv_imap_config` +-- + +DROP TABLE IF EXISTS `tpv_imap_config`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tpv_imap_config` ( + `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, + `host` varchar(150) COLLATE utf8_unicode_ci NOT NULL, + `user` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `pass` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `clean_period` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `success_folder` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, + `error_folder` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='IMAP configuration parameters for virtual TPV'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tpv_merchant` +-- + +DROP TABLE IF EXISTS `tpv_merchant`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tpv_merchant` ( + `id` int(10) unsigned NOT NULL COMMENT 'Merchant identifier', + `description` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Small description', + `company_id` smallint(6) unsigned DEFAULT NULL COMMENT 'Company associated with the merchant', + `bank_id` int(10) NOT NULL COMMENT 'The bank where merchant receipts are created', + `secret_key` varchar(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'The merchant secret key to sign transactions', + PRIMARY KEY (`id`), + KEY `bank_id` (`bank_id`), + KEY `company_id` (`company_id`), + KEY `id` (`id`,`company_id`), + CONSTRAINT `company_id` FOREIGN KEY (`company_id`) REFERENCES `vn2008`.`empresa` (`id`) ON UPDATE CASCADE, + CONSTRAINT `tpv_merchant_ibfk_1` FOREIGN KEY (`bank_id`) REFERENCES `vn2008`.`Bancos` (`Id_Banco`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Virtual TPV users and its associated company'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tpv_merchant_enable` +-- + +DROP TABLE IF EXISTS `tpv_merchant_enable`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tpv_merchant_enable` ( + `merchant_id` int(10) unsigned NOT NULL DEFAULT '0', + `company_id` smallint(6) unsigned NOT NULL, + PRIMARY KEY (`merchant_id`,`company_id`), + UNIQUE KEY `company_id` (`company_id`), + CONSTRAINT `tpv_merchant_enable_ibfk_1` FOREIGN KEY (`merchant_id`, `company_id`) REFERENCES `tpv_merchant` (`id`, `company_id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Virtual TPV enabled users'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tpv_response` +-- + +DROP TABLE IF EXISTS `tpv_response`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tpv_response` ( + `id` smallint(5) unsigned NOT NULL, + `message` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='List of possible TPV reponses'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `tpv_transaction` +-- + +DROP TABLE IF EXISTS `tpv_transaction`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `tpv_transaction` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `merchant_id` int(10) unsigned NOT NULL, + `customer_id` int(11) NOT NULL, + `receipt_id` int(11) DEFAULT NULL, + `amount` int(10) unsigned NOT NULL, + `response` smallint(5) unsigned DEFAULT NULL COMMENT 'Status notified by bank: NULL if no notification, 0 if success, error otherwise', + `error_code` char(7) COLLATE utf8_unicode_ci DEFAULT NULL, + `status` enum('started','ok','ko') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'started', + `date_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `merchant_id` (`merchant_id`), + KEY `receipt_id` (`receipt_id`), + KEY `user_id` (`customer_id`), + KEY `response` (`response`), + KEY `error_code` (`error_code`), + CONSTRAINT `receipt_id` FOREIGN KEY (`receipt_id`) REFERENCES `vn2008`.`Recibos` (`Id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `tpv_transaction_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `tpv_transaction_ibfk_2` FOREIGN KEY (`merchant_id`) REFERENCES `tpv_merchant` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Transactions realized through the virtual TPV'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `tpv_transaction_view` +-- + +DROP TABLE IF EXISTS `tpv_transaction_view`; +/*!50001 DROP VIEW IF EXISTS `tpv_transaction_view`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `tpv_transaction_view` AS SELECT + 1 AS `id`, + 1 AS `merchant_id`, + 1 AS `customer_id`, + 1 AS `receipt_id`, + 1 AS `amount`, + 1 AS `response`, + 1 AS `status`, + 1 AS `date_time`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `userSession` +-- + +DROP TABLE IF EXISTS `userSession`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `userSession` ( + `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `lastUpdate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `ssid` char(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `data` text COLLATE utf8_unicode_ci, + `userVisit` int(10) unsigned DEFAULT NULL, + UNIQUE KEY `ssid` (`ssid`), + KEY `userVisit` (`userVisit`), + KEY `lastUpdate` (`lastUpdate`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `user_android` +-- + +DROP TABLE IF EXISTS `user_android`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `user_android` ( + `user_id` int(10) unsigned NOT NULL, + `android_id` varchar(200) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`user_id`,`android_id`), + CONSTRAINT `user_android_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Temporary view structure for view `user_android_view` +-- + +DROP TABLE IF EXISTS `user_android_view`; +/*!50001 DROP VIEW IF EXISTS `user_android_view`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `user_android_view` AS SELECT + 1 AS `user_id`, + 1 AS `android_id`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `visit` +-- + +DROP TABLE IF EXISTS `visit`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `visit` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `firstAgent` int(10) unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `firstAgent` (`firstAgent`), + CONSTRAINT `visit_ibfk_1` FOREIGN KEY (`firstAgent`) REFERENCES `visitAgent` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `visitAccess` +-- + +DROP TABLE IF EXISTS `visitAccess`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `visitAccess` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `agent` int(10) unsigned NOT NULL, + `stamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `ip` int(10) unsigned DEFAULT NULL, + `referer` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `visit_access_idx_agent` (`agent`), + KEY `stamp` (`stamp`), + CONSTRAINT `visitAccess_ibfk_1` FOREIGN KEY (`agent`) REFERENCES `visitAgent` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `visitAgent` +-- + +DROP TABLE IF EXISTS `visitAgent`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `visitAgent` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `visit` int(10) unsigned NOT NULL, + `firstAccess` int(10) unsigned DEFAULT NULL, + `platform` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `browser` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `version` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, + `javascript` tinyint(3) unsigned DEFAULT NULL, + `cookies` tinyint(3) unsigned DEFAULT NULL, + `agent` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `visit_id` (`visit`), + KEY `firstAccess` (`firstAccess`), + CONSTRAINT `visitAgent_ibfk_1` FOREIGN KEY (`visit`) REFERENCES `visit` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `visitAgent_ibfk_2` FOREIGN KEY (`firstAccess`) REFERENCES `visitAccess` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `visitUser` +-- + +DROP TABLE IF EXISTS `visitUser`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `visitUser` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `access` int(10) unsigned NOT NULL, + `user` int(10) unsigned DEFAULT NULL, + `stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `access_id` (`access`), + KEY `date_time` (`stamp`), + KEY `user_id` (`user`), + CONSTRAINT `visitUser_ibfk_1` FOREIGN KEY (`access`) REFERENCES `visitAccess` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping routines for database 'hedera' +-- +/*!50003 DROP FUNCTION IF EXISTS `basketGetId` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `basketGetId`() RETURNS int(11) + DETERMINISTIC +BEGIN + DECLARE v_order INT; + + SELECT order_id INTO v_order FROM order_basket + WHERE customer_id = account.userGetId(); + + RETURN v_order; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `customer_get_debt` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `customer_get_debt`() RETURNS double +BEGIN + DECLARE v_debt DOUBLE; + + CALL customer_get_debt_by_company (); + + SELECT SUM(amount) INTO v_debt + FROM t_customer_debt; + + DROP TEMPORARY TABLE t_customer_debt; + + RETURN v_debt; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `invoice_get_path` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `invoice_get_path`(v_invoice INT) RETURNS varchar(255) CHARSET utf8 +BEGIN + DECLARE v_issued DATE; + DECLARE v_serial VARCHAR(15); + + SELECT Fecha, Id_Factura + INTO v_issued, v_serial + FROM vn2008.Facturas WHERE factura_id = v_invoice; + + RETURN CONCAT_WS('/' + ,'invoice' + ,YEAR(v_issued) + ,MONTH(v_issued) + ,DAY(v_issued) + ,CONCAT(YEAR(v_issued), v_serial, '.pdf') + ); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `orderRowCheckAmount` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `orderRowCheckAmount`(vOrder INT, vItem INT, vAmount INT) RETURNS int(11) +BEGIN + DECLARE vGroup INT; + DECLARE vMod INT; + DECLARE vIsBionic BOOLEAN; + + SELECT CASE caja WHEN 0 THEN 1 WHEN 2 THEN packing ELSE grouping END, o.is_bionic + INTO vGroup, vIsBionic + FROM `order` o + JOIN vn2008.v_compres c ON c.warehouse_id = o.wh_id + WHERE Id_Article = vItem AND o.id = vOrder AND c.landing <= o.date_send + ORDER BY landing DESC LIMIT 1; + + IF !vIsBionic + THEN + SET vMod = MOD(vAmount, vGroup); + + IF vMod + THEN + SET vAmount = vAmount + vGroup - vMod; + -- CALL util.warn ('ORDER_AMOUNT_ROUNDED'); + END IF; + END IF; + + RETURN vAmount; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `order_get_total` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `order_get_total`(v_order INT) RETURNS double +BEGIN +/** + * Obtiene el total de un pedido con el IVA y el recargo de + * equivalencia incluidos. + * + * @param v_order El identificador del pedido + * + * @return El total del pedido + **/ + + DECLARE v_total DOUBLE; + + CALL order_get_vat (v_order); + + SELECT SUM(tax_base) + SUM(vat) + SUM(surcharge) INTO v_total + FROM t_order_vat; + + DROP TEMPORARY TABLE t_order_vat; + + RETURN v_total; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `userCheckRestPriv` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `userCheckRestPriv`(vMethodPath VARCHAR(255)) RETURNS tinyint(1) + DETERMINISTIC +BEGIN +/** + * Comprueba si el usuario actual tiene permiso para ejecutar + * un servicio REST. + * + * @param vMethodPath Ruta del servicio REST a ejecutar + * @return %TRUE si tiene permisos, %FALSE en caso contrario + **/ + DECLARE vRole INT DEFAULT NULL; + + SELECT role INTO vRole FROM restPriv + WHERE methodPath = vMethodPath; + + RETURN vRole IS NULL + OR account.userHasRoleId (vRole); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `agency_list_from_date` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `agency_list_from_date`(v_date DATE, v_address INT) +BEGIN +/** + * Devuelve el listado de agencias disponibles para la fecha + * y dirección pasadas. + * + * @param v_date Fecha de recogida + * @address v_addres Id de dirección de envío, @NULL si es recogida + **/ + DECLARE v_agency INT; + DECLARE v_done BOOLEAN; + + DECLARE cur CURSOR FOR + SELECT agency_id FROM vn2008.agency; + -- WHERE IFNULL(warehouse_alias_id, 1) <> 28; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = TRUE; + + DROP TEMPORARY TABLE IF EXISTS t_agency; + CREATE TEMPORARY TABLE t_agency + ( + agency_id INT, + PRIMARY KEY (agency_id) + ) + ENGINE = MEMORY; + + OPEN cur; + + l: LOOP + SET v_done = FALSE; + FETCH cur INTO v_agency; + + IF v_done THEN + LEAVE l; + END IF; + + CALL vn2008.travel_tree (v_date, v_address, v_agency); + + -- No puedo usar IGNORE porque lanza un error 'invisible' + + INSERT /* IGNORE */ INTO t_agency + SELECT a.Id_Agencia + FROM vn2008.Agencias a + JOIN vn2008.travel_tree t + JOIN vn2008.warehouse w on w.id = t.warehouse_id + WHERE a.agency_id = v_agency + ON DUPLICATE KEY UPDATE + agency_id = VALUES(agency_id); + END LOOP; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `basket_check` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `basket_check`() +BEGIN +/** + * Comprueba que la cesta esta creada y que su configuración es + * correcta. Si la configuración es correcta pero lleva mucho + * tiempo creada actualiza los precios y cantidades de los artículos. + * + * @select El id del pedido y el estado de la cesta + **/ + DECLARE v_order INT; + DECLARE v_created DATETIME; + DECLARE v_status VARCHAR(15) DEFAULT 'OK'; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_status = 'NOT_EXISTS'; + DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET v_status = 'BAD_CONFIG'; + + SELECT id, date_make + INTO v_order, v_created + FROM basket; + + IF v_status = 'OK' + THEN + CALL order_check_config (v_order); + + IF v_status = 'OK' AND v_created < TIMESTAMPADD(DAY, -1, NOW()) + THEN + CALL order_update (v_order); + SET v_status = 'UPDATED'; + END IF; + END IF; + + SELECT v_status stat; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `basket_configure` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `basket_configure`( + v_delivery DATE, + v_delivery_method VARCHAR(45), + v_agency INT, + v_address INT) +BEGIN +/** + * Configura la cesta de la compra utilizando los parámetros + * pasados. Si los parámetros no son válidos devuelve un error. + * + * @param v_delivery Fecha de recogida + * @param v_agency Id de la agencia + * @param v_address Id de dirección de envío, @NULL si es recogida + **/ + DECLARE v_order INT; + DECLARE v_company INT; + DECLARE v_delivery_method_id INT; + + DECLARE CONTINUE HANDLER FOR NOT FOUND + SET v_order = NULL; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + START TRANSACTION; + + SELECT vista_id INTO v_delivery_method_id + FROM vn2008.Vistas + WHERE code = v_delivery_method; + + IF v_delivery_method = 'DELIVERY' + THEN + SELECT delivery_agency INTO v_agency + FROM order_config; + END IF; + + IF v_delivery_method = 'PICKUP' AND v_address IS NULL + THEN + SELECT default_address INTO v_address + FROM customer_view; + END IF; + + SET v_order = basketGetId(); + + IF v_order IS NULL + THEN + SELECT empresa_id INTO v_company + FROM vn2008.Clientes_empresa + WHERE Id_Cliente = account.userGetId() + AND CURDATE() BETWEEN fecha_ini AND fecha_fin + LIMIT 1; + + INSERT INTO `order` + SET + customer_id = account.userGetId(), + date_send = v_delivery, + delivery_method_id = v_delivery_method_id, + agency_id = v_agency, + address_id = v_address, + source_app = 'WEB', + company_id = IFNULL(v_company, 442); + + SET v_order = LAST_INSERT_ID(); + + INSERT INTO order_basket SET + customer_id = account.userGetId(), + order_id = v_order; + ELSE + UPDATE `order` + SET + date_send = v_delivery, + delivery_method_id = v_delivery_method_id, + agency_id = v_agency, + address_id = v_address + WHERE + id = v_order; + + CALL order_update (v_order); + END IF; + + CALL order_check_config (v_order); + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `basket_configure_for_guest` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `basket_configure_for_guest`() +BEGIN + DECLARE v_method VARCHAR(45); + DECLARE v_agency INT; + + SELECT guest_method, guest_agency + INTO v_method, v_agency + FROM order_config + LIMIT 1; + + CALL basket_configure (CURDATE(), v_method, v_agency, NULL); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `basket_confirm` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `basket_confirm`() +BEGIN + DECLARE v_order INT DEFAULT basketGetId (); + + IF v_order IS NOT NULL + THEN + CALL order_confirm_bionic (v_order); + + DELETE FROM order_basket + WHERE order_id = v_order; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `basket_get_vat` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `basket_get_vat`() +BEGIN + CALL order_get_vat (basketGetId()); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `basket_item_add` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `basket_item_add`( + v_warehouse INT, + v_item INT, + v_amount INT) +BEGIN + DECLARE v_calc INT; + DECLARE v_order INT; + DECLARE v_type INT; + DECLARE v_row INT; + DECLARE v_add INT; + DECLARE v_available INT; + DECLARE v_done BOOLEAN; + DECLARE v_grouping INT; + DECLARE v_rate INT; + DECLARE v_shipment DATE; + DECLARE v_price DECIMAL(10,2); + + DECLARE cur CURSOR FOR + SELECT grouping, price, rate + FROM tmp.bionic_price + WHERE warehouse_id = v_warehouse + AND item_id = v_item + ORDER BY grouping DESC; + + DECLARE CONTINUE HANDLER FOR NOT FOUND + SET v_done = TRUE; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + CALL bionic_from_item (v_item); + + START TRANSACTION; + + SET v_order = basketGetId(); + + SELECT Fecha_envio INTO v_shipment + FROM tmp.travel_tree + WHERE warehouse_id = v_warehouse; + + SELECT available INTO v_available + FROM tmp.bionic_lot + WHERE warehouse_id = v_warehouse + AND item_id = v_item; + + IF v_amount > v_available + THEN + CALL util.throw ('ORDER_ROW_UNAVAILABLE'); + END IF; + + OPEN cur; + + l: LOOP + SET v_done = FALSE; + FETCH cur INTO v_grouping, v_price, v_rate; + + IF v_done THEN + LEAVE l; + END IF; + + SET v_add = v_amount - MOD(v_amount, v_grouping); + SET v_amount = v_amount - v_add; + + IF v_add = 0 THEN + ITERATE l; + END IF; + + INSERT INTO order_row SET + order_id = v_order, + item_id = v_item, + warehouse_id = v_warehouse, + shipment = v_shipment, + rate = v_rate, + amount = v_add, + price = v_price; + + SET v_row = LAST_INSERT_ID(); + + INSERT INTO order_component (order_row_id, component_id, price) + SELECT v_row, c.component_id, c.cost + FROM tmp.bionic_component c + JOIN bi.tarifa_componentes t + ON t.Id_Componente = c.component_id + AND (t.tarifa_class IS NULL OR t.tarifa_class = v_rate) + WHERE c.warehouse_id = v_warehouse + AND c.item_id = v_item; + END LOOP; + + CLOSE cur; + COMMIT; + + CALL vn2008.bionic_free (); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc`() +BEGIN + DECLARE v_date DATE; + DECLARE v_address INT; + DECLARE v_agency INT; + + SELECT date_send, address_id, agency_id + INTO v_date, v_address, v_agency + FROM basket; + + CALL vn2008.bionic_calc (v_date, v_address, v_agency); + + IF account.userGetName () = 'visitor' + THEN + DROP TEMPORARY TABLE tmp.bionic_component; + UPDATE tmp.bionic_item SET price = NULL; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_basket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_basket`() +BEGIN + DECLARE v_order INT; + DECLARE v_date DATE; + DECLARE v_address INT; + DECLARE v_agency INT; + + SELECT id, date_send, address_id, agency_id + INTO v_order, v_date, v_address, v_agency + FROM basket; + + CALL vn2008.bionic_from_order (v_date, v_address, v_agency, v_order); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_item` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_item`(v_item INT) +BEGIN + DECLARE v_date DATE; + DECLARE v_address INT; + DECLARE v_agency INT; + + SELECT date_send, address_id, agency_id + INTO v_date, v_address, v_agency + FROM basket; + + CALL vn2008.bionic_from_item (v_date, v_address, v_agency, v_item); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_type` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_type`(v_type INT) +BEGIN + DECLARE v_date DATE; + DECLARE v_address INT; + DECLARE v_agency INT; + + SELECT date_send, address_id, agency_id + INTO v_date, v_address, v_agency + FROM basket; + + CALL vn2008.bionic_from_type (v_date, v_address, v_agency, v_type); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `clean` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `clean`() +BEGIN + DECLARE v_i INT DEFAULT 0; + + WHILE v_i < 5 + DO + DROP TEMPORARY TABLE IF EXISTS tmp; + + CREATE TEMPORARY TABLE tmp + ENGINE = MEMORY + SELECT id, COUNT(*) c + FROM order_component + GROUP BY order_row_id, component_id + HAVING c > 1; + + DELETE c FROM order_component c JOIN tmp t ON t.id = c.id; + + DROP TEMPORARY TABLE tmp; + + SET v_i = v_i + 1; + END WHILE; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `customer_get_debt_by_company` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `customer_get_debt_by_company`() +BEGIN +/** + * Calcula el saldo del cliente en cada empresa. + * + * @select Saldo desglosado por empresa + **/ + DECLARE v_date_ini DATETIME DEFAULT TIMESTAMP(DATE_FORMAT(TIMESTAMPADD(YEAR, -1, CURDATE()), '%Y-01-01')); + DECLARE v_date_end DATETIME DEFAULT TIMESTAMP(CURDATE(), '23:59:59'); + + DROP TEMPORARY TABLE IF EXISTS vn2008.ticket_tmp; + + CREATE TEMPORARY TABLE vn2008.ticket_tmp + (INDEX (ticket_id)) + ENGINE = MEMORY + SELECT t.id ticket_id + FROM ticket_view t + JOIN ticket_row_view r ON t.id = r.ticket_id + JOIN tpv_merchant_enable m ON m.company_id = t.company_id + WHERE invoice IS NULL + AND date BETWEEN v_date_ini AND v_date_end + GROUP BY ticket_id + HAVING BIT_AND(fixed); + + CALL vn2008.ticket_total (); + + CREATE TEMPORARY TABLE t_customer_debt + ENGINE = MEMORY + SELECT e.id, e.abbreviation, IFNULL(SUM(t.amount), 0) amount + FROM vn2008.empresa e + JOIN tpv_merchant_enable m ON m.company_id = e.id + LEFT JOIN + ( + SELECT SUM(t.total) amount, i.company_id + FROM vn2008.ticket_total t + JOIN ticket_view i ON i.id = t.ticket_id + GROUP BY i.company_id + UNION ALL + SELECT r.amount, r.company_id + FROM bi.customer_risk r + JOIN tpv_merchant_enable m ON m.company_id = r.company_id + WHERE customer_id = account.userGetId() + UNION ALL + SELECT -SUM(amount) / 100, company_id + FROM tpv_transaction_view t + JOIN tpv_merchant m ON m.id = t.merchant_id + WHERE t.receipt_id IS NULL AND t.status = 'ok' + GROUP BY company_id + ) t + ON t.company_id = e.id + GROUP BY e.id; + + DROP TEMPORARY TABLE vn2008.ticket_tmp; + DROP TEMPORARY TABLE vn2008.ticket_total; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `formList` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `formList`() +BEGIN +/** + * Devuelve el listado de formularios web a los que tiene + * acceso el usuario actual. + * + * @table tmp.role Tabla con el listado de formularios + */ + SELECT f.id, f.path, f.description, f.parent + FROM form f + WHERE role_id IN (SELECT id FROM account.userRole) + ORDER BY f.parent, f.display_order, f.id; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `itemAllocator` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `itemAllocator`( + vWh TINYINT + ,vDate DATE + ,vType INT + ,vPrefix VARCHAR(255) + ,vUseIds BOOLEAN +) +BEGIN + DECLARE vPrefixLen SMALLINT; + DECLARE vFilter VARCHAR(255) DEFAULT NULL; + DECLARE vDateInv DATE DEFAULT vn2008.date_inv(); + + SET vPrefixLen = LENGTH(vPrefix); + + IF vPrefix IS NOT NULL AND vPrefixLen > 0 + THEN + SET vFilter = CONCAT(vPrefix, '%'); + SET vPrefixLen = vPrefixLen + 1; + END IF; + + DROP TEMPORARY TABLE IF EXISTS filter; + CREATE TEMPORARY TABLE filter + (INDEX (item_id)) + ENGINE = MEMORY + SELECT Id_Article item_id FROM vn2008.Articles + WHERE tipo_id = vType + AND (vFilter IS NULL OR Article LIKE vFilter); + + DROP TEMPORARY TABLE IF EXISTS current_stock; + CREATE TEMPORARY TABLE current_stock + (INDEX (item_id)) + ENGINE = MEMORY + SELECT item_id, SUM(Cantidad) amount FROM + ( + SELECT Id_Article item_id, Cantidad + FROM vn2008.Compres c + JOIN vn2008.Entradas e USING(Id_Entrada) + JOIN vn2008.travel t ON t.id = e.travel_id + WHERE landing BETWEEN vDateInv AND vDate + AND warehouse_id = vWh + AND NOT Redada + UNION ALL + SELECT Id_Article, -Cantidad + FROM vn2008.Compres c + JOIN vn2008.Entradas e USING(Id_Entrada) + JOIN vn2008.travel t ON t.id = e.travel_id + WHERE shipment BETWEEN vDateInv AND CURDATE() + AND warehouse_id_out = vWh + AND NOT Redada + AND delivered + UNION ALL + SELECT m.Id_Article, -m.Cantidad + FROM vn2008.Movimientos m + JOIN vn2008.Tickets t USING(Id_Ticket) + JOIN vn.ticketState s ON s.ticket = t.Id_Ticket + WHERE t.Fecha BETWEEN vDateInv AND CURDATE() + AND t.warehouse_id = vWh + AND (t.Etiquetasemitidas OR s.alertLevel = 3) + ) t + GROUP BY item_id + HAVING amount > 0; + + DROP TEMPORARY TABLE IF EXISTS tmp; + CREATE TEMPORARY TABLE tmp + (INDEX (item_id)) + ENGINE = MEMORY + SELECT * FROM + ( + SELECT c.Id_Article item_id, c.Id_Compra id, c.Id_Cubo, c.packing + FROM vn2008.Compres c + JOIN vn2008.Entradas e USING(Id_Entrada) + JOIN vn2008.travel t ON t.id = e.travel_id + WHERE t.landing BETWEEN vDateInv AND vDate + AND c.Novincular = FALSE + AND c.Tarifa2 >= 0 + AND Id_Cubo IS NOT NULL + ORDER BY t.warehouse_id = 1 DESC, t.landing DESC + ) t GROUP BY item_id; + + DROP TEMPORARY TABLE IF EXISTS result; + CREATE TEMPORARY TABLE result + ENGINE = MEMORY + SELECT a.Id_Article, IF(vPrefixLen > 0, SUBSTRING(a.Article, vPrefixLen), a.Article) Article, + t.packing, CEIL(s.amount / t.packing) etiquetas, t.Id_Cubo, IF(c.z > 0, c.z, 0) z, c.x, c.y, a.Nicho + FROM vn2008.Articles a + JOIN filter f ON f.item_id = a.Id_Article + JOIN current_stock s ON s.item_id = a.Id_Article + LEFT JOIN tmp t ON t.item_id = a.Id_Article + LEFT JOIN vn2008.Cubos c ON c.Id_Cubo = t.Id_Cubo + WHERE CEIL(s.amount / t.packing) > 0 + AND c.box; + + IF vUseIds + THEN + SELECT * FROM result + ORDER BY Id_Article; + ELSE + SELECT * FROM result + ORDER BY Article, packing; + END IF; + + DROP TEMPORARY TABLE + filter, + current_stock, + tmp, + result; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `itemListVisible` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `itemListVisible`( + vWh TINYINT + ,vDate DATE + ,vType VARCHAR(255) + ,vPrefix VARCHAR(255) +) +BEGIN + DECLARE vPrefixLen SMALLINT; + DECLARE vFilter VARCHAR(255) DEFAULT NULL; + DECLARE vDateInv DATE DEFAULT vn2008.date_inv(); + + SET vPrefixLen = LENGTH(vPrefix); + + IF vPrefix IS NOT NULL AND vPrefixLen > 0 + THEN + SET vFilter = CONCAT(vPrefix, '%'); + SET vPrefixLen = vPrefixLen + 1; + END IF; + + DROP TEMPORARY TABLE IF EXISTS filter; + CREATE TEMPORARY TABLE filter + (INDEX (item_id)) + ENGINE = MEMORY + SELECT a.Id_Article item_id + FROM vn2008.Articles a + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + WHERE t.Id_Tipo = vType + AND (vFilter IS NULL OR a.Article LIKE vFilter); + + DROP TEMPORARY TABLE IF EXISTS current_stock; + CREATE TEMPORARY TABLE current_stock + (INDEX (item_id)) + ENGINE = MEMORY + SELECT item_id, SUM(Cantidad) amount FROM + ( + SELECT Id_Article item_id, Cantidad + FROM vn2008.Compres c + JOIN vn2008.Entradas e USING(Id_Entrada) + JOIN vn2008.travel t ON t.id = e.travel_id + WHERE landing BETWEEN vDateInv AND vDate + AND warehouse_id = vWh + AND NOT Redada + UNION ALL + SELECT Id_Article, -Cantidad + FROM vn2008.Compres c + JOIN vn2008.Entradas e USING(Id_Entrada) + JOIN vn2008.travel t ON t.id = e.travel_id + WHERE shipment BETWEEN vDateInv AND CURDATE() + AND warehouse_id_out = vWh + AND NOT Redada + AND delivered + UNION ALL + SELECT m.Id_Article, -m.Cantidad + FROM vn2008.Movimientos m + JOIN vn2008.Tickets t USING(Id_Ticket) + JOIN vn.ticketState s ON s.ticket = t.Id_Ticket + WHERE t.Fecha BETWEEN vDateInv AND CURDATE() + AND t.warehouse_id = vWh + AND (t.Etiquetasemitidas OR s.alertLevel = 3) + ) t + GROUP BY item_id + HAVING amount > 0; + + DROP TEMPORARY TABLE IF EXISTS tmp; + CREATE TEMPORARY TABLE tmp + (INDEX (item_id)) + ENGINE = MEMORY + SELECT * FROM + ( + SELECT c.Id_Article item_id, c.Id_Compra id, c.Id_Cubo, c.packing + FROM vn2008.Compres c + JOIN vn2008.Entradas e USING(Id_Entrada) + JOIN vn2008.travel t ON t.id = e.travel_id + WHERE t.landing BETWEEN vDateInv AND vDate + AND c.Novincular = FALSE + AND c.Tarifa2 >= 0 + AND Id_Cubo IS NOT NULL + ORDER BY t.warehouse_id = 1 DESC, t.landing DESC + ) t GROUP BY item_id; + + DROP TEMPORARY TABLE IF EXISTS result; + CREATE TEMPORARY TABLE result + ENGINE = MEMORY + SELECT a.Id_Article itemId, IF(vPrefixLen > 0, SUBSTRING(a.Article, vPrefixLen), a.Article) item, + Medida size, CEIL(s.amount) amount, '' location + FROM vn2008.Articles a + JOIN filter f ON f.item_id = a.Id_Article + JOIN current_stock s ON s.item_id = a.Id_Article + LEFT JOIN tmp t ON t.item_id = a.Id_Article + LEFT JOIN vn2008.Cubos c ON c.Id_Cubo = t.Id_Cubo + WHERE s.amount > 0; + + SELECT * FROM result + ORDER BY item, size; + + DROP TEMPORARY TABLE + filter, + current_stock, + tmp, + result; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_available` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_available`() +BEGIN +/** + * Genera una tabla con los ids de los articulos disponibles. + * + * @table tmp.item_available + **/ + DECLARE v_delivery DATE; + DECLARE v_address INT; + DECLARE v_agency INT; + + SELECT date_send, address_id, agency_id + INTO v_delivery, v_address, v_agency + FROM basket; + + CALL vn2008.bionic_available_ (v_delivery, v_address, v_agency); + + DROP TEMPORARY TABLE IF EXISTS tmp.item_available; + CREATE TEMPORARY TABLE tmp.item_available + (INDEX (item_id)) + ENGINE = MEMORY + SELECT c.item_id + FROM `cache`.available c + JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id + WHERE c.available > 0 + GROUP BY c.item_id; + + DROP TEMPORARY TABLE vn2008.t_bionic_available; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `item_list` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `item_list`(v_warehouse SMALLINT, v_shipping DATE, v_realm INT, v_rate TINYINT) +BEGIN + DECLARE v_calc INT; + + CALL cache.available_refresh (v_calc, TRUE, v_warehouse, v_shipping); + CALL vn2008.item_last_buy_ (v_warehouse, v_shipping); + + SELECT a.Id_Article, a.Article, a.Categoria, a.Medida, a.Tallos, + c.available, a.Color, o.Abreviatura, t.Tipo, a.tipo_id, a.Foto, + CASE b.caja + WHEN 0 THEN 1 + WHEN 2 THEN b.packing + ELSE b.grouping + END AS grouping, + CASE v_rate + WHEN 1 THEN b.Tarifa1 + WHEN 2 THEN b.Tarifa2 + WHEN 3 THEN b.Tarifa3 + ELSE NULL + END AS price + FROM cache.available c + JOIN vn2008.Articles a ON a.Id_Article = c.item_id + JOIN vn2008.t_item_last_buy l ON l.item_id = c.item_id + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + JOIN vn2008.reinos r ON t.reino_id = r.id + JOIN vn2008.Compres b ON b.Id_Compra = l.buy_id + LEFT JOIN vn2008.Origen o ON a.id_origen = o.id + WHERE c.calc_id = v_calc + AND c.available > 0 + AND c.item_id != 90 + AND r.display + AND (v_realm IS NULL OR v_realm = r.id) + ORDER BY a.tipo_id, Article, Medida; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `orderCheckDate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `orderCheckDate`(vDate DATE) +BEGIN + DECLARE vMaxTime TIME; + DECLARE vFestive BOOLEAN; + DECLARE vDenyDay DATE; + DECLARE vDenySunday BOOLEAN; + + SELECT COUNT(*) INTO vFestive + FROM order_check_festive + WHERE TIMESTAMPADD(YEAR, -YEAR(vDate), vDate) = date + AND accept_orders = FALSE; + + IF vDate < CURDATE() + THEN + CALL util.throw ('ORDER_DATE_PAST'); + ELSEIF vFestive > 0 + THEN + CALL util.throw ('ORDER_DATE_HOLIDAY'); + ELSE + SELECT c.deny_sunday, c.deny_day, IFNULL(w.max_time, c.max_time) + INTO vDenySunday, vDenyDay, vMaxTime + FROM order_check c + LEFT JOIN order_check_wday w + ON w.weekday = WEEKDAY(CURDATE()); + + IF vDate = CURDATE() AND CURTIME() > vMaxTime + THEN + CALL util.throw ('ORDER_DATE_LAST'); + ELSEIF WEEKDAY(vDate) = 6 AND vDenySunday + THEN + CALL util.throw ('ORDER_DATE_SUNDAY'); + ELSEIF vDate = vDenyDay + THEN + CALL util.throw ('ORDER_DATE_SATURATED'); + END IF; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `orderNew` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `orderNew`() +BEGIN + DECLARE vCount INT; + DECLARE vDeliveryMethod INT; + DECLARE vAgency INT; + DECLARE vAddress INT; + DECLARE vWarehouse INT DEFAULT NULL; + + SELECT COUNT(*) INTO vCount FROM order_view; + + IF vCount >= 3 THEN + CALL util.throw ('ORDER_MAX_EXCEEDED'); + END IF; + + SELECT co.Id_Consigna, co.Id_Agencia, a.Vista + INTO vAddress, vAgency, vDeliveryMethod + FROM vn2008.Clientes c + LEFT JOIN vn2008.Consignatarios co ON co.Id_Consigna = c.default_address + JOIN vn2008.Agencias a ON a.Id_Agencia = co.Id_Agencia + WHERE c.Id_cliente = user_id(); + + INSERT INTO `order` + SET + date_send = CURDATE(), + customer_id = user_id(), + delivery_method_id = IFNULL(vDeliveryMethod, DEFAULT(delivery_method_id)), + agency_id = IFNULL(vAgency, DEFAULT(agency_id)), + address_id = IFNULL(vAddress, DEFAULT(address_id)), + wh_id = IFNULL(vWarehouse, DEFAULT(wh_id)), + type_id = IFNULL(vAgency, DEFAULT(type_id)), + is_bionic = FALSE; + + SELECT LAST_INSERT_ID() order_id; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `order_check_config` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `order_check_config`(v_order INT) +proc: +BEGIN +/** + * Comprueba que la configuración del pedido es correcta. + * + * @param v_order Identificador del pedido + **/ + DECLARE v_delivery_method VARCHAR(45); + DECLARE v_delivery DATE; + DECLARE v_agency INT; + DECLARE v_address INT; + DECLARE v_ok BOOLEAN; + + SELECT v.code, o.date_send, o.agency_id, o.address_id + INTO v_delivery_method, v_delivery, v_agency, v_address + FROM `order` o + JOIN vn2008.Vistas v ON v.vista_id = o.delivery_method_id + WHERE o.id = v_order; + + -- Comprueba que se ha seleccionado una dirección + + IF v_delivery_method IN ('AGENCY', 'DELIVERY') + && v_address IS NULL + THEN + CALL util.throw ('ORDER_EMPTY_ADDRESS'); + END IF; + + -- Comprueba que la agencia es correcta + + CALL agency_list_from_date (v_delivery, v_address); + + SELECT COUNT(*) > 0 INTO v_ok + FROM t_agency + WHERE agency_id = v_agency; + + DROP TEMPORARY TABLE t_agency; + + IF !v_ok THEN + CALL util.throw ('ORDER_INVALID_AGENCY'); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `order_confirm_bionic` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `order_confirm_bionic`(v_order INT) +BEGIN +/** + * Confirma un pedido, creando cada uno de sus tickets en la fecha + * y almacén correspondientes. + * + * @param v_order Identificador del pedido + **/ + DECLARE v_ok BOOLEAN; + DECLARE v_done BOOLEAN DEFAULT FALSE; + DECLARE v_wh INT; + DECLARE v_shipment DATETIME; + DECLARE v_ticket INT; + DECLARE v_note VARCHAR(255); + DECLARE i_article INT; + DECLARE v_concepte VARCHAR(30); + DECLARE i_amount INT; + DECLARE d_price DOUBLE; + DECLARE i_movimiento INT; + DECLARE i_rate INT; + DECLARE i_worker INT; + DECLARE i_order_row INT; + DECLARE d_delivery DATE; + DECLARE i_address INT; + DECLARE i_agency INT; + DECLARE b_confirmed BOOLEAN; + DECLARE TICKET_FREE INT DEFAULT 2; + DECLARE SYSTEM_WORKER INT DEFAULT 20; + + DECLARE cur_tick CURSOR FOR + SELECT t.Fecha_envio, r.warehouse_id + FROM `order` o + JOIN order_row r ON r.order_id = o.id + LEFT JOIN vn2008.travel_tree t ON t.warehouse_id = r.warehouse_id + WHERE o.id = v_order AND r.amount != 0 + GROUP BY warehouse_id; + + DECLARE cur_mov CURSOR FOR + SELECT r.id, r.item_id, a.Article, r.amount, r.price, r.rate + FROM order_row r + JOIN vn2008.Articles a ON a.Id_Article = r.item_id + WHERE r.amount != 0 + AND r.warehouse_id = v_wh + AND r.order_id = v_order + ORDER BY r.rate DESC; + + DECLARE CONTINUE HANDLER FOR NOT FOUND + SET v_done = TRUE; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + -- Carga los datos del pedido + + SELECT o.date_send, o.address_id, o.note, a.agency_id, o.confirmed + INTO d_delivery, i_address, v_note, i_agency, b_confirmed + FROM `order` o + JOIN vn2008.Agencias a ON a.Id_Agencia = o.agency_id + WHERE id = v_order; + + -- Comprueba que el pedido no está confirmado + + IF b_confirmed THEN + CALL util.throw ('ORDER_ALREADY_CONFIRMED'); + END IF; + + -- Comprueba que el pedido no está vacío + + SELECT COUNT(*) > 0 INTO v_ok + FROM order_row WHERE order_id = v_order AND amount > 0; + + IF !v_ok THEN + CALL util.throw ('ORDER_EMPTY'); + END IF; + + -- Carga las fechas de salida de cada almacén + + CALL vn2008.travel_tree (d_delivery, i_address, i_agency); + + -- Trabajador que realiza la acción + + SELECT Id_Trabajador INTO i_worker + FROM vn2008.Trabajadores + WHERE user_id = account.userGetId(); + + IF i_worker IS NULL THEN + SELECT employee_id INTO i_worker FROM order_config; + END IF; + + -- Crea los tickets del pedido + + START TRANSACTION; + + OPEN cur_tick; + + tick_loop: + LOOP + SET v_ticket = NULL; + SET v_done = FALSE; + FETCH cur_tick INTO v_shipment, v_wh; + + IF v_done THEN + LEAVE tick_loop; + END IF; + + -- Busca un ticket existente que coincida con los parametros del nuevo pedido + + SELECT Id_Ticket INTO v_ticket + FROM vn2008.Tickets t + LEFT JOIN vn.ticketState tls on tls.ticket = t.Id_Ticket + JOIN `order` o + ON o.address_id = t.Id_Consigna + AND v_wh = t.warehouse_id + AND o.agency_id = t.Id_Agencia + AND t.landing = o.date_send + AND v_shipment = DATE(t.Fecha) + WHERE o.id = v_order + AND t.Factura IS NULL + AND IFNULL(tls.alertLevel,0) = 0 + /* AND t.PedidoImpreso = 0 + AND t.Etiquetasemitidas = 0 + AND vn2008.is_bionic(t.Id_Ticket) */ + AND t.Id_Cliente <> 1118 + LIMIT 1; + + -- Crea el ticket en el caso de no existir uno adecuado + + IF v_ticket IS NULL + THEN + INSERT INTO vn2008.Tickets ( + Id_Cliente, Fecha, Alias, Id_Agencia, Id_Consigna, + Id_Trabajador, blocked, warehouse_id, Localizacion, landing + ) + SELECT cs.Id_Cliente, IFNULL(v_shipment,CURDATE()), cs.Consignatario, o.agency_id, o.address_id, + i_worker, FALSE, v_wh, IF(v_shipment,'BIONIC','ERROR FECHA ENVIO'), o.date_send + FROM `order` o + JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = o.address_id + WHERE o.id = v_order; + + SET v_ticket = LAST_INSERT_ID(); + ELSE + -- UPDATE vn2008.Tickets SET Localizacion = CONCAT(Localizacion,'B+') WHERE Id_Ticket = v_ticket; + INSERT INTO vncontrol.inter(Id_Ticket, Id_Trabajador, state_id) + VALUES(v_ticket, SYSTEM_WORKER, TICKET_FREE); + + END IF; + + INSERT IGNORE INTO vn2008.order_Tickets (order_id, Id_Ticket) + VALUES (v_order, v_ticket); + + -- Añade las notas + + IF v_note IS NOT NULL && v_note != '' + THEN + INSERT INTO vn2008.ticket_observation (Id_Ticket, observation_type_id, text) + VALUES (v_ticket, 4/*comercial*/ , v_note) + ON DUPLICATE KEY UPDATE text = CONCAT(VALUES(text),'. ', text); + END IF; + + -- Añade los movimientos y sus componentes + + OPEN cur_mov; + + mov_loop: + LOOP + SET v_done = FALSE; + FETCH cur_mov INTO i_order_row, i_article, v_concepte, i_amount, d_price, i_rate; + + IF v_done THEN + LEAVE mov_loop; + END IF; + + INSERT INTO vn2008.Movimientos + SET + Id_Article = i_article, + Id_Ticket = v_ticket, + Concepte = v_concepte, + Cantidad = i_amount, + Preu = d_price, + CostFixat = 0, + PrecioFijado = TRUE; + + SET i_movimiento = LAST_INSERT_ID(); + + INSERT INTO vn2008.Movimientos_componentes (Id_Movimiento, Id_Componente, Valor) + SELECT i_movimiento, cm.component_id, cm.price + FROM order_component cm + JOIN bi.tarifa_componentes tc ON tc.Id_Componente = cm.component_id + WHERE cm.order_row_id = i_order_row + GROUP BY i_movimiento, cm.component_id; + + UPDATE order_row SET Id_Movimiento = i_movimiento + WHERE id = i_order_row; + + END LOOP; + + CLOSE cur_mov; + -- Fija el Costfixat + + UPDATE vn2008.Movimientos m + JOIN (SELECT SUM(mc.Valor) sum_valor,mc.Id_Movimiento + FROM vn2008.Movimientos_componentes mc + join bi.tarifa_componentes tc using(Id_Componente) + join bi.tarifa_componentes_series tcs on tcs.tarifa_componentes_series_id = tc.tarifa_componentes_series_id AND tcs.base + JOIN vn2008.Movimientos m ON m.Id_Movimiento = mc.Id_Movimiento + where m.Id_Ticket = v_ticket + GROUP BY mc.Id_Movimiento) mc ON mc.Id_Movimiento = m.Id_Movimiento + SET m.CostFixat = sum_valor; + END LOOP; + + CLOSE cur_tick; + + DELETE FROM order_basket WHERE order_id = v_order; + UPDATE `order` SET confirmed = TRUE, confirm_date = NOW() + WHERE id = v_order; + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `order_get_vat` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `order_get_vat`(v_order INT) +BEGIN +/** + * Calcula el IVA, y el recargo de equivalencia de un pedido + * desglosados por tipos. + * + * @param v_order El identificador del pedido + * + * @table t_order_vat Tabla con las bases imponibles, su + * IVA y su recargo de equivalencia. + **/ + DECLARE v_billing_date DATE DEFAULT CURDATE(); + + DECLARE clean CONDITION FOR SQLSTATE 'HY000'; + DECLARE CONTINUE HANDLER FOR clean + BEGIN + DROP TEMPORARY TABLE IF EXISTS t_vat_group; + DROP TEMPORARY TABLE IF EXISTS t_vat_tax; + END; + + SIGNAL clean; + + -- Calcula el tipo de IVA para cada grupo en cada país. + + CREATE TEMPORARY TABLE t_vat_group + (INDEX (country_id, vat_group_id)) + ENGINE = MEMORY + SELECT * FROM ( + SELECT Id_Pais country_id, iva_group_id vat_group_id, c.tipo rate + FROM vn2008.iva_group_codigo g + JOIN vn2008.iva_codigo c ON g.iva_codigo_id = c.id + JOIN vn2008.iva_tipo t ON t.id = c.iva_tipo_id + WHERE date <= v_billing_date + ORDER BY date DESC + ) t + GROUP BY country_id, vat_group_id; + + -- Calcula el impuesto para cada tipo de IVA en cada país. + + CREATE TEMPORARY TABLE t_vat_tax + (INDEX (country_id, rate)) + ENGINE = MEMORY + SELECT * FROM ( + SELECT Id_Pais country_id, tipo rate, + CAST(iva / 100 AS DECIMAL(12, 2)) vat, + CAST(recargo / 100 AS DECIMAL(12, 2)) surcharge + FROM vn2008.iva_codigo + JOIN vn2008.iva_tipo t ON t.id = iva_tipo_id + WHERE Fecha <= v_billing_date AND iva + ORDER BY fecha DESC, recargo DESC + ) t + GROUP BY country_id, rate; + + -- Calcula el IVA y el recargo desglosado. + + DROP TEMPORARY TABLE IF EXISTS t_order_vat; + CREATE TEMPORARY TABLE t_order_vat + (INDEX (order_id)) + ENGINE = MEMORY + SELECT order_id, t.rate, t.tax_base, + IF(t.has_vat, t.tax_base * x.vat, 0) vat, + IF(t.has_surcharge, t.tax_base * x.surcharge, 0) surcharge + FROM ( + SELECT o.id order_id, g.country_id, g.rate + ,SUM(m.amount * m.price) AS tax_base + ,NOT(c.VIES AND p.pais_id <> c.Id_Pais) AS has_vat + ,c.RE != FALSE AS has_surcharge + FROM `order` o + JOIN order_row m ON m.order_id = o.id + JOIN vn2008.Articles a ON a.Id_Article = m.item_id + JOIN vn2008.Clientes c ON c.Id_Cliente = o.customer_id + JOIN vn2008.Proveedores p ON p.Id_Proveedor = o.company_id + JOIN t_vat_group g ON g.country_id = p.pais_id AND g.vat_group_id = a.iva_group_id + WHERE o.id = v_order + GROUP BY order_id, rate + ) t + JOIN t_vat_tax x ON x.country_id = t.country_id AND x.rate = t.rate; + + SIGNAL clean; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `order_update` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `order_update`(v_order INT) +BEGIN + DECLARE v_date DATE; + DECLARE v_address INT; + DECLARE v_agency INT; + DECLARE v_nrows INT; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + START TRANSACTION; + + SELECT COUNT(*) INTO v_nrows + FROM order_row WHERE order_id = v_order; + + IF v_nrows > 0 + THEN + SELECT date_send, address_id, agency_id + INTO v_date, v_address, v_agency + FROM `order` + WHERE id = v_order; + + CALL vn2008.bionic_from_order (v_date, v_address, v_agency, v_order); + + DELETE c + FROM order_row r + JOIN order_component c ON c.order_row_id = r.id + WHERE r.order_id = v_order; + + UPDATE order_row r + LEFT JOIN tmp.bionic_price l + ON l.warehouse_id = r.warehouse_id + AND l.item_id = r.item_id + AND l.rate = r.rate + LEFT JOIN tmp.travel_tree t + ON t.warehouse_id = r.warehouse_id + SET + r.price = l.price, + r.amount = IF(l.item_id IS NOT NULL, r.amount + IF(@m := MOD(r.amount, l.grouping), l.grouping - @m, 0), 0), + r.shipment = t.Fecha_envio + WHERE r.order_id = v_order; + + INSERT INTO order_component (order_row_id, component_id, price) + SELECT r.id, c.component_id, c.cost + FROM order_row r + JOIN tmp.bionic_component c + ON c.warehouse_id = r.warehouse_id + AND c.item_id = r.item_id + JOIN bi.tarifa_componentes t + ON t.Id_Componente = c.component_id + AND (t.tarifa_class IS NULL OR t.tarifa_class = r.rate) + WHERE r.order_id = v_order; + END IF; + + UPDATE `order` SET date_make = NOW() + WHERE id = v_order; + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `sql_query` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `sql_query`(IN v_sql TEXT) +BEGIN + SET @v_sql = v_sql; + + PREPARE stmt FROM @v_sql; + EXECUTE stmt; + DEALLOCATE PREPARE stmt; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `surveyVote` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `surveyVote`(vAnswer INT) +BEGIN + DECLARE vSurvey INT; + DECLARE vCount TINYINT; + DECLARE EXIT HANDLER FOR 1062 + CALL util.throw ('SURVEY_MAX_ONE_VOTE'); + + SELECT survey_id INTO vSurvey + FROM survey_answer WHERE id = vAnswer; + + INSERT INTO survey_vote + VALUES (vSurvey, account.userGetId()); + + UPDATE survey_answer SET votes = votes + 1 + WHERE id = vAnswer; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketLog` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketLog`(vticket INT) +BEGIN + INSERT INTO vn2008.Tickets_dits + (idaccion_dits, Id_Trabajador, Id_Ticket) + SELECT 146, 4, id + FROM ticket_view WHERE id = vTicket; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_list` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_list`() +BEGIN +/** + * Devuelve los tickets del cliente del último mes, calculando + * el total de cada ticket. + * + * @select Listado de tickets + **/ + DROP TEMPORARY TABLE IF EXISTS vn2008.ticket_tmp; + CREATE TEMPORARY TABLE vn2008.ticket_tmp + (KEY (ticket_id)) + ENGINE = MEMORY + SELECT t.id ticket_id FROM ticket_view t + WHERE date > TIMESTAMP(DATE_FORMAT(TIMESTAMPADD(DAY, -25, CURDATE()), '%Y-%m-01')); + + CALL vn2008.ticket_total (); + + DROP TEMPORARY TABLE IF EXISTS t_movement_fixed; + CREATE TEMPORARY TABLE t_movement_fixed + (KEY (ticket_id)) + ENGINE = MEMORY + SELECT ticket_id, BIT_AND(fixed != FALSE) all_fixed + FROM ticket_row_view + JOIN vn2008.ticket_tmp USING(ticket_id) + GROUP BY ticket_id; + + SELECT i.ticket_id, IFNULL(v.delivery, v.`date`) `date`, city, consignee, type, company_id, + IF(all_fixed, t.total, NULL) total, + IF(v.date >= CURDATE() AND v.invoice IS NULL AND all_fixed + ,t.total + ,NULL + ) pending + FROM vn2008.ticket_tmp i + JOIN ticket_view v ON i.ticket_id = v.id + JOIN address_view c ON v.address_id = c.id + JOIN vn2008.ticket_total t USING(ticket_id) + LEFT JOIN t_movement_fixed m USING(ticket_id) + ORDER BY IFNULL(v.delivery, v.`date`) DESC, i.ticket_id DESC; + + DROP TEMPORARY TABLE vn2008.ticket_tmp; + DROP TEMPORARY TABLE vn2008.ticket_total; + DROP TEMPORARY TABLE t_movement_fixed; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `transactionConfirm` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `transactionConfirm`( + vAmount INT + ,vOrder INT + ,vMerchant INT + ,vCurrency INT + ,vResponse INT + ,vErrorCode VARCHAR(10) +) +BEGIN + DECLARE vReceipt INT; + DECLARE vStatus VARCHAR(10); + DECLARE vCustomer INT; + DECLARE vBank INT; + DECLARE vCompany INT; + DECLARE vEmployee INT; + DECLARE vIsDuplicated BOOLEAN; + DECLARE vDate DATE; + DECLARE vConcept VARCHAR(25) DEFAULT 'Cobro Web'; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + START TRANSACTION; + + SELECT COUNT(*) > 0 INTO vIsDuplicated + FROM tpv_transaction + WHERE id = vOrder AND response IS NOT NULL + FOR UPDATE; + + IF vIsDuplicated + THEN + CALL util.throw ('TRANSACTION_DUPLICATED'); + END IF; + + IF vResponse BETWEEN 0 AND 99 + THEN + SELECT + t.customer_id + ,m.bank_id + ,m.company_id + ,c.employee_id + ,DATE(t.date_time) + INTO + vCustomer + ,vBank + ,vCompany + ,vEmployee + ,vDate + FROM tpv_merchant m + JOIN tpv_config c ON c.id = 1 + LEFT JOIN tpv_transaction t ON t.id = vOrder + WHERE m.id = vMerchant; + + INSERT INTO vn2008.Recibos + SET + Entregado = vAmount / 100 + ,Fechacobro = vDate + ,Id_Trabajador = vEmployee + ,Id_Banco = vBank + ,Id_Cliente = vCustomer + ,empresa_id = vCompany + ,Id_Factura = vConcept + ,conciliado = TRUE; + + SET vReceipt = LAST_INSERT_ID(); + SET vStatus = 'ok'; + + -- Código redundante + + DO vn2008.till_entry + ( + vCustomer + ,vBank + ,vAmount / 100 + ,vConcept + ,vDate + ,'A' + ,TRUE + ,vCustomer + ,vCompany + ,vEmployee + ); + ELSE + SET vReceipt = NULL; + SET vStatus = 'ko'; + END IF; + + UPDATE tpv_transaction + SET + merchant_id = vMerchant + ,receipt_id = vReceipt + ,amount = vAmount + ,response = vResponse + ,error_code = vErrorCode + ,status = vStatus + WHERE id = vOrder; + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `transactionConfirmAll` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `transactionConfirmAll`(vDate DATE) +BEGIN + DECLARE vOrder INT; + DECLARE vDone BOOLEAN DEFAULT FALSE; + DECLARE vDateIni DATETIME DEFAULT TIMESTAMP(vDate, '00:00:00'); + DECLARE vDateEnd DATETIME DEFAULT TIMESTAMP(vDate, '23:59:59'); + + DECLARE transactions CURSOR FOR + SELECT id + FROM tpv_transaction + WHERE date_time BETWEEN vDateIni AND vDateEnd + AND status = 'ok' + AND response IS NULL; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + OPEN transactions; + + l: LOOP + FETCH transactions INTO vOrder; + + IF vDone THEN + LEAVE l; + END IF; + + CALL transactionConfirmById (vOrder); + END LOOP l; + + CLOSE transactions; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `transactionConfirmById` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `transactionConfirmById`( + vOrder INT +) +BEGIN + DECLARE vAmount INT; + DECLARE vMerchant INT; + DECLARE vCurrency INT; + + SELECT amount, merchant_id, currency + INTO vAmount, vMerchant, vCurrency + FROM tpv_transaction t + JOIN tpv_merchant m ON t.merchant_id = m.id + JOIN tpv_config c + WHERE t.id = vOrder; + + CALL transactionConfirm ( + vAmount + ,vOrder + ,vMerchant + ,vCurrency + ,0 + ,NULL + ); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `transactionEnd` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `transactionEnd`(vTransaction INT, vStatus VARCHAR(12)) +BEGIN +/** + * Finaliza una transaccción estableciendo su estado a 'ok' o + * 'ko' en función de si esta se ha realizado correctamente. + * Este procedimiento debe ser llamado directamente por el cliente + * nada mas finalizar la transacción y solo tiene validez hasta que + * llega la notificacion definitiva desde el banco. + * + * @param vTransaction El identificador de la transacción + * @param vStatus El estado, 'ok' o 'ko' + **/ + IF vStatus IN ('ok', 'ko') + THEN + UPDATE tpv_transaction_view SET status = vStatus + WHERE id = vTransaction AND response IS NULL; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `transactionStart` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `transactionStart`(vAmount INT, vCompany INT) +BEGIN +/** + * Inicia una nueva transacción con el TPV virtual, generando + * un identificador de transacción y devolviendo con un SELECT + * los parámetros que deben enviarse a la URL del servicio web + * del banco. + * + * @param vAmount Cantidad a pagar en céntimos + * @param vCompany El identificador de la empresa + * + * @select Los parámetros que deben pasarse al banco + **/ + + DECLARE vTransaction CHAR(12); + DECLARE vMerchant INT; + DECLARE vUrl VARCHAR(255); + DECLARE vKey VARCHAR(50); + DECLARE vTestMode BOOLEAN; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + START TRANSACTION; + + IF vCompany IS NULL + THEN + SELECT company_id INTO vCompany + FROM tpv_merchant_enable LIMIT 1; + END IF; + + SELECT merchant_id INTO vMerchant + FROM tpv_merchant_enable WHERE company_id = vCompany; + + SELECT test_mode INTO vTestMode + FROM tpv_config; + + IF NOT vTestMode + THEN + SELECT c.url, m.secret_key INTO vUrl, vKey + FROM tpv_merchant m + JOIN tpv_config c + WHERE m.id = vMerchant; + ELSE + SELECT test_url, test_key INTO vUrl, vKey + FROM tpv_config; + END IF; + + INSERT INTO tpv_transaction_view + SET + merchant_id = vMerchant + ,customer_id = account.userGetId() + ,amount = vAmount; + + SET vTransaction = LAST_INSERT_ID(); + + SELECT + vAmount amount + ,vTransaction transactionId + ,vMerchant merchant + ,currency + ,transaction_type transactionType + ,terminal + ,merchant_url merchantUrl + ,vUrl url + ,vKey secretKey + FROM tpv_config; + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `transactionUndo` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `transactionUndo`( + vOrder INT +) +BEGIN + DECLARE vCustomer INT; + DECLARE vAmount DOUBLE; + DECLARE vReceipt INT; + DECLARE vDate DATE; + DECLARE vBank INT; + DECLARE vAccount VARCHAR(12); + DECLARE vSubaccount VARCHAR(12); + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + START TRANSACTION; + + SELECT + t.customer_id + ,t.amount / 100 + ,t.receipt_id + ,DATE(t.date_time) + ,m.bank_id + INTO + vCustomer + ,vAmount + ,vReceipt + ,vDate + ,vBank + FROM tpv_transaction t + JOIN tpv_merchant m ON m.id = t.merchant_id + JOIN tpv_config c + WHERE t.id = vOrder + FOR UPDATE; + + -- Elimina el recibo + + DELETE FROM vn2008.Recibos + WHERE Id = vReceipt LIMIT 1; + + -- Elimina la entrada de cajas + + DELETE FROM vn2008.Cajas + WHERE Id_Banco = vBank + AND DATE(CajaFecha) = vDate + AND Entrada = vAmount + LIMIT 1; + + -- Elimina los asientos contables + + SELECT Cuenta INTO vSubaccount + FROM vn2008.Clientes WHERE Id_Cliente = vCustomer; + + SELECT Cuenta INTO vAccount + FROM vn2008.Bancos WHERE Id_Banco = vBank; + + DELETE FROM vn2008.XDiario + WHERE SUBCTA = vSubaccount + AND CONTRA = vAccount + AND DATE(FECHA) = vDate + AND EUROHABER = vAmount + LIMIT 1; + + DELETE FROM vn2008.XDiario + WHERE CONTRA = vSubaccount + AND SUBCTA = vAccount + AND DATE(FECHA) = vDate + AND EURODEBE = vAmount + LIMIT 1; + + -- Actualiza la transaccion + + UPDATE tpv_transaction + SET response = NULL, status = 'started' + WHERE id = vOrder; + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `type_list` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = '' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `type_list`(v_realm INT) +BEGIN +/** + * Devuelve los subtipos disponibles para el reino pasado + * utilizando la fecha, dirección y agencia de la cesta de + * la compra. + * + * @param v_realm Id del reino + **/ + DECLARE v_date DATE; + DECLARE v_address INT; + DECLARE v_agency INT; + + SELECT date_send, address_id, agency_id + INTO v_date, v_address, v_agency + FROM basket; + + CALL vn2008.bionic_available_types_ (v_date, v_address, v_agency); + + SELECT t.tipo_id, t.Tipo + FROM vn2008.Tipos t + JOIN vn2008.t_bionic_available_types bt ON bt.tipo_id = t.tipo_id + WHERE t.reino_id = v_realm + ORDER BY t.Orden DESC, t.Tipo; + + DROP TEMPORARY TABLE vn2008.t_bionic_available_types; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `visitRegister` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `visitRegister`( + vVisit INT + ,vPlatform VARCHAR(30) + ,vBrowser VARCHAR(30) + ,vVersion VARCHAR(15) + ,vJavascript TINYINT + ,vCookies TINYINT + ,vAgent VARCHAR(255) + ,vIp INT + ,vReferer VARCHAR(255) +) +BEGIN + DECLARE vFirstVisit TINYINT DEFAULT FALSE; + DECLARE vFirstAgent TINYINT DEFAULT FALSE; + DECLARE vAgentId INT DEFAULT NULL; + DECLARE vAccessId INT DEFAULT NULL; + + -- Registers the visit + + IF vVisit IS NULL || (SELECT COUNT(*) FROM visit WHERE id = vVisit) = 0 + THEN + INSERT INTO visit SET id = DEFAULT; + SET vVisit = LAST_INSERT_ID(); + SET vFirstVisit = TRUE; + END IF; + + SELECT id INTO vAgentId FROM visitAgent + WHERE visit = vVisit + AND (agent = vAgent OR (vAgent IS NULL AND agent IS NULL)) + LIMIT 1; + + -- Registers the user agent + + IF vAgentId IS NULL + THEN + INSERT INTO visitAgent SET + visit = vVisit + ,platform = vPlatform + ,browser = vBrowser + ,version = vVersion + ,javascript = vJavascript + ,cookies = vCookies + ,agent = vAgent; + + SET vAgentId = LAST_INSERT_ID(); + SET vFirstAgent = TRUE; + END IF; + + IF vFirstVisit + THEN + UPDATE visit SET firstAgent = vAgentId + WHERE id = vVisit; + END IF; + + -- Registers the user access + + INSERT INTO visitAccess SET + agent = vAgentId + ,ip = vIp + ,referer = vReferer; + + SET vAccessId = LAST_INSERT_ID(); + + IF vFirstAgent + THEN + UPDATE visitAgent SET firstAccess = vAccessId + WHERE id = vAgentId; + END IF; + + -- Returns the visit info + + SELECT vVisit visit, vAccessId access; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `visitUserNew` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `visitUserNew`( + vAccess INT + ,vSsid VARCHAR(64) +) +BEGIN + DECLARE vUserVisit INT; + + INSERT INTO visitUser SET + access = vAccess, + user = account.userGetId(); + + SET vUserVisit = LAST_INSERT_ID(); + + UPDATE userSession SET userVisit = vUserVisit + WHERE ssid = vSsid; + + DELETE FROM userSession + WHERE lastUpdate < TIMESTAMPADD(HOUR, -1, NOW()); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; + +-- +-- Current Database: `vncontrol` +-- + +USE `vncontrol`; + +-- +-- Current Database: `edi` +-- + +USE `edi`; + +-- +-- Current Database: `vn2008` +-- + +USE `vn2008`; + +-- +-- Final view structure for view `V_edi_item_track` +-- + +/*!50001 DROP VIEW IF EXISTS `V_edi_item_track`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `V_edi_item_track` AS select `edi`.`item_track`.`item_id` AS `item_id`,`edi`.`item_track`.`s1` AS `s1`,`edi`.`item_track`.`s2` AS `s2`,`edi`.`item_track`.`s3` AS `s3`,`edi`.`item_track`.`s4` AS `s4`,`edi`.`item_track`.`s5` AS `s5`,`edi`.`item_track`.`s6` AS `s6`,`edi`.`item_track`.`kop` AS `kop`,`edi`.`item_track`.`pac` AS `pac`,`edi`.`item_track`.`cat` AS `cat`,`edi`.`item_track`.`ori` AS `ori`,`edi`.`item_track`.`pro` AS `pro`,`edi`.`item_track`.`sub` AS `sub`,`edi`.`item_track`.`package` AS `package` from `edi`.`item_track` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `VerEspionaje` +-- + +/*!50001 DROP VIEW IF EXISTS `VerEspionaje`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `VerEspionaje` AS select `Trabajadores`.`CodigoTrabajador` AS `CodigoTrabajador`,`Espionajes`.`Fecha` AS `Fecha`,`Espionajes`.`HoraEntrada` AS `HoraEntrada`,`Espionajes`.`HoraSalida` AS `HoraSalida`,`Espionajes`.`Id_Equipo` AS `Id_Equipo`,`Trabajadores`.`Id_Trabajador` AS `Id_Trabajador` from (`Espionajes` join `Trabajadores` on((`Espionajes`.`Id_Trabajador` = `Trabajadores`.`Id_Trabajador`))) order by `Trabajadores`.`CodigoTrabajador`,`Espionajes`.`Fecha` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `account_customer` +-- + +/*!50001 DROP VIEW IF EXISTS `account_customer`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `account_customer` AS select `e`.`description` AS `description`,`vn2008`.`cc_to_iban`(concat(`a`.`entity_id`,`a`.`office`,`a`.`DC`,`a`.`number`)) AS `iban`,`a`.`entity_id` AS `entity_id`,`a`.`office` AS `office`,`a`.`DC` AS `dc`,`a`.`number` AS `number` from ((`provider_account_customer` `c` join `Proveedores_account` `a` on((`a`.`Id_Proveedores_account` = `c`.`account_id`))) join `entity` `e` on((`a`.`entity_id` = `e`.`entity_id`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `awb_volume` +-- + +/*!50001 DROP VIEW IF EXISTS `awb_volume`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `awb_volume` AS select `ar`.`awb_id` AS `awb_id`,(((`c`.`Etiquetas` * `t`.`density`) * if((`cu`.`Volumen` > 0),`cu`.`Volumen`,((`cu`.`X` * `cu`.`Y`) * if((`cu`.`Z` = 0),(`a`.`Medida` + 10),`cu`.`Z`)))) / 167000) AS `volume` from (((((((`Compres` `c` join `Articles` `a` on((`c`.`Id_Article` = `a`.`Id_Article`))) join `Tipos` `t` on((`a`.`tipo_id` = `t`.`tipo_id`))) join `Cubos` `cu` on((`cu`.`Id_Cubo` = `c`.`Id_Cubo`))) join `Entradas` `e` on((`c`.`Id_Entrada` = `e`.`Id_Entrada`))) join `travel` `tr` on((`tr`.`id` = `e`.`travel_id`))) join `recibida_entrada` `re` on((`c`.`Id_Entrada` = `re`.`Id_Entrada`))) join `awb_recibida` `ar` on((`re`.`awb_recibida` = `ar`.`recibida_id`))) where (`tr`.`shipment` > makedate((year(curdate()) - 1),1)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `cdr` +-- + +/*!50001 DROP VIEW IF EXISTS `cdr`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `cdr` AS select `c`.`call_date` AS `calldate`,`c`.`clid` AS `clid`,`c`.`src` AS `src`,`c`.`dst` AS `dst`,`c`.`dcontext` AS `dcontext`,`c`.`channel` AS `channel`,`c`.`dst_channel` AS `dstchannel`,`c`.`last_app` AS `lastapp`,`c`.`last_data` AS `lastdata`,`c`.`duration` AS `duration`,`c`.`billsec` AS `billsec`,`c`.`disposition` AS `disposition`,`c`.`ama_flags` AS `amaflags`,`c`.`account_code` AS `accountcode`,`c`.`unique_id` AS `uniqueid`,`c`.`user_field` AS `userfield` from `pbx`.`cdr` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `clientMana` +-- + +/*!50001 DROP VIEW IF EXISTS `clientMana`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `clientMana` AS select `t`.`Id_Cliente` AS `Id_Cliente`,`mc`.`Valor` AS `ManaUnitario`,(`mc`.`Valor` * `m`.`Cantidad`) AS `ManaTotal`,`t`.`Id_Ticket` AS `Id_Ticket`,`m`.`Id_Article` AS `Id_Article`,`m`.`Concepte` AS `Concepte`,`m`.`Cantidad` AS `Cantidad`,`m`.`Preu` AS `Preu`,`t`.`Fecha` AS `Fecha`,`m`.`Id_Movimiento` AS `Id_Movimiento` from ((((`vn2008`.`Tickets` `t` join `vn2008`.`Movimientos` `m` on((`m`.`Id_Ticket` = `t`.`Id_Ticket`))) join `vn2008`.`Movimientos_componentes` `mc` on((`mc`.`Id_Movimiento` = `m`.`Id_Movimiento`))) join `vn2008`.`tarifa_componentes` `tc` on((`tc`.`Id_Componente` = `mc`.`Id_Componente`))) join `vn2008`.`tarifa_componentes_series` `tcs` on((`tc`.`tarifa_componentes_series_id` = `tcs`.`tarifa_componentes_series_id`))) where ((`t`.`Fecha` >= '2016-01-01') and (`tcs`.`Serie` = 'cartera_comercial') and (`mc`.`Valor` <> 0)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `edi_article` +-- + +/*!50001 DROP VIEW IF EXISTS `edi_article`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `edi_article` AS select `edi`.`item`.`id` AS `id`,`edi`.`item`.`product_name` AS `product_name`,`edi`.`item`.`name` AS `name`,`edi`.`item`.`plant_id` AS `plant_id`,`edi`.`item`.`group_id` AS `group_id`,`edi`.`item`.`entry_date` AS `entry_date`,`edi`.`item`.`expiry_date` AS `expiry_date`,`edi`.`item`.`change_date_time` AS `change_date_time` from `edi`.`item` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `edi_bucket` +-- + +/*!50001 DROP VIEW IF EXISTS `edi_bucket`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `edi_bucket` AS select (cast(`edi`.`bucket`.`bucket_id` as char charset utf8) collate utf8_general_ci) AS `bucket_id`,`edi`.`bucket`.`bucket_type_id` AS `bucket_type_id`,`edi`.`bucket`.`description` AS `description`,`edi`.`bucket`.`x_size` AS `x_size`,`edi`.`bucket`.`y_size` AS `y_size`,`edi`.`bucket`.`z_size` AS `z_size`,`edi`.`bucket`.`entry_date` AS `entry_date`,`edi`.`bucket`.`expiry_date` AS `expiry_date`,`edi`.`bucket`.`change_date_time` AS `change_date_time` from `edi`.`bucket` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `edi_bucket_type` +-- + +/*!50001 DROP VIEW IF EXISTS `edi_bucket_type`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `edi_bucket_type` AS select `edi`.`bucket_type`.`bucket_type_id` AS `bucket_type_id`,`edi`.`bucket_type`.`description` AS `description`,`edi`.`bucket_type`.`entry_date` AS `entry_date`,`edi`.`bucket_type`.`expiry_date` AS `expiry_date`,`edi`.`bucket_type`.`change_date_time` AS `change_date_time` from `edi`.`bucket_type` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `edi_feature` +-- + +/*!50001 DROP VIEW IF EXISTS `edi_feature`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `edi_feature` AS select `edi`.`feature`.`item_id` AS `item_id`,`edi`.`feature`.`feature_type_id` AS `feature_type_id`,`edi`.`feature`.`feature_value` AS `feature_value`,`edi`.`feature`.`entry_date` AS `entry_date`,`edi`.`feature`.`expiry_date` AS `expiry_date`,`edi`.`feature`.`change_date_time` AS `change_date_time` from `edi`.`feature` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `edi_genus` +-- + +/*!50001 DROP VIEW IF EXISTS `edi_genus`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `edi_genus` AS select `edi`.`genus`.`genus_id` AS `genus_id`,`edi`.`genus`.`latin_genus_name` AS `latin_genus_name`,`edi`.`genus`.`entry_date` AS `entry_date`,`edi`.`genus`.`expiry_date` AS `expiry_date`,`edi`.`genus`.`change_date_time` AS `change_date_time` from `edi`.`genus` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `edi_item_feature` +-- + +/*!50001 DROP VIEW IF EXISTS `edi_item_feature`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `edi_item_feature` AS select `edi`.`item_feature`.`item_id` AS `item_id`,`edi`.`item_feature`.`presentation_order` AS `presentation_order`,`edi`.`item_feature`.`feature` AS `feature`,`edi`.`item_feature`.`regulation_type` AS `regulation_type`,`edi`.`item_feature`.`entry_date` AS `entry_date`,`edi`.`item_feature`.`expiry_date` AS `expiry_date`,`edi`.`item_feature`.`change_date_time` AS `change_date_time` from `edi`.`item_feature` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `edi_plant` +-- + +/*!50001 DROP VIEW IF EXISTS `edi_plant`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `edi_plant` AS select `edi`.`plant`.`plant_id` AS `plant_id`,`edi`.`plant`.`genus_id` AS `genus_id`,`edi`.`plant`.`specie_id` AS `specie_id`,`edi`.`plant`.`entry_date` AS `entry_date`,`edi`.`plant`.`expiry_date` AS `expiry_date`,`edi`.`plant`.`change_date_time` AS `change_date_time` from `edi`.`plant` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `edi_specie` +-- + +/*!50001 DROP VIEW IF EXISTS `edi_specie`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `edi_specie` AS select `edi`.`specie`.`specie_id` AS `specie_id`,`edi`.`specie`.`genus_id` AS `genus_id`,`edi`.`specie`.`latin_species_name` AS `latin_species_name`,`edi`.`specie`.`entry_date` AS `entry_date`,`edi`.`specie`.`expiry_date` AS `expiry_date`,`edi`.`specie`.`change_date_time` AS `change_date_time` from `edi`.`specie` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `edi_supplier` +-- + +/*!50001 DROP VIEW IF EXISTS `edi_supplier`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `edi_supplier` AS select `edi`.`supplier`.`supplier_id` AS `supplier_id`,`edi`.`supplier`.`company_name` AS `company_name` from `edi`.`supplier` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `edi_type` +-- + +/*!50001 DROP VIEW IF EXISTS `edi_type`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `edi_type` AS select `edi`.`type`.`type_id` AS `type_id`,`edi`.`type`.`type_group_id` AS `type_group_id`,`edi`.`type`.`description` AS `description`,`edi`.`type`.`entry_date` AS `entry_date`,`edi`.`type`.`expiry_date` AS `expiry_date`,`edi`.`type`.`change_date_time` AS `change_date_time` from `edi`.`type` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `edi_value` +-- + +/*!50001 DROP VIEW IF EXISTS `edi_value`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `edi_value` AS select `edi`.`value`.`type_id` AS `type_id`,`edi`.`value`.`type_value` AS `type_value`,`edi`.`value`.`type_description` AS `type_description`,`edi`.`value`.`entry_date` AS `entry_date`,`edi`.`value`.`expiry_date` AS `expiry_date`,`edi`.`value`.`change_date_time` AS `change_date_time` from `edi`.`value` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `itemTagArranged` +-- + +/*!50001 DROP VIEW IF EXISTS `itemTagArranged`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemTagArranged` AS select `i`.`itemFk` AS `itemFk`,`i`.`tag1` AS `tag1`,`i`.`val1` AS `val1`,`i`.`tag2` AS `tag2`,`i`.`val2` AS `val2`,`i`.`tag3` AS `tag3`,`i`.`val3` AS `val3`,`i`.`tag4` AS `tag4`,`i`.`val4` AS `val4`,`i`.`tag5` AS `tag5`,`i`.`val5` AS `val5`,`i`.`tag6` AS `tag6`,`i`.`val6` AS `val6`,`i`.`description` AS `description` from `vn`.`itemTagArranged` `i` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `item_entry_in` +-- + +/*!50001 DROP VIEW IF EXISTS `item_entry_in`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `item_entry_in` AS select `t`.`warehouse_id` AS `warehouse_id`,`t`.`landing` AS `dat`,`m`.`Id_Article` AS `item_id`,`m`.`Cantidad` AS `amount`,`t`.`received` AS `received` from ((`Compres` `m` join `Entradas` `e` on((`m`.`Id_Entrada` = `e`.`Id_Entrada`))) join `travel` `t` on((`e`.`travel_id` = `t`.`id`))) where ((`e`.`Inventario` = 0) and (`m`.`Cantidad` <> 0)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `item_entry_out` +-- + +/*!50001 DROP VIEW IF EXISTS `item_entry_out`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `item_entry_out` AS select `t`.`warehouse_id_out` AS `warehouse_id`,`t`.`shipment` AS `dat`,`m`.`Id_Article` AS `item_id`,-(`m`.`Cantidad`) AS `amount`,`t`.`delivered` AS `delivered` from ((`Compres` `m` join `Entradas` `e` on((`m`.`Id_Entrada` = `e`.`Id_Entrada`))) join `travel` `t` on((`e`.`travel_id` = `t`.`id`))) where ((`e`.`Inventario` = 0) and (`e`.`Redada` = 0) and (`m`.`Cantidad` <> 0)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `item_out` +-- + +/*!50001 DROP VIEW IF EXISTS `item_out`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `item_out` AS select `t`.`warehouse_id` AS `warehouse_id`,`t`.`Fecha` AS `dat`,`m`.`Id_Article` AS `item_id`,-(`m`.`Cantidad`) AS `amount`,`m`.`OK` AS `ok`,`m`.`Reservado` AS `Reservado`,(`ts`.`alertLevel` = 3) AS `ready`,`t`.`Factura` AS `invoice`,ifnull(`ts`.`alertLevel`,0) AS `alertLevel` from ((`vn2008`.`Movimientos` `m` join `vn2008`.`Tickets` `t` on((`m`.`Id_Ticket` = `t`.`Id_Ticket`))) left join `vn`.`ticketState` `ts` on((`t`.`Id_Ticket` = `ts`.`ticket`))) where (`m`.`Cantidad` <> 0) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `new_view` +-- + +/*!50001 DROP VIEW IF EXISTS `new_view`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `new_view` AS select `vn`.`workerDocument`.`id` AS `id`,`vn`.`workerDocument`.`worker` AS `worker`,`vn`.`workerDocument`.`document` AS `document` from `vn`.`workerDocument` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `order` +-- + +/*!50001 DROP VIEW IF EXISTS `order`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `order` AS select `hedera`.`order`.`id` AS `id`,`hedera`.`order`.`date_make` AS `date_make`,`hedera`.`order`.`date_send` AS `date_send`,`hedera`.`order`.`customer_id` AS `customer_id`,`hedera`.`order`.`delivery_method_id` AS `delivery_method_id`,`hedera`.`order`.`agency_id` AS `agency_id`,`hedera`.`order`.`address_id` AS `address_id`,`hedera`.`order`.`note` AS `note`,`hedera`.`order`.`confirmed` AS `confirmed`,`hedera`.`order`.`is_bionic` AS `is_bionic`,`hedera`.`order`.`source_app` AS `source_app` from `hedera`.`order` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `order_component` +-- + +/*!50001 DROP VIEW IF EXISTS `order_component`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `order_component` AS select `c`.`order_row_id` AS `order_row_id`,`c`.`component_id` AS `component_id`,`c`.`price` AS `price` from `hedera`.`order_component` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `order_row` +-- + +/*!50001 DROP VIEW IF EXISTS `order_row`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `order_row` AS select `hedera`.`order_row`.`id` AS `id`,`hedera`.`order_row`.`order_id` AS `order_id`,`hedera`.`order_row`.`item_id` AS `item_id`,`hedera`.`order_row`.`warehouse_id` AS `warehouse_id`,`hedera`.`order_row`.`shipment` AS `shipment`,`hedera`.`order_row`.`amount` AS `amount`,`hedera`.`order_row`.`price` AS `price`,`hedera`.`order_row`.`rate` AS `rate`,`hedera`.`order_row`.`created` AS `created`,`hedera`.`order_row`.`Id_Movimiento` AS `Id_Movimiento` from `hedera`.`order_row` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `person_user` +-- + +/*!50001 DROP VIEW IF EXISTS `person_user`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `person_user` AS select `u`.`id` AS `id`,`u`.`role` AS `mysql_user_id`,`u`.`name` AS `name`,`u`.`password` AS `password`,`u`.`active` AS `active`,`u`.`lastPassChange` AS `last_pass_change` from `account`.`user` `u` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `person_user_idtrabajador` +-- + +/*!50001 DROP VIEW IF EXISTS `person_user_idtrabajador`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `person_user_idtrabajador` AS select `t`.`Id_Trabajador` AS `Id_Trabajador` from (`vn2008`.`person_user` `p` join `vn2008`.`Trabajadores` `t` on((`p`.`id` = `t`.`user_id`))) where (`t`.`user_id` = `account`.`userGetId`()) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `proveedores_clientes` +-- + +/*!50001 DROP VIEW IF EXISTS `proveedores_clientes`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `proveedores_clientes` AS select `Proveedores`.`Id_Proveedor` AS `Id_Proveedor`,`Proveedores`.`Proveedor` AS `Proveedor`,`Clientes`.`id_cliente` AS `Id_Cliente`,`Clientes`.`cliente` AS `Cliente` from (`Proveedores` join `Clientes` on((`Proveedores`.`NIF` = `Clientes`.`if`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `root` +-- + +/*!50001 DROP VIEW IF EXISTS `root`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`z-developer`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `root` AS select dayname(`h`.`confirm_date`) AS `DiadelaSemana`,hour(`h`.`confirm_date`) AS `Hora`,cast(`h`.`confirm_date` as date) AS `Fecha`,`h`.`source_app` AS `Dispositivo` from `hedera`.`order` `h` where `h`.`confirm_date` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `tarifa_componentes` +-- + +/*!50001 DROP VIEW IF EXISTS `tarifa_componentes`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `tarifa_componentes` AS select `bi`.`tarifa_componentes`.`Id_Componente` AS `Id_Componente`,`bi`.`tarifa_componentes`.`Componente` AS `Componente`,`bi`.`tarifa_componentes`.`tarifa_componentes_series_id` AS `tarifa_componentes_series_id`,`bi`.`tarifa_componentes`.`tarifa_class` AS `tarifa_class`,`bi`.`tarifa_componentes`.`tax` AS `tax`,`bi`.`tarifa_componentes`.`is_renewable` AS `is_renewable` from `bi`.`tarifa_componentes` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `tarifa_componentes_series` +-- + +/*!50001 DROP VIEW IF EXISTS `tarifa_componentes_series`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `tarifa_componentes_series` AS select `bi`.`tarifa_componentes_series`.`tarifa_componentes_series_id` AS `tarifa_componentes_series_id`,`bi`.`tarifa_componentes_series`.`Serie` AS `Serie`,`bi`.`tarifa_componentes_series`.`base` AS `base` from `bi`.`tarifa_componentes_series` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ticketCreationData` +-- + +/*!50001 DROP VIEW IF EXISTS `ticketCreationData`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`z-developer`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketCreationData` AS select dayname(`h`.`confirm_date`) AS `DiadelaSemana`,hour(`h`.`confirm_date`) AS `Hora`,cast(`h`.`confirm_date` as date) AS `Fecha`,`h`.`source_app` AS `Dispositivo` from `hedera`.`order` `h` where `h`.`confirm_date` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_Agenda` +-- + +/*!50001 DROP VIEW IF EXISTS `v_Agenda`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_Agenda` AS select 'P' AS `Tipo`,`Proveedores`.`Id_Proveedor` AS `Id`,`Proveedores`.`Proveedor` AS `Nombre`,`Proveedores`.`Telefono` AS `Telephone` from `Proveedores` where (`Proveedores`.`Telefono` is not null) union select 'C' AS `Tipo`,`Clientes`.`id_cliente` AS `Id`,`Clientes`.`cliente` AS `Cliente`,`Clientes`.`telefono` AS `Telefono` from `Clientes` where (`Clientes`.`telefono` is not null) union select 'C' AS `Tipo`,`Clientes`.`id_cliente` AS `Id`,`Clientes`.`cliente` AS `Cliente`,`Clientes`.`movil` AS `Movil` from `Clientes` where (`Clientes`.`movil` is not null) union select if(isnull(`Relaciones`.`Id_Proveedor`),'C','P') AS `Tipo`,if(isnull(`Relaciones`.`Id_Proveedor`),`Relaciones`.`Id_Cliente`,`Relaciones`.`Id_Proveedor`) AS `Id`,`Contactos`.`Nombre` AS `Nombre`,`Contactos`.`Telefono` AS `Telefono` from (`Contactos` join `Relaciones` on((`Contactos`.`Id_Contacto` = `Relaciones`.`Id_Contacto`))) where (`Contactos`.`Telefono` is not null) union select if(isnull(`Relaciones`.`Id_Proveedor`),'C','P') AS `Tipo`,if(isnull(`Relaciones`.`Id_Proveedor`),`Relaciones`.`Id_Cliente`,`Relaciones`.`Id_Proveedor`) AS `Id`,`Contactos`.`Nombre` AS `Nombre`,`Contactos`.`Movil` AS `Movil` from (`Contactos` join `Relaciones` on((`Contactos`.`Id_Contacto` = `Relaciones`.`Id_Contacto`))) where (`Contactos`.`Movil` is not null) union select 'T' AS `Tipo`,`Trabajadores`.`Id_Trabajador` AS `Id_Trabajador`,`Trabajadores`.`CodigoTrabajador` AS `CodigoTrabajador`,`Trabajadores`.`extension` AS `extension` from `Trabajadores` where (`Trabajadores`.`extension` is not null) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_Agenda2` +-- + +/*!50001 DROP VIEW IF EXISTS `v_Agenda2`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_Agenda2` AS select `v_Agenda`.`Tipo` AS `Tipo`,`v_Agenda`.`Id` AS `Id`,`v_Agenda`.`Nombre` AS `Nombre`,replace(`v_Agenda`.`Telephone`,' ','') AS `Telefono` from `v_Agenda` where `v_Agenda`.`Telephone` group by replace(`v_Agenda`.`Telephone`,' ','') */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_Articles_botanical` +-- + +/*!50001 DROP VIEW IF EXISTS `v_Articles_botanical`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_Articles_botanical` AS select `ab`.`Id_Article` AS `Id_Article`,ifnull(`ab`.`botanical`,concat(`g`.`latin_genus_name`,' ',ifnull(`s`.`latin_species_name`,''))) AS `edi_botanic` from ((`vn2008`.`Articles_botanical` `ab` left join `edi`.`genus` `g` on((`ab`.`genus_id` = `g`.`genus_id`))) left join `edi`.`specie` `s` on((`s`.`specie_id` = `ab`.`specie_id`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_Movimientos_Volumen_shipping_charge` +-- + +/*!50001 DROP VIEW IF EXISTS `v_Movimientos_Volumen_shipping_charge`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_Movimientos_Volumen_shipping_charge` AS select `M`.`Id_Ticket` AS `Id_Ticket`,`M`.`Id_Movimiento` AS `Id_Movimiento`,`t`.`Fecha` AS `Fecha`,`az`.`price` AS `price`,((`M`.`Cantidad` * ((`CM3`(`b`.`Id_Compra`) / 1000000) / `C`.`Packing`)) * (`az`.`price` / 0.08)) AS `freight` from (((((((`vn2008`.`Movimientos` `M` join `vn2008`.`Tickets` `t` on((`t`.`Id_Ticket` = `M`.`Id_Ticket`))) join `vn2008`.`Consignatarios` `c` on((`c`.`id_consigna` = `t`.`Id_Consigna`))) join `bi`.`Last_buy_id` `b` on(((`M`.`Id_Article` = `b`.`Id_Article`) and (`t`.`warehouse_id` = `b`.`warehouse_id`)))) join `vn2008`.`Compres` `C` on((`b`.`Id_Compra` = `C`.`Id_Compra`))) join `vn2008`.`Agencias` `a` on((`a`.`Id_Agencia` = `t`.`Id_Agencia`))) join `vn2008`.`Agencias_province` `ap` on(((`t`.`warehouse_id` = `ap`.`warehouse_id`) and (`ap`.`province_id` = `c`.`province_id`) and (`ap`.`agency_id` = `a`.`agency_id`)))) join `vn2008`.`Agencias_zonas` `az` on(((`az`.`Id_Agencia` = `t`.`Id_Agencia`) and (`az`.`zona` = `ap`.`zona`) and (`t`.`warehouse_id` = `az`.`warehouse_id`) and (`az`.`Id_Article` = 71)))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_Ordenes` +-- + +/*!50001 DROP VIEW IF EXISTS `v_Ordenes`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_Ordenes` AS select `Ordenes`.`Id_ORDEN` AS `Id_ORDEN`,`Ordenes`.`ORDEN` AS `ORDEN`,`Ordenes`.`datORDEN` AS `datORDEN`,`Ordenes`.`datTICKET` AS `datTICKET`,`Ordenes`.`CodVENDEDOR` AS `CodVENDEDOR`,`Ordenes`.`CodCOMPRADOR` AS `CodCOMPRADOR`,`Ordenes`.`CANTIDAD` AS `CANTIDAD`,`Ordenes`.`PRECIOMAX` AS `PRECIOMAX`,`Ordenes`.`PREU` AS `PREU`,`Ordenes`.`Id_ARTICLE` AS `Id_ARTICLE`,`Ordenes`.`Id_CLIENTE` AS `Id_CLIENTE`,`Ordenes`.`COMENTARIO` AS `COMENTARIO`,`Ordenes`.`OK` AS `OK`,`Ordenes`.`TOTAL` AS `TOTAL`,`Ordenes`.`datCOMPRA` AS `datCOMPRA`,`Ordenes`.`KO` AS `KO`,`Ordenes`.`Id_Movimiento` AS `Id_Movimiento`,`Ordenes`.`odbc_date` AS `odbc_date` from `Ordenes` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_XDiario_ALL` +-- + +/*!50001 DROP VIEW IF EXISTS `v_XDiario_ALL`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_XDiario_ALL` AS select `bi`.`XDiario_ALL`.`empresa_id` AS `empresa_id`,`bi`.`XDiario_ALL`.`SUBCTA` AS `SUBCTA`,`bi`.`XDiario_ALL`.`Eurodebe` AS `Eurodebe`,`bi`.`XDiario_ALL`.`Eurohaber` AS `Eurohaber`,`bi`.`XDiario_ALL`.`Fecha` AS `Fecha`,`bi`.`XDiario_ALL`.`FECHA_EX` AS `FECHA_EX` from `bi`.`XDiario_ALL` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_accion` +-- + +/*!50001 DROP VIEW IF EXISTS `v_accion`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_accion` AS select `vncontrol`.`accion`.`accion_id` AS `accion_id`,`vncontrol`.`accion`.`accion` AS `accion` from `vncontrol`.`accion` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_account` +-- + +/*!50001 DROP VIEW IF EXISTS `v_account`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_account` AS select `a`.`id` AS `user_id` from `account`.`account` `a` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_analisis_ventas` +-- + +/*!50001 DROP VIEW IF EXISTS `v_analisis_ventas`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_analisis_ventas` AS select `bi`.`analisis_ventas`.`Familia` AS `Familia`,`bi`.`analisis_ventas`.`Reino` AS `Reino`,`bi`.`analisis_ventas`.`Comercial` AS `Comercial`,`bi`.`analisis_ventas`.`Comprador` AS `Comprador`,`bi`.`analisis_ventas`.`Provincia` AS `Provincia`,`bi`.`analisis_ventas`.`almacen` AS `almacen`,`bi`.`analisis_ventas`.`Año` AS `Año`,`bi`.`analisis_ventas`.`Mes` AS `Mes`,`bi`.`analisis_ventas`.`Semana` AS `Semana`,`bi`.`analisis_ventas`.`Vista` AS `Vista`,`bi`.`analisis_ventas`.`Importe` AS `Importe` from `bi`.`analisis_ventas` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_awb_volumen` +-- + +/*!50001 DROP VIEW IF EXISTS `v_awb_volumen`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_awb_volumen` AS select `a`.`id` AS `awb_id`,`a`.`codigo` AS `codigo`,`a`.`importe` AS `importe`,cast(sum(`v`.`volume`) as signed) AS `Vol_Total` from (`awb` `a` join `awb_volume` `v` on((`v`.`awb_id` = `a`.`id`))) group by `a`.`id` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_barcodes` +-- + +/*!50001 DROP VIEW IF EXISTS `v_barcodes`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_barcodes` AS select `Articles`.`Id_Article` AS `code`,`Articles`.`Id_Article` AS `Id_Article` from `Articles` union all select `barcodes`.`code` AS `code`,`barcodes`.`Id_Article` AS `Id_Article` from `barcodes` union all select `c`.`Id_Compra` AS `Id_Compra`,`c`.`Id_Article` AS `Id_Article` from ((`Compres` `c` join `Entradas` `e` on((`c`.`Id_Entrada` = `e`.`Id_Entrada`))) join `travel` `tr` on((`tr`.`id` = `e`.`travel_id`))) where (`tr`.`landing` >= (curdate() + interval -(15) day)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_barcodes_plus` +-- + +/*!50001 DROP VIEW IF EXISTS `v_barcodes_plus`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_barcodes_plus` AS select `cache`.`barcodes`.`code` AS `code`,`cache`.`barcodes`.`Id_Article` AS `Id_Article`,`cache`.`barcodes`.`Article` AS `Article`,`cache`.`barcodes`.`Medida` AS `Medida`,`cache`.`barcodes`.`Color` AS `Color`,`cache`.`barcodes`.`Categoria` AS `Categoria`,`cache`.`barcodes`.`Producer` AS `Producer` from `cache`.`barcodes` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_botanic_export` +-- + +/*!50001 DROP VIEW IF EXISTS `v_botanic_export`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_botanic_export` AS select concat(ifnull(concat(`eg`.`latin_genus_name`,' '),''),ifnull(`es`.`latin_species_name`,'')) AS `Nom_botanic`,`be`.`Id_Paises` AS `Id_Paises`,`be`.`restriction` AS `restriction`,`be`.`description` AS `description` from ((`vn2008`.`botanic_export` `be` left join `vn2008`.`edi_genus` `eg` on((`be`.`edi_genus_id` = `eg`.`genus_id`))) left join `vn2008`.`edi_specie` `es` on((`be`.`edi_specie_id` = `es`.`specie_id`))) order by concat(`eg`.`latin_genus_name`,' ',`es`.`latin_species_name`) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_compres` +-- + +/*!50001 DROP VIEW IF EXISTS `v_compres`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_compres` AS select `TP`.`Id_Tipo` AS `Familia`,`RN`.`id` AS `reino_id`,`C`.`Id_Compra` AS `Id_Compra`,`C`.`Id_Entrada` AS `Id_Entrada`,`C`.`Id_Article` AS `Id_Article`,`C`.`Cantidad` AS `Cantidad`,`C`.`Costefijo` AS `Costefijo`,`C`.`Portefijo` AS `Portefijo`,`C`.`Novincular` AS `Novincular`,`C`.`Etiquetas` AS `Etiquetas`,`C`.`Packing` AS `Packing`,`C`.`grouping` AS `grouping`,`C`.`Comisionfija` AS `Comisionfija`,`C`.`Embalajefijo` AS `Embalajefijo`,`an`.`nicho` AS `Nicho`,`C`.`Id_Cubo` AS `Id_Cubo`,`C`.`Tarifa1` AS `Tarifa1`,`C`.`Tarifa2` AS `Tarifa2`,`C`.`Tarifa3` AS `Tarifa3`,`C`.`PVP` AS `PVP`,`C`.`Vida` AS `Vida`,`C`.`Id_Trabajador` AS `Id_Trabajador`,`C`.`punteo` AS `punteo`,`C`.`odbc_date` AS `odbc_date`,`E`.`Inventario` AS `Inventario`,`E`.`Id_Proveedor` AS `Id_Proveedor`,`E`.`Fecha` AS `Fecha`,`E`.`Confirmada` AS `Confirmada`,`E`.`Redada` AS `Redada`,`E`.`empresa_id` AS `empresa_id`,`E`.`travel_id` AS `travel_id`,`E`.`Pedida` AS `Pedida`,`E`.`recibida_id` AS `recibida_id`,`TR`.`id` AS `id`,`TR`.`shipment` AS `shipment`,`TR`.`landing` AS `landing`,`TR`.`warehouse_id` AS `warehouse_id`,`TR`.`warehouse_id_out` AS `warehouse_id_out`,`TR`.`agency_id` AS `agency_id`,`TR`.`ref` AS `ref`,`TR`.`delivered` AS `delivered`,`TR`.`received` AS `received`,`A`.`Article` AS `Article`,`A`.`Medida` AS `Medida`,`A`.`Tallos` AS `Tallos`,`C`.`caja` AS `caja`,`A`.`Categoria` AS `Categoria`,`A`.`id_origen` AS `id_origen`,`TP`.`Id_Tipo` AS `Tipo`,`A`.`tipo_id` AS `tipo_id`,`A`.`Color` AS `Color`,`A`.`Min` AS `Min`,(((`C`.`Costefijo` + `C`.`Embalajefijo`) + `C`.`Comisionfija`) + `C`.`Portefijo`) AS `Coste`,`W_OUT`.`fuente` AS `fuente`,`A`.`iva_group_id` AS `iva_group_id`,(if((`cb`.`Volumen` > 0),`cb`.`Volumen`,((`cb`.`X` * `cb`.`Y`) * if((`cb`.`Z` = 0),(`A`.`Medida` + 10),`cb`.`Z`))) * `C`.`Etiquetas`) AS `cm3`,`A`.`producer_id` AS `producer_id` from (((((((((`Compres` `C` join `Entradas` `E` on((`C`.`Id_Entrada` = `E`.`Id_Entrada`))) join `travel` `TR` on((`TR`.`id` = `E`.`travel_id`))) join `warehouse` `W_IN` on((`W_IN`.`id` = `TR`.`warehouse_id`))) join `warehouse` `W_OUT` on((`W_OUT`.`id` = `TR`.`warehouse_id_out`))) join `Articles` `A` on((`C`.`Id_Article` = `A`.`Id_Article`))) join `Tipos` `TP` on((`A`.`tipo_id` = `TP`.`tipo_id`))) join `reinos` `RN` on((`RN`.`id` = `TP`.`reino_id`))) join `Cubos` `cb` on((`cb`.`Id_Cubo` = `C`.`Id_Cubo`))) left join `Articles_nicho` `an` on(((`A`.`Id_Article` = `an`.`Id_Article`) and (`an`.`warehouse_id` = `W_IN`.`id`)))) where ((not(`W_IN`.`fuente`)) and (not(`E`.`Inventario`)) and (not(`E`.`Redada`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_departure_limit` +-- + +/*!50001 DROP VIEW IF EXISTS `v_departure_limit`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_departure_limit` AS select `cache`.`departure_limit`.`warehouse_id` AS `warehouse_id`,`cache`.`departure_limit`.`fecha` AS `fecha`,`cache`.`departure_limit`.`hora` AS `hora`,`cache`.`departure_limit`.`minSpeed` AS `minSpeed` from `cache`.`departure_limit` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_descuadre_bionic` +-- + +/*!50001 DROP VIEW IF EXISTS `v_descuadre_bionic`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_descuadre_bionic` AS select `t`.`Id_Ticket` AS `Id_Ticket`,`t`.`Alias` AS `Alias`,`m`.`Concepte` AS `Concepte`,sum(`mc`.`Valor`) AS `suma_componente`,`m`.`Preu` AS `Preu`,`m`.`Descuento` AS `Descuento`,(((`m`.`Preu` * (100 - `m`.`Descuento`)) / 100) - sum(`mc`.`Valor`)) AS `diferencia`,`t`.`Fecha` AS `Fecha`,((`m`.`Preu` > 0) and (`tp`.`reino_id` <> 6) and (`a`.`tipo_id` not in (7,115)) and (`t`.`warehouse_id` <> 41)) AS `benvenut` from ((((((`Movimientos` `m` join `Tickets` `t` on((`m`.`Id_Ticket` = `t`.`Id_Ticket`))) join `Clientes` `c` on((`t`.`Id_Cliente` = `c`.`id_cliente`))) join `warehouse` `w` on((`w`.`id` = `t`.`warehouse_id`))) join `Articles` `a` on((`m`.`Id_Article` = `a`.`Id_Article`))) join `Tipos` `tp` on((`a`.`tipo_id` = `tp`.`tipo_id`))) left join `Movimientos_componentes` `mc` on((`m`.`Id_Movimiento` = `mc`.`Id_Movimiento`))) where ((`t`.`Fecha` >= '2015-09-01') and (`t`.`empresa_id` in (442,791,567)) and `w`.`reserve` and `c`.`real` and (`tp`.`reino_id` <> 6)) group by `m`.`Id_Movimiento` having ((abs(`diferencia`) > 0.01) or isnull(`diferencia`)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_descuadre_porte` +-- + +/*!50001 DROP VIEW IF EXISTS `v_descuadre_porte`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_descuadre_porte` AS select `t`.`Id_Ticket` AS `Id_Ticket`,round(sum((`mc`.`Valor` * `m`.`Cantidad`)),2) AS `suma_componente`,round(`es`.`shipping_charge`,2) AS `teorico_agencia`,round((sum((`mc`.`Valor` * `m`.`Cantidad`)) - `es`.`shipping_charge`),2) AS `diferencia`,`t`.`Fecha` AS `Fecha` from ((((`vn2008`.`Movimientos` `m` left join `vn2008`.`Movimientos_componentes` `mc` on((`m`.`Id_Movimiento` = `mc`.`Id_Movimiento`))) join `vn2008`.`tarifa_componentes` `tc` on(((`tc`.`Id_Componente` = `mc`.`Id_Componente`) and (`tc`.`tarifa_componentes_series_id` = 6)))) join `vn2008`.`Tickets` `t` on((`t`.`Id_Ticket` = `m`.`Id_Ticket`))) left join `vn2008`.`v_expeditions_shipping_charge` `es` on((`es`.`Id_Ticket` = `t`.`Id_Ticket`))) where ((`t`.`Fecha` >= '2015-09-01') and (`t`.`empresa_id` in (442,791,567))) group by `t`.`Id_Ticket` having ((abs(`diferencia`) > 0.01) or isnull(`diferencia`)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_descuadre_porte2` +-- + +/*!50001 DROP VIEW IF EXISTS `v_descuadre_porte2`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_descuadre_porte2` AS select `t`.`Id_Ticket` AS `Id_Ticket`,(`mc`.`Valor` * `m`.`Cantidad`) AS `suma_componente`,`t`.`Fecha` AS `Fecha` from (((`vn2008`.`Movimientos` `m` left join `vn2008`.`Movimientos_componentes` `mc` on((`m`.`Id_Movimiento` = `mc`.`Id_Movimiento`))) join `vn2008`.`tarifa_componentes` `tc` on(((`tc`.`Id_Componente` = `mc`.`Id_Componente`) and (`tc`.`tarifa_componentes_series_id` = 6)))) join `vn2008`.`Tickets` `t` on((`t`.`Id_Ticket` = `m`.`Id_Ticket`))) where ((`t`.`Fecha` >= '2015-09-01') and (`t`.`empresa_id` in (442,791,567))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_empresa` +-- + +/*!50001 DROP VIEW IF EXISTS `v_empresa`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_empresa` AS select `e`.`logo` AS `logo`,`e`.`id` AS `id`,`e`.`registro` AS `registro`,`e`.`gerente_id` AS `gerente_id`,`e`.`alta` AS `alta`,`t`.`Nombre` AS `Nombre`,`t`.`Apellidos` AS `Apellidos`,`p`.`Proveedor` AS `Proveedor`,`p`.`Domicilio` AS `Domicilio`,`p`.`CP` AS `CP`,`p`.`Localidad` AS `Localidad`,`p`.`NIF` AS `NIF`,`p`.`Telefono` AS `Telefono`,`p`.`Alias` AS `Alias`,`e`.`abbreviation` AS `abbreviation` from ((`empresa` `e` join `Trabajadores` `t` on((`t`.`Id_Trabajador` = `e`.`gerente_id`))) join `Proveedores` `p` on((`p`.`Id_Proveedor` = `e`.`id`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_encajado` +-- + +/*!50001 DROP VIEW IF EXISTS `v_encajado`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_encajado` AS select hour(`e`.`odbc_date`) AS `hora`,minute(`e`.`odbc_date`) AS `minuto`,ifnull(`c`.`Volumen`,94500) AS `cm3`,`t`.`warehouse_id` AS `warehouse_id` from ((`expeditions` `e` left join `Cubos` `c` on((`c`.`item_id` = `e`.`EsBulto`))) join `Tickets` `t` on((`t`.`Id_Ticket` = `e`.`ticket_id`))) where (`e`.`odbc_date` between curdate() and `DAYEND`(curdate())) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_encajado_ultima_hora` +-- + +/*!50001 DROP VIEW IF EXISTS `v_encajado_ultima_hora`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_encajado_ultima_hora` AS select sum((ifnull(`c`.`Volumen`,94500) / 1000000)) AS `m3`,`t`.`warehouse_id` AS `warehouse_id` from ((`expeditions` `e` left join `Cubos` `c` on((`c`.`item_id` = `e`.`EsBulto`))) join `Tickets` `t` on((`t`.`Id_Ticket` = `e`.`ticket_id`))) where ((`e`.`odbc_date` > (now() + interval -(1) hour)) and (`t`.`warehouse_id` in (1,44))) group by `t`.`warehouse_id` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_expeditions_shipping_charge` +-- + +/*!50001 DROP VIEW IF EXISTS `v_expeditions_shipping_charge`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_expeditions_shipping_charge` AS select `t`.`Id_Ticket` AS `Id_Ticket`,sum((`az`.`price` * if(((`e`.`EsBulto` = 71) and isnull(`e`.`Id_Article`) and (`a`.`Vista` = 2)),0.75,1))) AS `shipping_charge`,`t`.`Fecha` AS `Fecha` from ((((((`Tickets` `t` join `Clientes` `cli` on((`cli`.`id_cliente` = `t`.`Id_Cliente`))) left join `expeditions` `e` on((`e`.`ticket_id` = `t`.`Id_Ticket`))) join `Consignatarios` `c` on((`c`.`id_consigna` = `t`.`Id_Consigna`))) join `Agencias` `a` on((`a`.`Id_Agencia` = `t`.`Id_Agencia`))) join `Agencias_province` `ap` on(((`t`.`warehouse_id` = `ap`.`warehouse_id`) and (`ap`.`province_id` = `c`.`province_id`) and (`ap`.`agency_id` = `a`.`agency_id`)))) join `Agencias_zonas` `az` on(((`az`.`Id_Agencia` = `t`.`Id_Agencia`) and (`az`.`zona` = `ap`.`zona`) and (`t`.`warehouse_id` = `az`.`warehouse_id`) and (`az`.`Id_Article` = `e`.`EsBulto`)))) where ((`t`.`Fecha` >= '2015-10-01') and (`cli`.`real` <> 0) and (`t`.`empresa_id` in (442,791,567))) group by `t`.`Id_Ticket` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_expeditions_shipping_charge2` +-- + +/*!50001 DROP VIEW IF EXISTS `v_expeditions_shipping_charge2`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_expeditions_shipping_charge2` AS select `t`.`Id_Ticket` AS `Id_Ticket`,(`az`.`price` * if(((`e`.`EsBulto` = 71) and isnull(`e`.`Id_Article`) and (`a`.`Vista` = 2)),0.75,1)) AS `shipping_charge`,`t`.`Fecha` AS `Fecha`,`t`.`warehouse_id` AS `warehouse_id` from (((((`Tickets` `t` left join `expeditions` `e` on((`e`.`ticket_id` = `t`.`Id_Ticket`))) join `Consignatarios` `c` on((`c`.`id_consigna` = `t`.`Id_Consigna`))) join `Agencias` `a` on((`a`.`Id_Agencia` = `t`.`Id_Agencia`))) join `Agencias_province` `ap` on(((`t`.`warehouse_id` = `ap`.`warehouse_id`) and (`ap`.`province_id` = `c`.`province_id`) and (`ap`.`agency_id` = `a`.`agency_id`)))) join `Agencias_zonas` `az` on(((`az`.`Id_Agencia` = `t`.`Id_Agencia`) and (`az`.`zona` = `ap`.`zona`) and (`t`.`warehouse_id` = `az`.`warehouse_id`) and (`az`.`Id_Article` = `e`.`EsBulto`)))) where ((`t`.`Fecha` >= '2016-01-01') and (`t`.`empresa_id` in (442,567))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_fallo` +-- + +/*!50001 DROP VIEW IF EXISTS `v_fallo`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_fallo` AS select `vncontrol`.`fallo`.`queja_id` AS `queja_id`,`vncontrol`.`fallo`.`accion_id` AS `accion_id` from `vncontrol`.`fallo` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_inter` +-- + +/*!50001 DROP VIEW IF EXISTS `v_inter`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_inter` AS select `vncontrol`.`inter`.`inter_id` AS `inter_id`,`vncontrol`.`inter`.`state_id` AS `state_id`,`vncontrol`.`inter`.`nota` AS `nota`,`vncontrol`.`inter`.`odbc_date` AS `odbc_date`,`vncontrol`.`inter`.`Id_Ticket` AS `Id_Ticket`,`vncontrol`.`inter`.`Id_Trabajador` AS `Id_Trabajador`,`vncontrol`.`inter`.`Id_Supervisor` AS `Id_supervisor` from `vncontrol`.`inter` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_jerarquia` +-- + +/*!50001 DROP VIEW IF EXISTS `v_jerarquia`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_jerarquia` AS select `jerarquia`.`worker_id` AS `Id_Trabajador`,`jerarquia`.`boss_id` AS `boss_id` from `jerarquia` union all select distinct `jerarquia`.`boss_id` AS `Id_Trabajador`,`jerarquia`.`boss_id` AS `boss_id` from `jerarquia` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_location` +-- + +/*!50001 DROP VIEW IF EXISTS `v_location`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_location` AS select `tl`.`longitude` AS `longitude`,`tl`.`latitude` AS `latitude`,`t`.`Id_Consigna` AS `Id_Consigna` from (`ticket_location` `tl` join `Tickets` `t` on((`t`.`Id_Ticket` = `tl`.`Id_Ticket`))) where (`t`.`Fecha` >= (curdate() + interval -(3) month)) group by `t`.`Id_Consigna` order by `t`.`Id_Ticket` desc */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_mana_spellers` +-- + +/*!50001 DROP VIEW IF EXISTS `v_mana_spellers`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_mana_spellers` AS select `bs`.`mana_spellers`.`Id_Trabajador` AS `Id_Trabajador`,`bs`.`mana_spellers`.`size` AS `size`,`bs`.`mana_spellers`.`used` AS `used` from `bs`.`mana_spellers` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_miriam` +-- + +/*!50001 DROP VIEW IF EXISTS `v_miriam`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_miriam` AS select `M`.`Id_Article` AS `Id_Article`,`M`.`Concepte` AS `Concepte`,`M`.`Cantidad` AS `Cantidad`,`M`.`Preu` AS `Preu`,`M`.`Descuento` AS `Descuento`,`T`.`Fecha` AS `Fecha`,`T`.`Id_Cliente` AS `Id_Cliente`,(((`M`.`Cantidad` * `M`.`Preu`) * (100 - `M`.`Descuento`)) / 100) AS `Importe` from (((`Tickets` `T` join `Movimientos` `M` on((`T`.`Id_Ticket` = `M`.`Id_Ticket`))) join `Articles` `A` on((`M`.`Id_Article` = `A`.`Id_Article`))) join `Tipos` `TP` on((`A`.`tipo_id` = `TP`.`tipo_id`))) where ((`T`.`Fecha` >= '2011-01-01') and (`A`.`tipo_id` = 7)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_movimientos_log` +-- + +/*!50001 DROP VIEW IF EXISTS `v_movimientos_log`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_movimientos_log` AS select `bi`.`movimientos_log`.`idmovimientos_log` AS `idmovimientos_log`,`bi`.`movimientos_log`.`Id_Movimiento` AS `Id_Movimiento`,`bi`.`movimientos_log`.`odbc_date` AS `odbc_date`,`bi`.`movimientos_log`.`Id_Trabajador` AS `Id_Trabajador`,`bi`.`movimientos_log`.`field_name` AS `field_name`,`bi`.`movimientos_log`.`new_value` AS `new_value` from `bi`.`movimientos_log` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_movimientos_mark` +-- + +/*!50001 DROP VIEW IF EXISTS `v_movimientos_mark`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_movimientos_mark` AS select `Movimientos_mark`.`Id_Movimiento` AS `Id_Movimiento`,max(`Movimientos_mark`.`Id_Accion`) AS `Accion` from `Movimientos_mark` group by `Movimientos_mark`.`Id_Movimiento` having ((max(`Movimientos_mark`.`Id_Accion`) = '6') or (max(`Movimientos_mark`.`Id_Accion`) = '7')) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_pedidos_auto_preparados` +-- + +/*!50001 DROP VIEW IF EXISTS `v_pedidos_auto_preparados`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_pedidos_auto_preparados` AS select `t`.`CodigoTrabajador` AS `CodigoTrabajador`,`i`.`Id_Ticket` AS `Id_Ticket`,`i`.`odbc_date` AS `Momento` from ((`vn2008`.`v_jerarquia` `j` left join `vn2008`.`v_inter` `i` on((`j`.`Id_Trabajador` = `i`.`Id_Trabajador`))) join `vn2008`.`Trabajadores` `t` on((`t`.`Id_Trabajador` = `j`.`Id_Trabajador`))) where (`i`.`state_id` = 20) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_pedidos_auto_preparadoskk` +-- + +/*!50001 DROP VIEW IF EXISTS `v_pedidos_auto_preparadoskk`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_pedidos_auto_preparadoskk` AS select `t`.`CodigoTrabajador` AS `CodigoTrabajador`,`TK`.`Fecha` AS `Fecha`,`TK`.`Id_Ticket` AS `Id_Ticket`,`i`.`odbc_date` AS `Momento` from (((`vn2008`.`v_jerarquia` `j` left join `vn2008`.`v_inter` `i` on((`j`.`Id_Trabajador` = `i`.`Id_Trabajador`))) join `vn2008`.`Trabajadores` `t` on((`t`.`Id_Trabajador` = `j`.`Id_Trabajador`))) left join `vn2008`.`Tickets` `TK` on((`TK`.`Id_Ticket` = `i`.`Id_Ticket`))) where (`i`.`state_id` = 5) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_phonebook` +-- + +/*!50001 DROP VIEW IF EXISTS `v_phonebook`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_phonebook` AS select `Clientes`.`id_cliente` AS `Id_Cliente`,replace(`Clientes`.`telefono`,' ','') AS `Telefono` from `Clientes` where (`Clientes`.`telefono` and `Clientes`.`activo`) union select `Clientes`.`id_cliente` AS `Id_Cliente`,replace(`Clientes`.`movil`,' ','') AS `Movil` from `Clientes` where (`Clientes`.`movil` and `Clientes`.`activo`) union select `Consignatarios`.`Id_cliente` AS `Id_Cliente`,replace(`Consignatarios`.`telefono`,' ','') AS `TRIM(telefono)` from (`Consignatarios` join `Clientes` `c` on((`Consignatarios`.`Id_cliente` = `c`.`id_cliente`))) where (`Consignatarios`.`telefono` and `c`.`activo`) union select `Consignatarios`.`Id_cliente` AS `Id_Cliente`,replace(`Consignatarios`.`movil`,' ','') AS `TRIM(movil)` from (`Consignatarios` join `Clientes` `c` on((`Consignatarios`.`Id_cliente` = `c`.`id_cliente`))) where (`Consignatarios`.`movil` and `c`.`activo`) union select `r`.`Id_Cliente` AS `Id_Cliente`,replace(`c`.`Telefono`,' ','') AS `REPLACE(c.telefono,' ','')` from ((`Clientes` `cl` join `Relaciones` `r` on((`cl`.`id_cliente` = `r`.`Id_Cliente`))) join `Contactos` `c` on((`r`.`Id_Contacto` = `c`.`Id_Contacto`))) where (`cl`.`telefono` and `cl`.`activo`) union select `r`.`Id_Cliente` AS `Id_Cliente`,replace(`c`.`Movil`,' ','') AS `REPLACE(c.Movil,' ','')` from ((`Clientes` `cl` join `Relaciones` `r` on((`cl`.`id_cliente` = `r`.`Id_Cliente`))) join `Contactos` `c` on((`r`.`Id_Contacto` = `c`.`Id_Contacto`))) where (`cl`.`movil` and `cl`.`activo`) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_price_fixed` +-- + +/*!50001 DROP VIEW IF EXISTS `v_price_fixed`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_price_fixed` AS select `pf`.`warehouse_id` AS `warehouse_id`,`pf`.`item_id` AS `item_id`,`pf`.`rate_0` AS `rate_0`,`pf`.`rate_1` AS `rate_1`,`pf`.`rate_2` AS `rate_2`,`pf`.`rate_3` AS `rate_3`,`pf`.`date_start` AS `date_start`,`pf`.`date_end` AS `date_end`,`pf`.`bonus` AS `bonus`,`pf`.`grouping` AS `grouping`,`pf`.`Packing` AS `Packing`,`pf`.`caja` AS `caja` from `price_fixed` `pf` where (`pf`.`warehouse_id` < 1000) union all select `wg`.`warehouse_id` AS `warehouse_id`,`pf`.`item_id` AS `item_id`,`pf`.`rate_0` AS `rate_0`,`pf`.`rate_1` AS `rate_1`,`pf`.`rate_2` AS `rate_2`,`pf`.`rate_3` AS `rate_3`,`pf`.`date_start` AS `date_start`,`pf`.`date_end` AS `date_end`,`pf`.`bonus` AS `bonus`,`pf`.`grouping` AS `grouping`,`pf`.`Packing` AS `Packing`,`pf`.`caja` AS `caja` from (`price_fixed` `pf` join `warehouse_group` `wg`) where ((`wg`.`warehouse_alias_id` + 1000) = `pf`.`warehouse_id`) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_price_fixed_group` +-- + +/*!50001 DROP VIEW IF EXISTS `v_price_fixed_group`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_price_fixed_group` AS select `pf`.`warehouse_id` AS `warehouse_id`,`pf`.`item_id` AS `item_id`,`pf`.`rate_0` AS `rate_0`,`pf`.`rate_1` AS `rate_1`,`pf`.`rate_2` AS `rate_2`,`pf`.`rate_3` AS `rate_3`,`pf`.`date_start` AS `date_start`,`pf`.`date_end` AS `date_end`,`pf`.`bonus` AS `bonus`,`pf`.`grouping` AS `grouping`,`pf`.`Packing` AS `Packing`,`pf`.`caja` AS `caja` from `v_price_fixed` `pf` group by `pf`.`warehouse_id`,`pf`.`item_id`,`pf`.`date_start`,`pf`.`date_end` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_session` +-- + +/*!50001 DROP VIEW IF EXISTS `v_session`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_session` AS select 1 AS `id`,`t`.`CodigoTrabajador` AS `CodigoTrabajador`,if(isnull(`sc`.`Id_Suplente`),`c`.`Id_Trabajador`,`sc`.`Id_Suplente`) AS `Id_Trabajador`,`c`.`id_cliente` AS `Id_Cliente`,`c`.`cliente` AS `Cliente`,`s`.`lastUpdate` AS `Fecha` from ((((`hedera`.`userSession` `s` join `hedera`.`visitUser` `v` on((`v`.`id` = `s`.`userVisit`))) join `vn2008`.`Clientes` `c` on((`c`.`id_cliente` = `v`.`user`))) left join `vn2008`.`Trabajadores` `t` on((`c`.`Id_Trabajador` = `t`.`Id_Trabajador`))) left join `vn2008`.`sharingcart` `sc` on(((`sc`.`Id_Trabajador` = `c`.`Id_Trabajador`) and (curdate() between `sc`.`datSTART` and `sc`.`datEND`)))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_ticket_amount` +-- + +/*!50001 DROP VIEW IF EXISTS `v_ticket_amount`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_ticket_amount` AS select `Movimientos`.`Id_Ticket` AS `Id_Ticket`,sum((((`Movimientos`.`Cantidad` * `Movimientos`.`Preu`) * (100 - `Movimientos`.`Descuento`)) / 100)) AS `amount` from (`Movimientos` join `Tickets` on((`Movimientos`.`Id_Ticket` = `Tickets`.`Id_Ticket`))) where (`Tickets`.`Fecha` >= (curdate() + interval -(6) month)) group by `Movimientos`.`Id_Ticket` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_trabajadores` +-- + +/*!50001 DROP VIEW IF EXISTS `v_trabajadores`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_trabajadores` AS select `t`.`CodigoTrabajador` AS `CodigoTrabajador`,`t`.`Nombre` AS `Nombre`,`t`.`Fecha_Inicio` AS `Fecha_Inicio`,`t`.`Password` AS `Password`,`t`.`user` AS `user`,`t`.`Apellidos` AS `Apellidos`,`t`.`Id_Trabajador` AS `Id_Trabajador`,`t`.`Foto` AS `Foto` from `vn2008`.`Trabajadores` `t` where (`t`.`Id_Cliente_Interno` = `account`.`userGetId`()) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_user` +-- + +/*!50001 DROP VIEW IF EXISTS `v_user`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_user` AS select `u`.`id` AS `id`,`u`.`role` AS `mysql_user_id`,`u`.`name` AS `name`,`u`.`password` AS `password`,`u`.`active` AS `active` from `account`.`user` `u` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_ventes` +-- + +/*!50001 DROP VIEW IF EXISTS `v_ventes`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_ventes` AS select `Agencias`.`Agencia` AS `Agencia`,`A`.`Categoria` AS `Categoria`,`A`.`tipo_id` AS `tipo_id`,`A`.`Medida` AS `Medida`,`A`.`Article` AS `Article`,`A`.`Color` AS `Color`,`CS`.`Id_cliente` AS `Id_Cliente`,`TP`.`Id_Tipo` AS `Tipo`,`T`.`Factura` AS `Factura`,`T`.`warehouse_id` AS `warehouse_id`,`M`.`Id_Movimiento` AS `Id_Movimiento`,`M`.`Id_Article` AS `Id_Article`,`TP`.`Id_Tipo` AS `Familia`,`M`.`Id_Ticket` AS `Id_Ticket`,`M`.`Concepte` AS `Concepte`,`M`.`Cantidad` AS `Cantidad`,`M`.`quantity` AS `quantity`,`M`.`Preu` AS `Preu`,`M`.`Descuento` AS `Descuento`,if((`T`.`Fecha` >= '2015-10-01'),`M`.`CostFixat`,((`M`.`Preu` * (100 - `M`.`Descuento`)) / 100)) AS `CostFixat`,`M`.`Reservado` AS `Reservado`,`M`.`OK` AS `OK`,`M`.`PrecioFijado` AS `PrecioFijado`,`M`.`odbc_date` AS `odbc_date`,cast(`T`.`Fecha` as date) AS `Fecha`,`T`.`Fecha` AS `FechaCompleta`,`CS`.`consignatario` AS `Alias`,`T`.`Id_Consigna` AS `Id_Consigna`,(((`M`.`Cantidad` * `M`.`Preu`) * (100 - `M`.`Descuento`)) / 100) AS `Importe`,`O`.`Origen` AS `Origen`,`TP`.`reino_id` AS `reino_id`,`C`.`invoice` AS `invoice`,`A`.`producer_id` AS `producer_id` from ((((((((`Movimientos` `M` join `Tickets` `T` on((`M`.`Id_Ticket` = `T`.`Id_Ticket`))) join `Consignatarios` `CS` on((`CS`.`id_consigna` = `T`.`Id_Consigna`))) join `Clientes` `C` on((`CS`.`Id_cliente` = `C`.`id_cliente`))) join `Articles` `A` on((`M`.`Id_Article` = `A`.`Id_Article`))) join `Origen` `O` on((`O`.`id` = `A`.`id_origen`))) join `Tipos` `TP` on((`A`.`tipo_id` = `TP`.`tipo_id`))) join `reinos` `r` on((`TP`.`reino_id` = `r`.`id`))) join `Agencias` on((`Agencias`.`Id_Agencia` = `T`.`Id_Agencia`))) where ((`T`.`Fecha` >= '2013-01-01') and (`C`.`real` > 0) and (`r`.`id` <> 6)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_venteskk` +-- + +/*!50001 DROP VIEW IF EXISTS `v_venteskk`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_venteskk` AS select `Agencias`.`Agencia` AS `Agencia`,`A`.`Categoria` AS `Categoria`,`A`.`tipo_id` AS `tipo_id`,`A`.`Medida` AS `Medida`,`A`.`Article` AS `Article`,`A`.`Color` AS `Color`,`CS`.`Id_cliente` AS `Id_Cliente`,`TP`.`Id_Tipo` AS `Tipo`,`T`.`Factura` AS `Factura`,`T`.`warehouse_id` AS `warehouse_id`,`M`.`Id_Movimiento` AS `Id_Movimiento`,`M`.`Id_Article` AS `Id_Article`,`TP`.`Id_Tipo` AS `Familia`,`M`.`Id_Ticket` AS `Id_Ticket`,`M`.`Concepte` AS `Concepte`,`M`.`Cantidad` AS `Cantidad`,`M`.`quantity` AS `quantity`,`M`.`Preu` AS `Preu`,`M`.`Descuento` AS `Descuento`,if((`T`.`Fecha` >= '2015-10-01'),`M`.`CostFixat`,((`M`.`Preu` * (100 - `M`.`Descuento`)) / 100)) AS `CostFixat`,`M`.`Reservado` AS `Reservado`,`M`.`OK` AS `OK`,`M`.`PrecioFijado` AS `PrecioFijado`,`M`.`odbc_date` AS `odbc_date`,cast(`T`.`Fecha` as date) AS `Fecha`,`T`.`Fecha` AS `FechaCompleta`,`CS`.`consignatario` AS `Alias`,`T`.`Id_Consigna` AS `Id_Consigna`,(((`M`.`Cantidad` * `M`.`Preu`) * (100 - `M`.`Descuento`)) / 100) AS `Importe`,`O`.`Origen` AS `Origen`,`TP`.`reino_id` AS `reino_id`,`C`.`invoice` AS `invoice`,`A`.`producer_id` AS `producer_id` from ((((((((`Movimientos` `M` join `Tickets` `T` on((`M`.`Id_Ticket` = `T`.`Id_Ticket`))) join `Consignatarios` `CS` on((`CS`.`id_consigna` = `T`.`Id_Consigna`))) join `Clientes` `C` on((`CS`.`Id_cliente` = `C`.`id_cliente`))) join `Articles` `A` on((`M`.`Id_Article` = `A`.`Id_Article`))) join `Origen` `O` on((`O`.`id` = `A`.`id_origen`))) join `Tipos` `TP` on((`A`.`tipo_id` = `TP`.`tipo_id`))) join `reinos` `r` on((`TP`.`reino_id` = `r`.`id`))) join `Agencias` on((`Agencias`.`Id_Agencia` = `T`.`Id_Agencia`))) where ((`T`.`Fecha` >= '2013-01-01') and (`C`.`real` > 0) and (`r`.`id` <> 6)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_warehouse` +-- + +/*!50001 DROP VIEW IF EXISTS `v_warehouse`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_warehouse` AS select `warehouse`.`id` AS `id`,`warehouse`.`name` AS `almacen` from `warehouse` union all select (1000 + `warehouse_alias`.`warehouse_alias_id`) AS `warehouse_alias_id`,concat(`warehouse_alias`.`alias`,'(G)') AS `concat(alias, '(G)')` from `warehouse_alias` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_xsubclien` +-- + +/*!50001 DROP VIEW IF EXISTS `v_xsubclien`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_xsubclien` AS select distinct `Facturas`.`Id_Cliente` AS `Id_Cliente`,`Facturas`.`empresa_id` AS `empresa_id` from `Facturas` where (`Facturas`.`Fecha` > (curdate() + interval -(2) month)) union select `Recibos`.`Id_Cliente` AS `Id_Cliente`,`Recibos`.`empresa_id` AS `empresa_id` from `Recibos` where (`Recibos`.`Fechacobro` > (curdate() + interval -(2) month)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_xsubcuentas` +-- + +/*!50001 DROP VIEW IF EXISTS `v_xsubcuentas`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_xsubcuentas` AS select `Clientes`.`Cuenta` AS `COD`,`Clientes`.`razonSocial` AS `TITULO`,trim(`Clientes`.`if`) AS `NIF`,`Clientes`.`domicilio` AS `DOMICILIO`,`Clientes`.`poblacion` AS `POBLACION`,`province`.`name` AS `PROVINCIA`,`Clientes`.`codPostal` AS `CODPOSTAL`,`p`.`Codigo` AS `country_code`,`v_xsubclien`.`empresa_id` AS `empresa_id`,substr(`Clientes`.`e-mail`,1,(coalesce(nullif(locate(',',`Clientes`.`e-mail`),0),99) - 1)) AS `EMAIL`,`Clientes`.`cplusTerIdNifFk` AS `IDNIF` from (((`Clientes` join `v_xsubclien` on((`Clientes`.`id_cliente` = `v_xsubclien`.`Id_Cliente`))) left join `Paises` `p` on((`p`.`Id` = `Clientes`.`Id_Pais`))) join `province` on((`Clientes`.`province_id` = `province`.`province_id`))) where (`Clientes`.`oficial` <> 0) group by `Clientes`.`id_cliente`,`v_xsubclien`.`empresa_id` union all select `Proveedores`.`cuenta` AS `Cuenta`,`Proveedores`.`Proveedor` AS `Proveedor`,trim(`Proveedores`.`NIF`) AS `NIF`,`Proveedores`.`Domicilio` AS `Domicilio`,`Proveedores`.`Localidad` AS `Localidad`,`prov`.`name` AS `Provincia`,`Proveedores`.`CP` AS `CP`,`p`.`Codigo` AS `country_code`,`v_xsubprov`.`empresa_id` AS `empresa_id`,substr(`c`.`email`,1,(coalesce(nullif(locate(',',`c`.`email`),0),99) - 1)) AS `EMAIL`,if((`p`.`CEE` = 0),1,if((`p`.`CEE` = 1),2,4)) AS `IDNIF` from (((((`Proveedores` join `v_xsubprov` on((`Proveedores`.`Id_Proveedor` = `v_xsubprov`.`proveedor_id`))) left join `Paises` `p` on((`p`.`Id` = `Proveedores`.`pais_id`))) left join `province` `prov` on((`prov`.`province_id` = `Proveedores`.`province_id`))) left join `Relaciones` `r` on((`r`.`Id_Proveedor` = `Proveedores`.`Id_Proveedor`))) left join `Contactos` `c` on((`c`.`Id_Contacto` = `r`.`Id_Contacto`))) where (`Proveedores`.`oficial` <> 0) group by `v_xsubprov`.`proveedor_id`,`v_xsubprov`.`empresa_id` union all select `Gastos`.`Id_Gasto` AS `Id_Gasto`,`Gastos`.`Gasto` AS `Gasto`,NULL AS `NULL`,NULL AS `My_exp_NULL`,NULL AS `My_exp_1_NULL`,NULL AS `My_exp_2_NULL`,NULL AS `My_exp_3_NULL`,NULL AS `country_code`,`e`.`id` AS `id`,NULL AS `EMAIL`,1 AS `IDNIF` from (`Gastos` join `empresa` `e` on((`e`.`id` = 442))) union all select `Bancos`.`Cuenta` AS `Cuenta`,`Bancos`.`Banco` AS `Banco`,NULL AS `NULL`,NULL AS `My_exp_NULL`,NULL AS `My_exp_1_NULL`,NULL AS `My_exp_2_NULL`,NULL AS `My_exp_3_NULL`,NULL AS `country_code`,`e`.`id` AS `id`,NULL AS `EMAIL`,1 AS `IDNIF` from (`Bancos` join `empresa` `e` on((`e`.`id` = 442))) union all select lpad(right(`Proveedores`.`cuenta`,5),10,'47510000') AS `Cuenta`,`Proveedores`.`Proveedor` AS `Proveedor`,`Proveedores`.`NIF` AS `NIF`,`Proveedores`.`Domicilio` AS `Domicilio`,`Proveedores`.`Localidad` AS `Localidad`,`prov`.`name` AS `Provincia`,`Proveedores`.`CP` AS `CP`,`p`.`Codigo` AS `country_code`,`v_xsubprov`.`empresa_id` AS `empresa_id`,substr(`c`.`email`,1,(coalesce(nullif(locate(',',`c`.`email`),0),99) - 1)) AS `EMAIL`,if((`p`.`CEE` = 0),1,if((`p`.`CEE` = 1),2,4)) AS `IDNIF` from (((((`Proveedores` join `v_xsubprov` on((`Proveedores`.`Id_Proveedor` = `v_xsubprov`.`proveedor_id`))) left join `Paises` `p` on((`p`.`Id` = `Proveedores`.`pais_id`))) left join `province` `prov` on((`prov`.`province_id` = `Proveedores`.`province_id`))) left join `Relaciones` `r` on((`r`.`Id_Proveedor` = `Proveedores`.`Id_Proveedor`))) left join `Contactos` `c` on((`c`.`Id_Contacto` = `r`.`Id_Contacto`))) where (((`Proveedores`.`cuenta` like '_____3____') or (`Proveedores`.`cuenta` like '_____2____')) and (`Proveedores`.`oficial` = 1)) group by `v_xsubprov`.`proveedor_id`,`v_xsubprov`.`empresa_id` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_xsubprov` +-- + +/*!50001 DROP VIEW IF EXISTS `v_xsubprov`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_xsubprov` AS select `recibida`.`proveedor_id` AS `proveedor_id`,`recibida`.`empresa_id` AS `empresa_id` from `recibida` where (`recibida`.`fecha` > (curdate() + interval -(3) month)) group by `recibida`.`proveedor_id`,`recibida`.`empresa_id` union all select `pago`.`id_proveedor` AS `id_proveedor`,`pago`.`empresa_id` AS `empresa_id` from `pago` where (`pago`.`fecha` > (curdate() + interval -(3) month)) group by `pago`.`id_proveedor`,`pago`.`empresa_id` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vnCreditClassification` +-- + +/*!50001 DROP VIEW IF EXISTS `vnCreditClassification`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vnCreditClassification` AS select `vn`.`creditClassification`.`id` AS `id`,`vn`.`creditClassification`.`client` AS `client`,`vn`.`creditClassification`.`dateStart` AS `dateStart`,`vn`.`creditClassification`.`dateEnd` AS `dateEnd` from `vn`.`creditClassification` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vnCreditInsurance` +-- + +/*!50001 DROP VIEW IF EXISTS `vnCreditInsurance`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vnCreditInsurance` AS select `vn`.`creditInsurance`.`id` AS `id`,`vn`.`creditInsurance`.`creditClassification` AS `creditClassification`,`vn`.`creditInsurance`.`credit` AS `credit`,`vn`.`creditInsurance`.`creationDate` AS `creationDate`,`vn`.`creditInsurance`.`grade` AS `grade` from `vn`.`creditInsurance` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vnSolunionCAP` +-- + +/*!50001 DROP VIEW IF EXISTS `vnSolunionCAP`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vnSolunionCAP` AS select `vn`.`solunionCAP`.`creditInsurance` AS `creditInsurance`,`vn`.`solunionCAP`.`dateStart` AS `dateStart`,`vn`.`solunionCAP`.`dateEnd` AS `dateEnd`,`vn`.`solunionCAP`.`dateLeaving` AS `dateLeaving` from `vn`.`solunionCAP` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `workerDocument` +-- + +/*!50001 DROP VIEW IF EXISTS `workerDocument`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerDocument` AS select `vn`.`workerDocument`.`id` AS `id`,`vn`.`workerDocument`.`worker` AS `worker`,`vn`.`workerDocument`.`document` AS `document` from `vn`.`workerDocument` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `workerTeamCollegues` +-- + +/*!50001 DROP VIEW IF EXISTS `workerTeamCollegues`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerTeamCollegues` AS select distinct `w`.`Id_Trabajador` AS `workerId`,`t`.`Id_Trabajador` AS `collegueId` from (`vn`.`workerTeam` `w` join `vn`.`workerTeam` `t` on((`w`.`team` = `t`.`team`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `workerTeam_kk` +-- + +/*!50001 DROP VIEW IF EXISTS `workerTeam_kk`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerTeam_kk` AS select `w`.`team` AS `team`,`w`.`user` AS `user`,`w`.`id` AS `id`,`t`.`Id_Trabajador` AS `Id_Trabajador` from (`vn`.`workerTeam` `w` left join `vn2008`.`Trabajadores` `t` on((`t`.`user_id` = `w`.`user`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Current Database: `bi` +-- + +USE `bi`; + +-- +-- Final view structure for view `analisis_grafico_ventas` +-- + +/*!50001 DROP VIEW IF EXISTS `analisis_grafico_ventas`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `analisis_grafico_ventas` AS select `analisis_ventas`.`Año` AS `Año`,`analisis_ventas`.`Semana` AS `Semana`,sum(`analisis_ventas`.`Importe`) AS `Importe` from `analisis_ventas` group by `analisis_ventas`.`Año`,`analisis_ventas`.`Semana` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `analisis_ventas_simple` +-- + +/*!50001 DROP VIEW IF EXISTS `analisis_ventas_simple`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `analisis_ventas_simple` AS select `analisis_ventas`.`Año` AS `Año`,`analisis_ventas`.`Semana` AS `Semana`,sum(`analisis_ventas`.`Importe`) AS `Importe` from `analisis_ventas` group by `analisis_ventas`.`Año`,`analisis_ventas`.`Semana` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `customerRiskOverdue` +-- + +/*!50001 DROP VIEW IF EXISTS `customerRiskOverdue`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `customerRiskOverdue` AS select `cr`.`customer_id` AS `customer_id`,`cr`.`amount` AS `amount`,`cr`.`company_id` AS `company_id` from (((`bi`.`customer_risk` `cr` join `vn2008`.`empresa` `e` on((`e`.`id` = `cr`.`company_id`))) join `vn2008`.`Clientes` `c` on((`cr`.`customer_id` = `c`.`id_cliente`))) join `vn2008`.`pay_met` `pm` on((`pm`.`id` = `c`.`pay_met_id`))) where (`cr`.`amount` and `e`.`morosidad` and `pm`.`deudaviva`) union all select `f`.`Id_Cliente` AS `Id_Cliente`,-(round(`f`.`Importe`,2)) AS `importe`,`f`.`empresa_id` AS `empresa_id` from (((`vn2008`.`Facturas` `f` join `vn2008`.`Clientes` `c` on((`f`.`Id_Cliente` = `c`.`id_cliente`))) join `vn2008`.`empresa` `e` on((`e`.`id` = `f`.`empresa_id`))) join `vn2008`.`pay_met` `pm` on((`pm`.`id` = `c`.`pay_met_id`))) where ((`f`.`Fecha` > (curdate() + interval -(101) day)) and ((`vn2008`.`paymentday`(`f`.`Fecha`,`c`.`vencimiento`) + interval `pm`.`graceDays` day) > curdate()) and (`f`.`Importe` > 0) and `e`.`morosidad` and `pm`.`deudaviva`) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `last_Id_Cubo` +-- + +/*!50001 DROP VIEW IF EXISTS `last_Id_Cubo`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `last_Id_Cubo` AS select `C`.`Id_Compra` AS `Id_Compra`,`C`.`Id_Article` AS `Id_Article`,`tr`.`warehouse_id` AS `warehouse_id`,`C`.`Id_Cubo` AS `Id_Cubo`,`C`.`Packing` AS `Packing` from ((`vn2008`.`Compres` `C` join `vn2008`.`Entradas` `E` on((`C`.`Id_Entrada` = `E`.`Id_Entrada`))) join `vn2008`.`travel` `tr` on((`E`.`travel_id` = `tr`.`id`))) where ((`C`.`Id_Cubo` is not null) and (`C`.`Id_Cubo` <> '--') and (`tr`.`landing` > (curdate() - interval 18 month))) order by `C`.`Id_Compra` desc */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_clientes_jerarquia` +-- + +/*!50001 DROP VIEW IF EXISTS `v_clientes_jerarquia`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_clientes_jerarquia` AS select `c`.`id_cliente` AS `Id_Cliente`,`c`.`cliente` AS `Cliente`,`t`.`CodigoTrabajador` AS `Comercial`,`tj`.`CodigoTrabajador` AS `Jefe` from (((`vn2008`.`Clientes` `c` join `vn2008`.`Trabajadores` `t` on((`t`.`Id_Trabajador` = `c`.`Id_Trabajador`))) join `vn2008`.`jerarquia` on((`vn2008`.`jerarquia`.`worker_id` = `c`.`Id_Trabajador`))) join `vn2008`.`Trabajadores` `tj` on((`tj`.`Id_Trabajador` = `vn2008`.`jerarquia`.`boss_id`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_ventas_contables` +-- + +/*!50001 DROP VIEW IF EXISTS `v_ventas_contables`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_ventas_contables` AS select `vn2008`.`time`.`year` AS `year`,`vn2008`.`time`.`month` AS `month`,cast(sum((((`m`.`Cantidad` * `m`.`Preu`) * (100 - `m`.`Descuento`)) / 100)) as decimal(10,0)) AS `importe` from (((`vn2008`.`Tickets` `t` join `bi`.`f_tvc` on((`t`.`Id_Ticket` = `bi`.`f_tvc`.`Id_Ticket`))) join `vn2008`.`Movimientos` `m` on((`t`.`Id_Ticket` = `m`.`Id_Ticket`))) join `vn2008`.`time` on((`vn2008`.`time`.`date` = cast(`t`.`Fecha` as date)))) where (`t`.`Fecha` >= '2014-01-01') group by `vn2008`.`time`.`year`,`vn2008`.`time`.`month` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Current Database: `vn` +-- + +USE `vn`; + +-- +-- Final view structure for view `accounting` +-- + +/*!50001 DROP VIEW IF EXISTS `accounting`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `accounting` AS select `b`.`Id_Banco` AS `id`,`b`.`Banco` AS `bank`,`b`.`Cuenta` AS `account`,`b`.`cash` AS `accountingTypeFk`,`b`.`entity_id` AS `entityFk`,`b`.`activo` AS `isActive` from `vn2008`.`Bancos` `b` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `address` +-- + +/*!50001 DROP VIEW IF EXISTS `address`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `address` AS select `cs`.`Id_cliente` AS `customer`,`cs`.`warehouse_id` AS `warehouse`,`cs`.`domicilio` AS `street`,`cs`.`poblacion` AS `city`,`cs`.`province_id` AS `province`,`cs`.`codPostal` AS `postalCode`,`cs`.`telefono` AS `phone`,`cs`.`movil` AS `celular`,`cs`.`consignatario` AS `nickname`,`cs`.`id_consigna` AS `id`,`cs`.`predeterminada` AS `defaultAddress`,`cs`.`Id_Agencia` AS `agency`,`cs`.`active` AS `active`,`cs`.`longitude` AS `longitude`,`cs`.`latitude` AS `latitude`,`cs`.`Id_cliente` AS `clientFk`,`cs`.`warehouse_id` AS `warehouseFk`,`cs`.`province_id` AS `provinceFk`,`cs`.`movil` AS `mobile`,`cs`.`Id_Agencia` AS `agencyFk`,`cs`.`isEqualizated` AS `isEqualizated` from `vn2008`.`Consignatarios` `cs` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `addressObservation` +-- + +/*!50001 DROP VIEW IF EXISTS `addressObservation`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `addressObservation` AS select `co`.`consignatarios_observation_id` AS `id`,`co`.`Id_Consigna` AS `addressFk`,`co`.`observation_type_id` AS `observationTypeFk`,`co`.`text` AS `description` from `vn2008`.`consignatarios_observation` `co` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `agency` +-- + +/*!50001 DROP VIEW IF EXISTS `agency`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `agency` AS select `a`.`agency_id` AS `id`,`a`.`name` AS `name`,`a`.`warehouse_id` AS `warehouse`,`a`.`warehouse_id` AS `warehouseFk`,`a`.`por_volumen` AS `isVolumetric`,`a`.`Id_Banco` AS `bank`,`a`.`Id_Banco` AS `bankFk`,`a`.`warehouse_alias_id` AS `warehouseNickname`,`a`.`warehouse_alias_id` AS `warehouseAliasFk`,`a`.`propios` AS `own`,`a`.`zone_label` AS `labelZone` from `vn2008`.`agency` `a` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `agencyHour` +-- + +/*!50001 DROP VIEW IF EXISTS `agencyHour`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `agencyHour` AS select `h`.`agency_hour_id` AS `id`,`h`.`agency_id` AS `agency`,`h`.`week_day` AS `weekDay`,`h`.`warehouse_id` AS `warehouse`,`h`.`province_id` AS `province`,`h`.`subtract_day` AS `substractDay`,`h`.`max_hour` AS `maxHour` from `vn2008`.`agency_hour` `h` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `agencyMode` +-- + +/*!50001 DROP VIEW IF EXISTS `agencyMode`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `agencyMode` AS select `a`.`Id_Agencia` AS `id`,`a`.`Agencia` AS `name`,`a`.`description` AS `description`,`a`.`Vista` AS `view`,`a`.`Vista` AS `deliveryMethod`,`a`.`m3` AS `m3`,`a`.`cod71` AS `cod71`,`a`.`web` AS `web`,`a`.`agency_id` AS `agency`,`a`.`agency_id` AS `agencyFk`,`a`.`agency_service_id` AS `agencyService`,`a`.`agency_service_id` AS `agencyServiceFk`,`a`.`inflacion` AS `inflacion`,`a`.`is_volumetric` AS `isVolumetric`,`a`.`send_mail` AS `reportMail` from `vn2008`.`Agencias` `a` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `agencyWarehouse` +-- + +/*!50001 DROP VIEW IF EXISTS `agencyWarehouse`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `agencyWarehouse` AS select `a`.`agency_id` AS `agencyFk`,`a`.`warehouse_id` AS `warehouseFk`,`a`.`Vista` AS `agencyType` from `vn2008`.`agency_warehouse` `a` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `awb` +-- + +/*!50001 DROP VIEW IF EXISTS `awb`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `awb` AS select `a`.`id` AS `id`,`a`.`codigo` AS `code`,`a`.`bultos` AS `package`,`a`.`peso` AS `weight`,`a`.`MYSQL_TIME` AS `created`,`a`.`transitario_id` AS `transitoryFk`,`a`.`iva_id` AS `taxFk`,`a`.`gestdoc_id` AS `docFk`,`a`.`importe` AS `amount`,`a`.`carguera_id` AS `freightFk`,`a`.`m3` AS `m3`,`a`.`stems` AS `stems`,`a`.`flight_id` AS `flightFk`,`a`.`volume_weight` AS `volumeWeight`,`a`.`hb` AS `hb`,`a`.`rate` AS `rate`,`a`.`booked` AS `booked`,`a`.`issued` AS `issued`,`a`.`operated` AS `operated` from `vn2008`.`awb` `a` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `bank` +-- + +/*!50001 DROP VIEW IF EXISTS `bank`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `bank` AS select `b`.`Id_Banco` AS `id`,`b`.`Banco` AS `bank`,`b`.`Cuenta` AS `account`,`b`.`cash` AS `cash`,`b`.`entity_id` AS `entityFk`,`b`.`activo` AS `isActive` from `vn2008`.`Bancos` `b` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `botanicExport` +-- + +/*!50001 DROP VIEW IF EXISTS `botanicExport`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `botanicExport` AS select `be`.`botanic_export_id` AS `id`,`be`.`edi_genus_id` AS `ediGenusFk`,`be`.`edi_specie_id` AS `ediSpecieFk`,`be`.`Id_Paises` AS `countryFk`,`be`.`restriction` AS `restriction`,`be`.`description` AS `description` from `vn2008`.`botanic_export` `be` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `buy` +-- + +/*!50001 DROP VIEW IF EXISTS `buy`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `buy` AS select `c`.`Id_Compra` AS `id`,`c`.`Id_Entrada` AS `entryFk`,`c`.`Id_Article` AS `itemFk`,`c`.`Cantidad` AS `amount`,`c`.`Costefijo` AS `buyingValue`,`c`.`Cantidad` AS `quantity`,`c`.`Id_Cubo` AS `packageFk`,`c`.`Etiquetas` AS `stickers`,`c`.`Portefijo` AS `freightValue`,`c`.`Embalajefijo` AS `packageValue`,`c`.`Comisionfija` AS `comissionValue`,`c`.`Packing` AS `packing`,`c`.`grouping` AS `grouping`,`c`.`caja` AS `groupingMode`,`c`.`Nicho` AS `location`,`c`.`Tarifa1` AS `price1`,`c`.`Tarifa2` AS `price2`,`c`.`Tarifa3` AS `price3`,`c`.`PVP` AS `minPrice`,`c`.`Productor` AS `producer`,`c`.`Vida` AS `printedStickers`,`c`.`punteo` AS `isChecked` from `vn2008`.`Compres` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `city` +-- + +/*!50001 DROP VIEW IF EXISTS `city`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `city` AS select `c`.`city_id` AS `id`,`c`.`name` AS `name`,`c`.`province_id` AS `provinceFk` from `vn2008`.`city` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `client` +-- + +/*!50001 DROP VIEW IF EXISTS `client`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `client` AS select `c`.`id_cliente` AS `id`,`c`.`cliente` AS `name`,`c`.`if` AS `fi`,`c`.`telefono` AS `phone`,`c`.`fax` AS `fax`,`c`.`e-mail` AS `email`,`c`.`cc` AS `iban`,`c`.`vencimiento` AS `dueDay`,`c`.`Cuenta` AS `accountingAccount`,`c`.`RE` AS `isEqualizated`,`c`.`poblacion` AS `city`,`c`.`province_id` AS `province`,`c`.`province_id` AS `provinceFk`,`c`.`codPostal` AS `postcode`,`c`.`razonSocial` AS `socialName`,`c`.`contacto` AS `contact`,`c`.`reexpedicion` AS `Reexpedicion`,`c`.`invoice` AS `hasToInvoice`,`c`.`notas` AS `Notas`,`c`.`notas_administracion` AS `notas_administracion`,`c`.`copiaFactura` AS `Copiafactura`,`c`.`retener` AS `Retener`,`c`.`congelado` AS `Congelado`,`c`.`Id_Trabajador` AS `Id_Trabajador`,`c`.`Id_Trabajador` AS `workerFk`,`c`.`credito` AS `credit`,`c`.`cyc` AS `cyc`,`c`.`Id_Pais` AS `Id_Pais`,`c`.`Id_Pais` AS `countryFk`,`c`.`activo` AS `activo`,`c`.`activo` AS `active`,`c`.`gestdoc_id` AS `gestdoc`,`c`.`gestdoc_id` AS `gestdocFk`,`c`.`calidad` AS `calidad`,`c`.`pay_met_id` AS `paymentMethod`,`c`.`pay_met_id` AS `paymentMethodFk`,`c`.`created` AS `registerDate`,`c`.`mail` AS `invoiceByEmail`,`c`.`mail` AS `isToBeMailed`,`c`.`chanel_id` AS `channel`,`c`.`chanel_id` AS `channelFk`,`c`.`vies` AS `VIES`,`c`.`sepaVnl` AS `sepavnl`,`c`.`coreVnl` AS `corevnl`,`c`.`risk_calculated` AS `riskCalculated`,`c`.`coreVnh` AS `corevnh`,`c`.`clientes_tipo_id` AS `clientes_tipo_id`,`c`.`clientes_tipo_id` AS `clientTypeFk`,`c`.`postcode_id` AS `postcode_id`,`c`.`postcode_id` AS `postcodeFk`,`c`.`mail_address` AS `mail_address`,`c`.`codpos` AS `codpos`,`c`.`cplusTerIdNifFk` AS `cplusTerIdNifFk`,`c`.`domicilio` AS `postalAddress`,`c`.`invoiceByAddress` AS `invoiceByAddress`,`c`.`contabilizado` AS `isTaxDataChecked`,`c`.`congelado` AS `isFreezed` from `vn2008`.`Clientes` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `clientManaCache` +-- + +/*!50001 DROP VIEW IF EXISTS `clientManaCache`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `clientManaCache` AS select `mc`.`Id_Cliente` AS `clientFk`,`mc`.`Mana` AS `mana`,`mc`.`dated` AS `dated` from `bs`.`manaCustomer` `mc` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `clientObservation` +-- + +/*!50001 DROP VIEW IF EXISTS `clientObservation`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `clientObservation` AS select `vn2008`.`client_observation`.`client_observation_id` AS `id`,`vn2008`.`client_observation`.`Id_Cliente` AS `client`,`vn2008`.`client_observation`.`Id_Trabajador` AS `worker`,`vn2008`.`client_observation`.`text` AS `text`,`vn2008`.`client_observation`.`odbc_date` AS `creationDate` from `vn2008`.`client_observation` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `clientType` +-- + +/*!50001 DROP VIEW IF EXISTS `clientType`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `clientType` AS select `ct`.`clientes_tipo_id` AS `id`,`ct`.`code` AS `code`,`ct`.`tipo` AS `type` from `vn2008`.`clientes_tipo` `ct` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `company` +-- + +/*!50001 DROP VIEW IF EXISTS `company`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `company` AS select `e`.`id` AS `id`,`e`.`abbreviation` AS `code` from `vn2008`.`empresa` `e` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `country` +-- + +/*!50001 DROP VIEW IF EXISTS `country`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `country` AS select `p`.`Id` AS `id`,`p`.`Pais` AS `country`,`p`.`CEE` AS `CEE`,if((`p`.`CEE` < 2),1,0) AS `isUeeMember`,`p`.`Codigo` AS `Code`,`p`.`Id_Moneda` AS `currencyFk`,`p`.`Id_Paisreal` AS `politicalCountryFk`,`p`.`geoFk` AS `geoFk` from `vn2008`.`Paises` `p` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `deliveryMethod` +-- + +/*!50001 DROP VIEW IF EXISTS `deliveryMethod`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `deliveryMethod` AS select `d`.`vista_id` AS `id`,`d`.`code` AS `code`,`d`.`vista` AS `description` from `vn2008`.`Vistas` `d` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ediGenus` +-- + +/*!50001 DROP VIEW IF EXISTS `ediGenus`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ediGenus` AS select `g`.`genus_id` AS `id`,`g`.`latin_genus_name` AS `latinGenusName`,`g`.`entry_date` AS `entried`,`g`.`expiry_date` AS `dued`,`g`.`change_date_time` AS `modified` from `edi`.`genus` `g` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ediSpecie` +-- + +/*!50001 DROP VIEW IF EXISTS `ediSpecie`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ediSpecie` AS select `s`.`specie_id` AS `id`,`s`.`genus_id` AS `genusFk`,`s`.`latin_species_name` AS `latinSpeciesName`,`s`.`entry_date` AS `entried`,`s`.`expiry_date` AS `dued`,`s`.`change_date_time` AS `modified` from `edi`.`specie` `s` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `entry` +-- + +/*!50001 DROP VIEW IF EXISTS `entry`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `entry` AS select `e`.`Id_Entrada` AS `id`,`e`.`Id_Proveedor` AS `supplierFk`,`e`.`Referencia` AS `ref`,`e`.`Inventario` AS `isInventory`,`e`.`Confirmada` AS `isConfirmed`,`e`.`Pedida` AS `isOrdered`,`e`.`Redada` AS `isRaid`,`e`.`comision` AS `commission`,`e`.`odbc_date` AS `created`,`e`.`Notas_Eva` AS `evaNotes`,`e`.`travel_id` AS `travelFk`,`e`.`Id_Moneda` AS `currencyFk`,`e`.`empresa_id` AS `companyFk`,`e`.`gestdoc_id` AS `gestDocFk`,`e`.`recibida_id` AS `invoiceReceivedFk` from `vn2008`.`Entradas` `e` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `especialPrice` +-- + +/*!50001 DROP VIEW IF EXISTS `especialPrice`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `especialPrice` AS select `p`.`Id_PrecioEspecial` AS `id`,`p`.`Id_Cliente` AS `clientFk`,`p`.`Id_Article` AS `itemFk`,`p`.`PrecioEspecial` AS `value` from `vn2008`.`PreciosEspeciales` `p` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `expedition` +-- + +/*!50001 DROP VIEW IF EXISTS `expedition`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `expedition` AS select `e`.`expeditions_id` AS `id`,`e`.`agency_id` AS `agency`,`e`.`agency_id` AS `agencyFk`,`e`.`ticket_id` AS `ticket`,`e`.`ticket_id` AS `ticketFk`,`e`.`EsBulto` AS `isBox`,`e`.`odbc_date` AS `printingTime`,`e`.`Id_Article` AS `item`,`e`.`Id_Article` AS `itemFk`,`e`.`counter` AS `counter`,`e`.`checked` AS `checked`,`e`.`workerFk` AS `workerFk` from `vn2008`.`expeditions` `e` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `expence` +-- + +/*!50001 DROP VIEW IF EXISTS `expence`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `expence` AS select `g`.`Id_Gasto` AS `id`,`g`.`iva_tipo_id` AS `taxTypeFk`,`g`.`Gasto` AS `name`,`g`.`isWithheld` AS `isWithheld` from `vn2008`.`Gastos` `g` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `family` +-- + +/*!50001 DROP VIEW IF EXISTS `family`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `family` AS select `t`.`tipo_id` AS `id`,`t`.`Tipo` AS `name`,`t`.`life` AS `life` from `vn2008`.`Tipos` `t` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `grant` +-- + +/*!50001 DROP VIEW IF EXISTS `grant`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `grant` AS select `vn2008`.`Permisos`.`Id_Grupo` AS `group`,`vn2008`.`Permisos`.`Id_Trabajador` AS `worker`,`vn2008`.`Permisos`.`empresa_id` AS `company` from `vn2008`.`Permisos` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `grantGroup` +-- + +/*!50001 DROP VIEW IF EXISTS `grantGroup`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `grantGroup` AS select `vn2008`.`Grupos`.`id` AS `id`,`vn2008`.`Grupos`.`Grupo` AS `description`,`vn2008`.`Grupos`.`observation_type_id` AS `observationType` from `vn2008`.`Grupos` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ink` +-- + +/*!50001 DROP VIEW IF EXISTS `ink`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ink` AS select `c`.`Id_Tinta` AS `id`,`c`.`name` AS `name`,`c`.`Tinta` AS `picture` from `vn2008`.`Tintas` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `intrastat` +-- + +/*!50001 DROP VIEW IF EXISTS `intrastat`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `intrastat` AS select `i`.`Codintrastat` AS `id`,`i`.`Definicion` AS `description`,`i`.`iva_group_id` AS `taxGroupFk`,`i`.`iva_codigo_id` AS `taxCodeFk` from `vn2008`.`Intrastat` `i` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `invoiceCorrection` +-- + +/*!50001 DROP VIEW IF EXISTS `invoiceCorrection`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `invoiceCorrection` AS select `ic`.`correctingFk` AS `correctingFk`,`ic`.`correctedFk` AS `correctedFk`,`ic`.`cplusRectificationTypeFk` AS `cplusRectificationTypeFk`,`ic`.`cplusInvoiceType477Fk` AS `cplusInvoiceType477Fk`,`ic`.`invoiceCorrectionTypeFk` AS `invoiceCorrectionTypeFk` from `vn2008`.`invoiceCorrection` `ic` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `invoiceCorrectionDataSource` +-- + +/*!50001 DROP VIEW IF EXISTS `invoiceCorrectionDataSource`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `invoiceCorrectionDataSource` AS select `s`.`itemFk` AS `itemFk`,`s`.`quantity` AS `quantity`,`s`.`concept` AS `concept`,`s`.`price` AS `price`,`s`.`discount` AS `discount`,`t`.`refFk` AS `refFk`,`s`.`id` AS `saleFk` from (`vn`.`sale` `s` join `vn`.`ticket` `t` on((`t`.`id` = `s`.`ticketFk`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `invoiceIn` +-- + +/*!50001 DROP VIEW IF EXISTS `invoiceIn`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `invoiceIn` AS select `r`.`id` AS `id`,`r`.`num_recibida` AS `serialNumber`,`r`.`serie` AS `serial`,`r`.`proveedor_id` AS `supplierFk`,`r`.`fecha` AS `issued`,`r`.`sref` AS `supplierRef`,`r`.`contabilizada` AS `isBooked`,`r`.`moneda_id` AS `currencyFk`,`r`.`MYSQL_TIME` AS `created`,`r`.`empresa_id` AS `companyFk`,`r`.`gestdoc_id` AS `docFk`,`r`.`dateBooking` AS `booked`,`r`.`dateOperation` AS `operated`,`r`.`cplusInvoiceType472Fk` AS `cplusInvoiceType472Fk`,`r`.`cplusRectificationTypeFk` AS `cplusRectificationTypeFk`,`r`.`cplusSubjectOpFk` AS `cplusSubjectOpFk`,`r`.`cplusTaxBreakFk` AS `cplusTaxBreakFk`,`r`.`cplusTrascendency472Fk` AS `cplusTrascendency472Fk` from `vn2008`.`recibida` `r` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `invoiceInAwb` +-- + +/*!50001 DROP VIEW IF EXISTS `invoiceInAwb`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `invoiceInAwb` AS select `a`.`recibida_id` AS `invoiceInFk`,`a`.`awb_id` AS `awbFk`,`a`.`dua` AS `dua` from `vn2008`.`awb_recibida` `a` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `invoiceInEntry` +-- + +/*!50001 DROP VIEW IF EXISTS `invoiceInEntry`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `invoiceInEntry` AS select `i`.`recibida_entrada_id` AS `id`,`i`.`recibida_id` AS `invoiceInFk`,`i`.`Id_Entrada` AS `entryFk`,`i`.`percentage` AS `percentage`,`i`.`awb_recibida` AS `invoiceInAwbFk`,`i`.`Contabilizado` AS `isBooked` from `vn2008`.`recibida_entrada` `i` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `invoiceInIntrastat` +-- + +/*!50001 DROP VIEW IF EXISTS `invoiceInIntrastat`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `invoiceInIntrastat` AS select `r`.`recibida_id` AS `invoiceInFk`,`r`.`Codintrastat` AS `intrastatFk`,`r`.`importe` AS `amount` from `vn2008`.`recibida_intrastat` `r` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `invoiceInTax` +-- + +/*!50001 DROP VIEW IF EXISTS `invoiceInTax`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `invoiceInTax` AS select `r`.`id` AS `id`,`r`.`recibida_id` AS `invoiceInFk`,`r`.`iva_id` AS `taxCodeFk`,`r`.`bi` AS `taxableBase`,`r`.`gastos_id` AS `expenceFk`,`r`.`divisa` AS `foreignValue`,`r`.`MYSQL_TIME` AS `created` from `vn2008`.`recibida_iva` `r` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `invoiceOut` +-- + +/*!50001 DROP VIEW IF EXISTS `invoiceOut`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `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`.`cplusInvoiceType477Fk` AS `cplusInvoiceType477Fk`,`f`.`cplusTaxBreakFk` AS `cplusTaxBreakFk`,`f`.`cplusSubjectOpFk` AS `cplusSubjectOpFk`,`f`.`cplusTrascendency477Fk` AS `cplusTrascendency477Fk`,`f`.`pdf` AS `pdf` from `vn2008`.`Facturas` `f` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `item` +-- + +/*!50001 DROP VIEW IF EXISTS `item`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `item` AS select `t`.`Id_Article` AS `id`,`t`.`Article` AS `name`,`t`.`tipo_id` AS `familyFk`,`t`.`Medida` AS `size`,`t`.`Color` AS `inkFk`,`t`.`Categoria` AS `category`,`t`.`Tallos` AS `stems`,`t`.`id_origen` AS `originFk`,`t`.`description` AS `description`,`t`.`producer_id` AS `producerFk`,`t`.`Codintrastat` AS `intrastatFk`,`t`.`expenceFk` AS `expenceFk` from `vn2008`.`Articles` `t` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `itemBotanical` +-- + +/*!50001 DROP VIEW IF EXISTS `itemBotanical`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemBotanical` AS select `ab`.`Id_Article` AS `itemFk`,`ab`.`botanical` AS `botanical`,`ab`.`genus_id` AS `genusFk`,`ab`.`specie_id` AS `specieFk` from `vn2008`.`Articles_botanical` `ab` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `itemBotanicalWithGenus` +-- + +/*!50001 DROP VIEW IF EXISTS `itemBotanicalWithGenus`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemBotanicalWithGenus` AS select `ib`.`itemFk` AS `itemFk`,ifnull(`ib`.`botanical`,concat(`g`.`latinGenusName`,' ',ifnull(`s`.`latinSpeciesName`,''))) AS `ediBotanic` from ((`vn`.`itemBotanical` `ib` left join `vn`.`ediGenus` `g` on((`g`.`id` = `ib`.`genusFk`))) left join `vn`.`ediSpecie` `s` on((`s`.`id` = `ib`.`specieFk`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `itemTag` +-- + +/*!50001 DROP VIEW IF EXISTS `itemTag`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemTag` AS select `t`.`id` AS `id`,`t`.`itemFk` AS `itemFk`,`t`.`tagFk` AS `tagFk`,`t`.`value` AS `value`,`t`.`priority` AS `priority` from `vn2008`.`itemTag` `t` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `itemTagged` +-- + +/*!50001 DROP VIEW IF EXISTS `itemTagged`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `itemTagged` AS select distinct `itemTag`.`itemFk` AS `itemFk` from `vn`.`itemTag` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `mail` +-- + +/*!50001 DROP VIEW IF EXISTS `mail`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `mail` AS select `vn2008`.`mail`.`id` AS `id`,`vn2008`.`mail`.`senderFk` AS `senderFk`,`vn2008`.`mail`.`recipientFk` AS `recipientFk`,`vn2008`.`mail`.`to` AS `sender`,`vn2008`.`mail`.`reply_to` AS `replyTo`,`vn2008`.`mail`.`subject` AS `subject`,`vn2008`.`mail`.`text` AS `body`,`vn2008`.`mail`.`plainTextBody` AS `plainTextBody`,`vn2008`.`mail`.`path` AS `attachment`,`vn2008`.`mail`.`DATE_ODBC` AS `creationDate`,`vn2008`.`mail`.`sent` AS `sent`,`vn2008`.`mail`.`error` AS `status` from `vn2008`.`mail` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `manaSpellers` +-- + +/*!50001 DROP VIEW IF EXISTS `manaSpellers`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `manaSpellers` AS select `bs`.`mana_spellers`.`Id_Trabajador` AS `worker`,`bs`.`mana_spellers`.`size` AS `size`,`bs`.`mana_spellers`.`used` AS `used`,`bs`.`mana_spellers`.`prices_modifier_rate` AS `pricesModifierRate`,`bs`.`mana_spellers`.`prices_modifier_activated` AS `pricesModifierActivated`,`vn2008`.`Trabajadores`.`CodigoTrabajador` AS `workerCode`,`vn2008`.`Trabajadores`.`Nombre` AS `firstname`,`vn2008`.`Trabajadores`.`Apellidos` AS `name` from (`bs`.`mana_spellers` join `vn2008`.`Trabajadores` on((`bs`.`mana_spellers`.`Id_Trabajador` = `vn2008`.`Trabajadores`.`Id_Trabajador`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `movement` +-- + +/*!50001 DROP VIEW IF EXISTS `movement`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `movement` AS select `m`.`Id_Movimiento` AS `id`,`m`.`Id_Article` AS `item`,`m`.`Id_Ticket` AS `ticket`,`m`.`Concepte` AS `concept`,`m`.`Cantidad` AS `amount`,`m`.`quantity` AS `quantity`,`m`.`Preu` AS `price`,`m`.`Descuento` AS `discount`,`m`.`CostFixat` AS `cost`,`m`.`Reservado` AS `reservado`,`m`.`OK` AS `od`,`m`.`PrecioFijado` AS `priceFixed`,`m`.`odbc_date` AS `lastUpdate` from `vn2008`.`Movimientos` `m` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `observationType` +-- + +/*!50001 DROP VIEW IF EXISTS `observationType`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `observationType` AS select `ot`.`observation_type_id` AS `id`,`ot`.`description` AS `description` from `vn2008`.`observation_type` `ot` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `origin` +-- + +/*!50001 DROP VIEW IF EXISTS `origin`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `origin` AS select `o`.`id` AS `id`,`o`.`Abreviatura` AS `code`,`o`.`Origen` AS `name` from `vn2008`.`Origen` `o` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `outgoingInvoice` +-- + +/*!50001 DROP VIEW IF EXISTS `outgoingInvoice`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `outgoingInvoice` AS select `vn2008`.`Facturas`.`Id_Factura` AS `id`,`vn2008`.`Facturas`.`Serie` AS `serie`,`vn2008`.`Facturas`.`Fecha` AS `dateInvoice`,`vn2008`.`Facturas`.`Importe` AS `total`,`vn2008`.`Facturas`.`Vencimiento` AS `dueDate`,`vn2008`.`Facturas`.`Id_Banco` AS `bank`,`vn2008`.`Facturas`.`Id_Cliente` AS `client`,`vn2008`.`Facturas`.`Id_Remesa` AS `remittance`,`vn2008`.`Facturas`.`Remesar` AS `remit`,`vn2008`.`Facturas`.`Id_Trabajador` AS `worker`,`vn2008`.`Facturas`.`odbc_date` AS `creationDate`,`vn2008`.`Facturas`.`empresa_id` AS `company`,`vn2008`.`Facturas`.`liquidacion` AS `liquidacion?`,`vn2008`.`Facturas`.`pdf` AS `isPdf` from `vn2008`.`Facturas` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `package` +-- + +/*!50001 DROP VIEW IF EXISTS `package`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `package` AS select `c`.`Id_Cubo` AS `id`,`c`.`Volumen` AS `volume`,`c`.`X` AS `width`,`c`.`Y` AS `height`,`c`.`Z` AS `depth`,`c`.`Retornable` AS `isPackageReturnable`,`c`.`odbc_date` AS `created`,`c`.`item_id` AS `itemFk` from `vn2008`.`Cubos` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `payMethod` +-- + +/*!50001 DROP VIEW IF EXISTS `payMethod`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `payMethod` AS select `pm`.`id` AS `id`,`pm`.`name` AS `name` from `vn2008`.`pay_met` `pm` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `plantpassport` +-- + +/*!50001 DROP VIEW IF EXISTS `plantpassport`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `plantpassport` AS select `pp`.`producer_id` AS `producerFk`,`pp`.`plantpassport_authority_id` AS `plantpassportAuthorityFk`,`pp`.`number` AS `number` from `vn2008`.`plantpassport` `pp` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `plantpassportAuthority` +-- + +/*!50001 DROP VIEW IF EXISTS `plantpassportAuthority`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `plantpassportAuthority` AS select `ppa`.`plantpassport_authority_id` AS `id`,`ppa`.`denomination` AS `denomination`,`ppa`.`Paises_Id` AS `countryFk` from `vn2008`.`plantpassport_authority` `ppa` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `priceFixed` +-- + +/*!50001 DROP VIEW IF EXISTS `priceFixed`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `priceFixed` AS select `p`.`item_id` AS `itemFk`,`p`.`rate_0` AS `rate0`,`p`.`rate_1` AS `rate1`,`p`.`rate_2` AS `rate2`,`p`.`rate_3` AS `rate3`,`p`.`date_start` AS `started`,`p`.`date_end` AS `ended`,`p`.`bonus` AS `bonus`,`p`.`warehouse_id` AS `warehouseFk`,`p`.`odbc_date` AS `created`,`p`.`price_fixed_id` AS `id`,`p`.`grouping` AS `grouping`,`p`.`Packing` AS `packing`,`p`.`caja` AS `box` from `vn2008`.`price_fixed` `p` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `printServerQueue` +-- + +/*!50001 DROP VIEW IF EXISTS `printServerQueue`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `printServerQueue` AS select `c`.`Id_Cola` AS `id`,`c`.`Id_Impresora` AS `printerFk`,`c`.`Id_Prioridad` AS `priorityFk`,`c`.`Id_Informe` AS `reportFk`,`c`.`Id_Estado` AS `statusFk`,`c`.`Hora_Inicio` AS `started`,`c`.`Hora_Fin` AS `finished`,`c`.`Cola` AS `param1`,`c`.`Id_Trabajador` AS `workerFk`,`c`.`Cola2` AS `param2`,`c`.`Cola3` AS `param3`,`c`.`error` AS `error` from `vn2008`.`Colas` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `printingQueue` +-- + +/*!50001 DROP VIEW IF EXISTS `printingQueue`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `printingQueue` AS select `c`.`Id_Cola` AS `id`,`c`.`Id_Impresora` AS `printer`,`c`.`Id_Prioridad` AS `priority`,`c`.`Id_Informe` AS `report`,`c`.`Id_Estado` AS `state`,`c`.`Hora_Inicio` AS `startingTime`,`c`.`Hora_Fin` AS `endingTime`,`c`.`Cola` AS `text`,`c`.`Id_Trabajador` AS `worker`,`c`.`Cola2` AS `text2`,`c`.`Cola3` AS `text3` from `vn2008`.`Colas` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `producer` +-- + +/*!50001 DROP VIEW IF EXISTS `producer`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `producer` AS select `p`.`producer_id` AS `id`,`p`.`name` AS `name` from `vn2008`.`producer` `p` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `province` +-- + +/*!50001 DROP VIEW IF EXISTS `province`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `province` AS select `t`.`province_id` AS `id`,`t`.`name` AS `name`,`t`.`Paises_Id` AS `countryFk` from `vn2008`.`province` `t` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `referenceRate` +-- + +/*!50001 DROP VIEW IF EXISTS `referenceRate`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `referenceRate` AS select `r`.`moneda_id` AS `currencyFk`,`r`.`date` AS `dated`,`r`.`rate` AS `value` from `vn2008`.`reference_rate` `r` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `role` +-- + +/*!50001 DROP VIEW IF EXISTS `role`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `role` AS select `account`.`role`.`id` AS `id`,`account`.`role`.`name` AS `name`,`account`.`role`.`description` AS `description`,`account`.`role`.`hasLogin` AS `hasLogin` from `account`.`role` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `route` +-- + +/*!50001 DROP VIEW IF EXISTS `route`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `route` AS select `a`.`Id_Ruta` AS `id`,`a`.`Id_Trabajador` AS `workerFk`,`a`.`Fecha` AS `created`,`a`.`Id_Vehiculo` AS `vehicleFk`,`a`.`Id_Agencia` AS `agencyFk`,`a`.`Id_Agencia` AS `agencyModeFk`,`a`.`Hora` AS `time`,`a`.`ok` AS `isOk`,`a`.`km_start` AS `kmStart`,`a`.`km_end` AS `kmEnd`,`a`.`date_start` AS `started`,`a`.`date_end` AS `finished`,`a`.`gestdoc_id` AS `gestdocFk`,`a`.`cost` AS `cost`,`a`.`m3` AS `m3` from `vn2008`.`Rutas` `a` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `sale` +-- + +/*!50001 DROP VIEW IF EXISTS `sale`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `sale` AS select `m`.`Id_Movimiento` AS `id`,`m`.`Id_Article` AS `itemFk`,`m`.`Id_Ticket` AS `ticketFk`,`m`.`Concepte` AS `concept`,`m`.`Cantidad` AS `quantity`,`m`.`Preu` AS `price`,`m`.`Descuento` AS `discount`,`m`.`Reservado` AS `reserved`,`m`.`OK` AS `isPicked`,`m`.`odbc_date` AS `created` from `vn2008`.`Movimientos` `m` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `saleComponent` +-- + +/*!50001 DROP VIEW IF EXISTS `saleComponent`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `saleComponent` AS select `mc`.`Id_Movimiento` AS `saleFk`,`mc`.`Id_Componente` AS `componentFk`,`mc`.`Valor` AS `value` from `vn2008`.`Movimientos_componentes` `mc` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `state` +-- + +/*!50001 DROP VIEW IF EXISTS `state`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `state` AS select `s`.`id` AS `id`,`s`.`name` AS `name`,`s`.`order` AS `order`,`s`.`alert_level` AS `alertLevel`,`s`.`code` AS `code` from `vn2008`.`state` `s` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `supplier` +-- + +/*!50001 DROP VIEW IF EXISTS `supplier`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `supplier` AS select `p`.`Id_Proveedor` AS `id`,`p`.`Proveedor` AS `name`,`p`.`cuenta` AS `account`,`p`.`pais_id` AS `countryFk`,`p`.`NIF` AS `nif`,`p`.`Agricola` AS `isFarmer`,`p`.`cuentaret` AS `retAccount`,`p`.`ComisionProveedor` AS `commission`,`p`.`odbc_time` AS `created`,`p`.`postcode_id` AS `postcodeFk`,`p`.`active` AS `isActive` from `vn2008`.`Proveedores` `p` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `tag` +-- + +/*!50001 DROP VIEW IF EXISTS `tag`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `tag` AS select `t`.`id` AS `id`,`t`.`name` AS `name`,`t`.`free` AS `free` from `vn2008`.`tag` `t` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `taxClass` +-- + +/*!50001 DROP VIEW IF EXISTS `taxClass`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `taxClass` AS select `c`.`iva_group_id` AS `id`,`c`.`description` AS `description`,`c`.`code` AS `code` from `vn2008`.`iva_group` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `taxClassCode` +-- + +/*!50001 DROP VIEW IF EXISTS `taxClassCode`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `taxClassCode` AS select `c`.`iva_group_id` AS `taxClassFk`,`c`.`date` AS `effectived`,`c`.`iva_codigo_id` AS `taxCodeFk` from `vn2008`.`iva_group_codigo` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `taxCode` +-- + +/*!50001 DROP VIEW IF EXISTS `taxCode`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `taxCode` AS select `ic`.`id` AS `id`,`ic`.`fecha` AS `dated`,`ic`.`codigo` AS `code`,`ic`.`iva_tipo_id` AS `taxTypeFk`,`ic`.`iva` AS `rate`,`ic`.`recargo` AS `equalizationTax`,`ic`.`tipo` AS `type`,`ic`.`link` AS `linkFk`,`ic`.`isActive` AS `isActive` from `vn2008`.`iva_codigo` `ic` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `taxType` +-- + +/*!50001 DROP VIEW IF EXISTS `taxType`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `taxType` AS select `t`.`id` AS `id`,`t`.`alias` AS `nickname`,`t`.`serie_id` AS `serial`,`t`.`TIPOOPE` AS `TIPOOPE`,`t`.`descripcion` AS `description`,`t`.`Id_Pais` AS `countryFk` from `vn2008`.`iva_tipo` `t` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ticket` +-- + +/*!50001 DROP VIEW IF EXISTS `ticket`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticket` AS select `t`.`Id_Ticket` AS `id`,`t`.`Id_Cliente` AS `clientFk`,`t`.`warehouse_id` AS `warehouseFk`,`t`.`Fecha` AS `shipped`,`t`.`landing` AS `landed`,`t`.`Alias` AS `nickname`,`t`.`Factura` AS `refFk`,`t`.`Id_Consigna` AS `addressFk`,`t`.`Firmado` AS `isSigned`,`t`.`Localizacion` AS `location`,`t`.`blocked` AS `blocked`,`t`.`Solucion` AS `solution`,`t`.`Id_Ruta` AS `path`,`t`.`Id_Ruta` AS `routeFk`,`t`.`empresa_id` AS `company`,`t`.`empresa_id` AS `companyFk`,`t`.`Id_Agencia` AS `agencyModeFk`,`t`.`Prioridad` AS `loadingOrder`,`t`.`odbc_date` AS `created`,`t`.`Fecha` AS `shipment`,`t`.`landing` AS `landing`,`t`.`Id_Cliente` AS `customer`,`t`.`warehouse_id` AS `warehouse`,`t`.`Id_Cliente` AS `client`,`t`.`Id_Consigna` AS `address`,`t`.`Id_Agencia` AS `agencyMode`,`t`.`Firmado` AS `signed`,`t`.`odbc_date` AS `creationDate` from `vn2008`.`Tickets` `t` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ticketObservation` +-- + +/*!50001 DROP VIEW IF EXISTS `ticketObservation`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketObservation` AS select `to`.`ticket_observation_id` AS `id`,`to`.`Id_Ticket` AS `ticketFk`,`to`.`observation_type_id` AS `observationTypeFk`,`to`.`text` AS `description` from `vn2008`.`ticket_observation` `to` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ticketState` +-- + +/*!50001 DROP VIEW IF EXISTS `ticketState`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketState` AS select `ts`.`Id_Ticket` AS `ticketFk`,`ts`.`Id_Ticket` AS `ticket`,`s`.`id` AS `state`,`s`.`order` AS `productionOrder`,`s`.`alert_level` AS `alertLevel`,`s`.`code` AS `code`,`i`.`Id_Trabajador` AS `worker`,`i`.`Id_Trabajador` AS `workerFk` from ((`vn2008`.`Tickets_state` `ts` join `vncontrol`.`inter` `i` on((`i`.`inter_id` = `ts`.`inter_id`))) join `vn2008`.`state` `s` on((`s`.`id` = `i`.`state_id`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ticketStateToday` +-- + +/*!50001 DROP VIEW IF EXISTS `ticketStateToday`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketStateToday` AS select `ts`.`ticket` AS `ticket`,`ts`.`state` AS `state`,`ts`.`productionOrder` AS `productionOrder`,`ts`.`alertLevel` AS `alertLevel`,`ts`.`worker` AS `worker`,`ts`.`code` AS `code` from (`vn`.`ticketState` `ts` join `vn`.`ticket` `t` on((`t`.`id` = `ts`.`ticket`))) where (`t`.`shipment` between curdate() and `midnight`(curdate())) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ticketTracking` +-- + +/*!50001 DROP VIEW IF EXISTS `ticketTracking`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketTracking` AS select `i`.`inter_id` AS `id`,`i`.`state_id` AS `stateFk`,`i`.`odbc_date` AS `created`,`i`.`Id_Ticket` AS `ticketFk`,`i`.`Id_Trabajador` AS `workerFk` from `vncontrol`.`inter` `i` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `time` +-- + +/*!50001 DROP VIEW IF EXISTS `time`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `time` AS select `t`.`date` AS `dated`,`t`.`period` AS `period`,`t`.`month` AS `month`,`t`.`year` AS `year`,`t`.`day` AS `day`,`t`.`week` AS `week` from `vn2008`.`time` `t` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `travel` +-- + +/*!50001 DROP VIEW IF EXISTS `travel`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `travel` AS select `t`.`id` AS `id`,`t`.`shipment` AS `shipped`,`t`.`shipment_hour` AS `shipmentHour`,`t`.`landing` AS `landed`,`t`.`landing_hour` AS `landingHour`,`t`.`warehouse_id` AS `warehouseInFk`,`t`.`warehouse_id_out` AS `warehouseOutFk`,`t`.`agency_id` AS `agencyFk`,`t`.`ref` AS `ref`,`t`.`delivered` AS `isDelivered`,`t`.`received` AS `isReceived`,`t`.`m3` AS `m3` from `vn2008`.`travel` `t` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `unary` +-- + +/*!50001 DROP VIEW IF EXISTS `unary`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `unary` AS select `a`.`id` AS `id`,`a`.`parent` AS `parent` from `vn2008`.`unary` `a` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `unaryScan` +-- + +/*!50001 DROP VIEW IF EXISTS `unaryScan`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `unaryScan` AS select `u`.`unary_id` AS `unaryFk`,`u`.`name` AS `name`,`u`.`odbc_date` AS `created`,`u`.`type` AS `type` from `vn2008`.`unary_scan` `u` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `unaryScanLine` +-- + +/*!50001 DROP VIEW IF EXISTS `unaryScanLine`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `unaryScanLine` AS select `u`.`id` AS `id`,`u`.`code` AS `code`,`u`.`odbc_date` AS `created`,`u`.`unary_id` AS `unaryScanFk` from `vn2008`.`unary_scan_line` `u` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `unaryScanLineBuy` +-- + +/*!50001 DROP VIEW IF EXISTS `unaryScanLineBuy`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `unaryScanLineBuy` AS select `u`.`scan_line_id` AS `unaryScanLineFk`,`u`.`Id_Article` AS `itemFk` from `vn2008`.`unary_scan_line_buy` `u` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `unaryScanLineExpedition` +-- + +/*!50001 DROP VIEW IF EXISTS `unaryScanLineExpedition`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `unaryScanLineExpedition` AS select `u`.`scan_line_id` AS `unaryScanLineFk`,`u`.`expedition_id` AS `expeditionFk` from `vn2008`.`unary_scan_line_expedition` `u` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `user` +-- + +/*!50001 DROP VIEW IF EXISTS `user`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `user` AS select `account`.`user`.`id` AS `id`,`account`.`user`.`name` AS `name`,`account`.`user`.`password` AS `password`,`account`.`user`.`role` AS `role`,`account`.`user`.`active` AS `active`,`account`.`user`.`recoverPass` AS `recoverPass`,`account`.`user`.`lastPassChange` AS `lastPassChange` from `account`.`user` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `vehicle` +-- + +/*!50001 DROP VIEW IF EXISTS `vehicle`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `vehicle` AS select `v`.`Id_Vehiculo` AS `id`,`v`.`Matricula` AS `numberPlate`,`v`.`Marca` AS `tradeMark`,`v`.`Modelo` AS `model`,`v`.`empresa_id` AS `companyFk`,`v`.`warehouseFk` AS `warehouseFk`,`v`.`description` AS `description`,`v`.`m3` AS `m3`,`v`.`active` AS `isActive` from `vn2008`.`Vehiculos` `v` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `warehouse` +-- + +/*!50001 DROP VIEW IF EXISTS `warehouse`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `warehouse` AS select `t`.`id` AS `id`,`t`.`name` AS `name`,`t`.`inventario` AS `isInventory`,`t`.`comisionantes` AS `hasComission` from `vn2008`.`warehouse` `t` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `warehouseAlias` +-- + +/*!50001 DROP VIEW IF EXISTS `warehouseAlias`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `warehouseAlias` AS select `wa`.`warehouse_alias_id` AS `id`,`wa`.`alias` AS `name` from `vn2008`.`warehouse_alias` `wa` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `worker` +-- + +/*!50001 DROP VIEW IF EXISTS `worker`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `worker` AS select `t`.`Id_Trabajador` AS `id`,`t`.`CodigoTrabajador` AS `workerCode`,`t`.`Nombre` AS `firstName`,`t`.`Apellidos` AS `name`,`t`.`user_id` AS `userFk`,`t`.`boss` AS `bossFk` from `vn2008`.`Trabajadores` `t` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `workerTeam` +-- + +/*!50001 DROP VIEW IF EXISTS `workerTeam`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `workerTeam` AS select `w`.`team` AS `team`,`w`.`user` AS `user`,`w`.`id` AS `id`,`t`.`Id_Trabajador` AS `Id_Trabajador` from (`vn2008`.`workerTeam` `w` left join `vn2008`.`Trabajadores` `t` on((`t`.`user_id` = `w`.`user`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Current Database: `salix` +-- + +USE `salix`; + +-- +-- Final view structure for view `Account` +-- + +/*!50001 DROP VIEW IF EXISTS `Account`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Account` AS select `u`.`id` AS `id`,`u`.`name` AS `name`,`u`.`password` AS `password`,`u`.`role` AS `roleFk`,`u`.`active` AS `active`,`u`.`email` AS `email`,`u`.`created` AS `created`,`u`.`updated` AS `updated` from `account`.`user` `u` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Accounting` +-- + +/*!50001 DROP VIEW IF EXISTS `Accounting`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Accounting` AS select `b`.`Id_Banco` AS `id`,`b`.`Banco` AS `bank`,`b`.`Cuenta` AS `account`,`b`.`cash` AS `accountingTypeFk`,`b`.`entity_id` AS `entityFk`,`b`.`activo` AS `isActive` from `vn2008`.`Bancos` `b` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Address` +-- + +/*!50001 DROP VIEW IF EXISTS `Address`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Address` AS select `a`.`id_consigna` AS `id`,`a`.`consignatario` AS `consignee`,`a`.`domicilio` AS `street`,`a`.`poblacion` AS `city`,`a`.`codPostal` AS `postcode`,`a`.`province_id` AS `provinceFk`,`a`.`telefono` AS `phone`,`a`.`movil` AS `mobile`,`a`.`active` AS `isEnabled`,`a`.`predeterminada` AS `isDefaultAddress`,`a`.`Id_cliente` AS `clientFk`,`a`.`Id_Agencia` AS `defaultAgencyFk`,`a`.`longitude` AS `longitude`,`a`.`latitude` AS `latitude`,`a`.`isEqualizated` AS `isEqualizated` from `vn2008`.`Consignatarios` `a` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Agency` +-- + +/*!50001 DROP VIEW IF EXISTS `Agency`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Agency` AS select `a`.`agency_id` AS `id`,`a`.`name` AS `name`,`a`.`warehouse_id` AS `warehouseFk`,`a`.`por_volumen` AS `isVolumetric`,`a`.`Id_Banco` AS `bankFk`,`a`.`warehouse_alias_id` AS `warehouseAliasFk` from `vn2008`.`agency` `a` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `AgencyMode` +-- + +/*!50001 DROP VIEW IF EXISTS `AgencyMode`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `AgencyMode` AS select `a`.`Id_Agencia` AS `id`,`a`.`Agencia` AS `name`,`a`.`description` AS `description`,`a`.`Vista` AS `agencyTypeFk`,`a`.`m3` AS `m3`,`a`.`agency_id` AS `agencyFk`,`a`.`inflacion` AS `inflation`,`a`.`send_mail` AS `sendMailTo`,`a`.`tpv` AS `isForTicket` from `vn2008`.`Agencias` `a` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Bank` +-- + +/*!50001 DROP VIEW IF EXISTS `Bank`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Bank` AS select `b`.`Id_Banco` AS `id`,`b`.`Banco` AS `bank`,`b`.`Cuenta` AS `account`,`b`.`cash` AS `cash`,`b`.`entity_id` AS `entityFk`,`b`.`activo` AS `isActive` from `vn2008`.`Bancos` `b` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `City` +-- + +/*!50001 DROP VIEW IF EXISTS `City`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `City` AS select `c`.`city_id` AS `id`,`c`.`name` AS `name`,`c`.`province_id` AS `provinceFk` from `vn2008`.`city` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Client` +-- + +/*!50001 DROP VIEW IF EXISTS `Client`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Client` AS select `c`.`id_cliente` AS `id`,`c`.`cliente` AS `name`,`c`.`if` AS `fi`,`c`.`razonSocial` AS `socialName`,`c`.`contacto` AS `contact`,`c`.`domicilio` AS `street`,`c`.`poblacion` AS `city`,`c`.`codPostal` AS `postcode`,`c`.`province_id` AS `provinceFk`,`c`.`Id_Pais` AS `countryFk`,`c`.`e-mail` AS `email`,`c`.`telefono` AS `phone`,`c`.`movil` AS `mobile`,`c`.`fax` AS `fax`,`c`.`activo` AS `active`,`c`.`descuento` AS `discount`,`c`.`credito` AS `credit`,`c`.`creditInsurance` AS `creditInsurance`,`c`.`cc` AS `iban`,`c`.`vencimiento` AS `dueDay`,`c`.`RE` AS `equalizationTax`,`c`.`invoice` AS `hasToInvoice`,`c`.`mail` AS `invoiceByEmail`,`c`.`pay_met_id` AS `payMethodFk`,`c`.`Id_Trabajador` AS `salesPersonFk`,`c`.`chanel_id` AS `contactChannelFk`,`c`.`sepaVnl` AS `sepaVnl`,`c`.`coreVnl` AS `coreVnl`,`c`.`coreVnh` AS `coreVnh`,`c`.`EYPBC` AS `eypbc`,`c`.`calidad` AS `quality`,`c`.`vies` AS `vies`,`c`.`real` AS `isRelevant`,`c`.`clientes_tipo_id` AS `typeFk`,`c`.`Cuenta` AS `accountingAccount`,`c`.`created` AS `created` from `vn2008`.`Clientes` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ClientCredit` +-- + +/*!50001 DROP VIEW IF EXISTS `ClientCredit`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ClientCredit` AS select `c`.`id` AS `id`,`c`.`Id_Cliente` AS `clientFk`,`c`.`Id_Trabajador` AS `employeeFk`,`c`.`amount` AS `amount`,`c`.`odbc_date` AS `created` from `vn2008`.`credit` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ClientCreditLimit` +-- + +/*!50001 DROP VIEW IF EXISTS `ClientCreditLimit`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ClientCreditLimit` AS select `l`.`id` AS `id`,`l`.`maxAmount` AS `maxAmount`,`l`.`roleFk` AS `roleFk` from `vn`.`clientCreditLimit` `l` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ClientObservation` +-- + +/*!50001 DROP VIEW IF EXISTS `ClientObservation`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ClientObservation` AS select `o`.`client_observation_id` AS `id`,`o`.`Id_Cliente` AS `clientFk`,`o`.`Id_Trabajador` AS `employeeFk`,`o`.`text` AS `text`,`o`.`odbc_date` AS `created` from `vn2008`.`client_observation` `o` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ClientType` +-- + +/*!50001 DROP VIEW IF EXISTS `ClientType`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ClientType` AS select `ct`.`clientes_tipo_id` AS `id`,`ct`.`code` AS `code`,`ct`.`tipo` AS `type` from `vn2008`.`clientes_tipo` `ct` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ContactChannel` +-- + +/*!50001 DROP VIEW IF EXISTS `ContactChannel`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ContactChannel` AS select `c`.`chanel_id` AS `id`,`c`.`name` AS `name` from `vn2008`.`chanel` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Country` +-- + +/*!50001 DROP VIEW IF EXISTS `Country`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Country` AS select `c`.`Id` AS `id`,`c`.`Pais` AS `name`,`c`.`CEE` AS `inCee`,`c`.`Codigo` AS `code`,`c`.`Id_Moneda` AS `currencyFk`,`c`.`Id_Paisreal` AS `realCountryFk` from `vn2008`.`Paises` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `CreditClassification` +-- + +/*!50001 DROP VIEW IF EXISTS `CreditClassification`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `CreditClassification` AS select `vn`.`creditClassification`.`id` AS `id`,`vn`.`creditClassification`.`client` AS `clientFk`,`vn`.`creditClassification`.`dateStart` AS `started`,`vn`.`creditClassification`.`dateEnd` AS `ended` from `vn`.`creditClassification` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Employee` +-- + +/*!50001 DROP VIEW IF EXISTS `Employee`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Employee` AS select `e`.`Id_Trabajador` AS `id`,`e`.`Nombre` AS `name`,`e`.`Apellidos` AS `surname`,`e`.`user_id` AS `userFk` from `vn2008`.`Trabajadores` `e` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `PayMethod` +-- + +/*!50001 DROP VIEW IF EXISTS `PayMethod`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `PayMethod` AS select `m`.`id` AS `id`,`m`.`name` AS `name`,`m`.`graceDays` AS `graceDays`,`m`.`deudaviva` AS `outstandingDebt`,`m`.`ibanRequired` AS `ibanRequired` from `vn2008`.`pay_met` `m` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Province` +-- + +/*!50001 DROP VIEW IF EXISTS `Province`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Province` AS select `p`.`province_id` AS `id`,`p`.`name` AS `name`,`p`.`Paises_Id` AS `countryFk`,`p`.`warehouse_id` AS `warehouseFk`,`p`.`zone` AS `zoneFk` from `vn2008`.`province` `p` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Role` +-- + +/*!50001 DROP VIEW IF EXISTS `Role`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Role` AS select `r`.`id` AS `id`,`r`.`name` AS `name`,`r`.`description` AS `description`,`r`.`created` AS `created`,`r`.`modified` AS `modified` from `account`.`role` `r` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `RoleMapping` +-- + +/*!50001 DROP VIEW IF EXISTS `RoleMapping`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `RoleMapping` AS select ((`u`.`id` * 1000) + `r`.`inheritsFrom`) AS `id`,'USER' AS `principalType`,`u`.`id` AS `principalId`,`r`.`inheritsFrom` AS `roleId` from (`account`.`user` `u` join `account`.`roleRole` `r` on((`r`.`role` = `u`.`role`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Route` +-- + +/*!50001 DROP VIEW IF EXISTS `Route`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Route` AS select `r`.`Id_Ruta` AS `id`,`r`.`Fecha` AS `date` from `vn2008`.`Rutas` `r` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `State` +-- + +/*!50001 DROP VIEW IF EXISTS `State`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `State` AS select `s`.`id` AS `id`,`s`.`name` AS `name`,`s`.`order` AS `order`,`s`.`alert_level` AS `alertLevel`,`s`.`code` AS `code` from `vn2008`.`state` `s` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Ticket` +-- + +/*!50001 DROP VIEW IF EXISTS `Ticket`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Ticket` AS select `t`.`Id_Ticket` AS `id`,`t`.`Id_Agencia` AS `agencyFk`,`t`.`Id_Trabajador` AS `employeeFk`,`t`.`Fecha` AS `date`,`t`.`Hora` AS `hour`,`t`.`Id_Cliente` AS `clientFk`,`t`.`Id_Consigna` AS `addressFk` from `vn2008`.`Tickets` `t` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `TicketState` +-- + +/*!50001 DROP VIEW IF EXISTS `TicketState`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `TicketState` AS select `i`.`inter_id` AS `id`,`i`.`Id_Ticket` AS `ticketFk`,`i`.`state_id` AS `stateFk`,`i`.`Id_Trabajador` AS `employeeFk`,`i`.`odbc_date` AS `updated` from `vncontrol`.`inter` `i` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Vehicle` +-- + +/*!50001 DROP VIEW IF EXISTS `Vehicle`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Vehicle` AS select `v`.`Id_Vehiculo` AS `id`,`v`.`Matricula` AS `numberPlate`,`v`.`Marca` AS `tradeMark`,`v`.`Modelo` AS `model`,`v`.`empresa_id` AS `companyFk`,`v`.`warehouseFk` AS `warehouseFk`,`v`.`description` AS `description`,`v`.`m3` AS `m3`,`v`.`active` AS `isActive` from `vn2008`.`Vehiculos` `v` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Warehouse` +-- + +/*!50001 DROP VIEW IF EXISTS `Warehouse`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Warehouse` AS select `w`.`id` AS `id`,`w`.`name` AS `name`,`w`.`tpv` AS `tpv`,`w`.`inventario` AS `inventory`,`w`.`isManaged` AS `isManaged` from `vn2008`.`warehouse` `w` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `WarehouseAlias` +-- + +/*!50001 DROP VIEW IF EXISTS `WarehouseAlias`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `WarehouseAlias` AS select `wa`.`warehouse_alias_id` AS `id`,`wa`.`alias` AS `name` from `vn2008`.`warehouse_alias` `wa` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Worker` +-- + +/*!50001 DROP VIEW IF EXISTS `Worker`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Worker` AS select `e`.`Id_Trabajador` AS `id`,`e`.`Nombre` AS `name`,`e`.`Apellidos` AS `surname`,`e`.`user_id` AS `userFk` from `vn2008`.`Trabajadores` `e` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `Zone` +-- + +/*!50001 DROP VIEW IF EXISTS `Zone`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `Zone` AS select `z`.`zone_id` AS `id`,`z`.`name` AS `name`,`z`.`printingOrder` AS `printingOrder` from `vn2008`.`zones` `z` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Current Database: `bs` +-- + +USE `bs`; + +-- +-- Final view structure for view `VentasPorCliente` +-- + +/*!50001 DROP VIEW IF EXISTS `VentasPorCliente`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `VentasPorCliente` AS select `v`.`Id_Cliente` AS `Id_Cliente`,round(sum(`v`.`importe`),0) AS `VentaBasica`,`t`.`year` AS `year`,`t`.`month` AS `month` from (`vn2008`.`time` `t` join `bs`.`ventas` `v` on((`v`.`fecha` = `t`.`date`))) group by `v`.`Id_Cliente`,`t`.`year`,`t`.`month` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `v_ventas` +-- + +/*!50001 DROP VIEW IF EXISTS `v_ventas`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `v_ventas` AS select (`bs`.`ventas`.`importe` * `vn2008`.`Movimientos`.`Cantidad`) AS `importe`,`bs`.`ventas`.`recargo` AS `recargo`,`vn2008`.`time`.`year` AS `year`,`vn2008`.`time`.`month` AS `month`,`vn2008`.`time`.`week` AS `week`,`vn2008`.`time`.`day` AS `day` from ((`bs`.`ventas` join `vn2008`.`time` on((`vn2008`.`time`.`date` = `bs`.`ventas`.`fecha`))) join `vn2008`.`Movimientos` on((`bs`.`ventas`.`Id_Movimiento` = `vn2008`.`Movimientos`.`Id_Movimiento`))) group by `vn2008`.`time`.`date` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Current Database: `account` +-- + +USE `account`; + +-- +-- Final view structure for view `accountDovecot` +-- + +/*!50001 DROP VIEW IF EXISTS `accountDovecot`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `accountDovecot` AS select `u`.`name` AS `name`,`u`.`password` AS `password` from (`user` `u` join `account` `a` on((`a`.`id` = `u`.`id`))) where `u`.`active` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `accountNss` +-- + +/*!50001 DROP VIEW IF EXISTS `accountNss`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `accountNss` AS select `u`.`name` AS `surname`,`u`.`name` AS `name`,`u`.`password` AS `password`,concat(`c`.`homedir`,'/',`u`.`name`) AS `home`,`c`.`shell` AS `shell`,`c`.`min` AS `min`,`c`.`max` AS `max`,`c`.`warn` AS `warn`,`c`.`inact` AS `inact` from ((`user` `u` join `account` `a` on((`u`.`id` = `a`.`id`))) join `accountConfig` `c`) where (`u`.`active` <> 0) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `accountPam` +-- + +/*!50001 DROP VIEW IF EXISTS `accountPam`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `accountPam` AS select `u`.`name` AS `name`,`u`.`password` AS `password` from (`user` `u` join `account` `a` on((`u`.`id` = `a`.`id`))) where (`u`.`active` <> 0) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `userRole` +-- + +/*!50001 DROP VIEW IF EXISTS `userRole`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `userRole` AS select `r`.`inheritsFrom` AS `id` from (`roleRole` `r` join `user` `u` on((`u`.`role` = `r`.`role`))) where (`u`.`id` = `USERGETID`()) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `userView` +-- + +/*!50001 DROP VIEW IF EXISTS `userView`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `userView` AS select `u`.`id` AS `id`,`u`.`name` AS `name`,`u`.`active` AS `active`,`u`.`email` AS `email`,`u`.`role` AS `role`,`u`.`recoverPass` AS `recoverPass` from `user` `u` where (`u`.`name` = `account`.`userGetName`()) */ +/*!50002 WITH CASCADED CHECK OPTION */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Current Database: `cache` +-- + +USE `cache`; + +-- +-- Current Database: `pbx` +-- + +USE `pbx`; + +-- +-- Final view structure for view `cdrConf` +-- + +/*!50001 DROP VIEW IF EXISTS `cdrConf`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `cdrConf` AS select `c`.`call_date` AS `calldate`,`c`.`clid` AS `clid`,`c`.`src` AS `src`,`c`.`dst` AS `dst`,`c`.`dcontext` AS `dcontext`,`c`.`channel` AS `channel`,`c`.`dst_channel` AS `dstchannel`,`c`.`last_app` AS `lastapp`,`c`.`last_data` AS `lastdata`,`c`.`duration` AS `duration`,`c`.`billsec` AS `billsec`,`c`.`disposition` AS `disposition`,`c`.`ama_flags` AS `amaflags`,`c`.`account_code` AS `accountcode`,`c`.`unique_id` AS `uniqueid`,`c`.`user_field` AS `userfield` from `cdr` `c` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `followmeConf` +-- + +/*!50001 DROP VIEW IF EXISTS `followmeConf`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `followmeConf` AS select `f`.`extension` AS `name`,`c`.`music` AS `music`,`c`.`context` AS `context`,`c`.`takeCall` AS `takecall`,`c`.`declineCall` AS `declinecall` from (`followme` `f` join `followmeConfig` `c`) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `followmeNumberConf` +-- + +/*!50001 DROP VIEW IF EXISTS `followmeNumberConf`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `followmeNumberConf` AS select `f`.`extension` AS `name`,1 AS `ordinal`,`f`.`phone` AS `phonenumber`,`c`.`timeout` AS `timeout` from (`followme` `f` join `followmeConfig` `c`) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `queueConf` +-- + +/*!50001 DROP VIEW IF EXISTS `queueConf`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `queueConf` AS select `q`.`name` AS `name`,`c`.`strategy` AS `strategy`,`c`.`timeout` AS `timeout`,`c`.`retry` AS `retry`,`c`.`weight` AS `weight`,`c`.`maxLen` AS `maxlen`,`c`.`ringInUse` AS `ringinuse` from (`queue` `q` join `queueConfig` `c` on((`q`.`config` = `c`.`id`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `queueMemberConf` +-- + +/*!50001 DROP VIEW IF EXISTS `queueMemberConf`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `queueMemberConf` AS select `m`.`id` AS `uniqueid`,`m`.`queue` AS `queue_name`,concat('SIP/',`m`.`extension`) AS `interface` from `queueMember` `m` union all select `p`.`id` AS `id`,`p`.`queue` AS `queue`,concat('Local/',`p`.`phone`,'@outgoing') AS `phone` from `queuePhone` `p` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `sipConf` +-- + +/*!50001 DROP VIEW IF EXISTS `sipConf`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `sipConf` AS select `s`.`user_id` AS `id`,`s`.`extension` AS `name`,`s`.`secret` AS `secret`,`s`.`caller_id` AS `callerid`,`c`.`host` AS `host`,`c`.`deny` AS `deny`,`c`.`permit` AS `permit`,`c`.`type` AS `type`,`c`.`context` AS `context`,`c`.`incomingLimit` AS `incominglimit`,`c`.`pickupGroup` AS `pickupgroup`,`c`.`careInvite` AS `careinvite`,`r`.`ipAddr` AS `ipaddr`,`r`.`regSeconds` AS `regseconds`,`r`.`port` AS `port`,`r`.`defaultUser` AS `defaultuser`,`r`.`userAgent` AS `useragent`,`r`.`lastMs` AS `lastms`,`r`.`fullContact` AS `fullcontact`,`r`.`regServer` AS `regserver` from ((`sip` `s` left join `sipReg` `r` on((`s`.`user_id` = `r`.`userId`))) join `sipConfig` `c`) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Current Database: `hedera` +-- + +USE `hedera`; + +-- +-- Final view structure for view `address_view` +-- + +/*!50001 DROP VIEW IF EXISTS `address_view`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `address_view` AS select `a`.`id_consigna` AS `id`,`a`.`Id_cliente` AS `customer_id`,`a`.`warehouse_id` AS `warehouse_id`,`a`.`domicilio` AS `name`,`a`.`poblacion` AS `city`,`a`.`province_id` AS `province_id`,`a`.`codPostal` AS `zip_code`,`a`.`consignatario` AS `consignee`,`a`.`predeterminada` AS `default`,`a`.`Id_Agencia` AS `type_id`,`a`.`especificaciones` AS `specs`,`a`.`seguro` AS `insurance`,`a`.`porte` AS `postage`,`a`.`active` AS `active` from `vn2008`.`Consignatarios` `a` where (`a`.`Id_cliente` = `account`.`userGetId`()) */ +/*!50002 WITH CASCADED CHECK OPTION */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `basket` +-- + +/*!50001 DROP VIEW IF EXISTS `basket`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `basket` AS select `o`.`id` AS `id`,`o`.`date_make` AS `date_make`,`o`.`date_send` AS `date_send`,`o`.`customer_id` AS `customer_id`,`o`.`delivery_method_id` AS `delivery_method_id`,`o`.`agency_id` AS `agency_id`,`o`.`address_id` AS `address_id`,`o`.`company_id` AS `company_id`,`o`.`note` AS `note` from `hedera`.`order` `o` where (`o`.`id` = `basketGetId`()) */ +/*!50002 WITH CASCADED CHECK OPTION */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `basket_defaults` +-- + +/*!50001 DROP VIEW IF EXISTS `basket_defaults`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `basket_defaults` AS select `ad`.`id_consigna` AS `address_id`,`ad`.`Id_Agencia` AS `agency_id`,`v`.`code` AS `delivery_method` from (((`vn2008`.`Clientes` `c` left join `vn2008`.`Consignatarios` `ad` on((`ad`.`id_consigna` = `c`.`default_address`))) join `vn2008`.`Agencias` `a` on((`a`.`Id_Agencia` = `ad`.`Id_Agencia`))) join `vn2008`.`Vistas` `v` on((`v`.`vista_id` = `a`.`Vista`))) where (`c`.`id_cliente` = `account`.`userGetId`()) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `basket_item` +-- + +/*!50001 DROP VIEW IF EXISTS `basket_item`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `basket_item` AS select `r`.`id` AS `id`,`r`.`order_id` AS `order_id`,`r`.`warehouse_id` AS `warehouse_id`,`r`.`item_id` AS `item_id`,`r`.`amount` AS `amount`,`r`.`price` AS `price` from `hedera`.`order_row` `r` where (`r`.`order_id` = `basketGetId`()) */ +/*!50002 WITH CASCADED CHECK OPTION */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `customer_user` +-- + +/*!50001 DROP VIEW IF EXISTS `customer_user`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `customer_user` AS select `c`.`id_cliente` AS `user_id`,`c`.`cliente` AS `name` from `vn2008`.`Clientes` `c` where (`c`.`id_cliente` = `account`.`userGetId`()) */ +/*!50002 WITH CASCADED CHECK OPTION */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `customer_view` +-- + +/*!50001 DROP VIEW IF EXISTS `customer_view`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `customer_view` AS select `c`.`id_cliente` AS `user_id`,`c`.`cliente` AS `name`,`c`.`e-mail` AS `email`,`c`.`mail` AS `mail`,`c`.`default_address` AS `default_address`,`c`.`credito` AS `credit` from `vn2008`.`Clientes` `c` where (`c`.`id_cliente` = `account`.`userGetId`()) */ +/*!50002 WITH CASCADED CHECK OPTION */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `invoice_view` +-- + +/*!50001 DROP VIEW IF EXISTS `invoice_view`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `invoice_view` AS select `i`.`factura_id` AS `invoice_id`,`i`.`Id_Factura` AS `serial_num`,`i`.`Fecha` AS `issued`,`i`.`Importe` AS `amount` from `vn2008`.`Facturas` `i` where ((`i`.`Id_Cliente` = `account`.`userGetId`()) and `i`.`pdf`) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `order_confirm_time` +-- + +/*!50001 DROP VIEW IF EXISTS `order_confirm_time`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `order_confirm_time` AS select `o`.`date_make` AS `date_make`,`o`.`source_app` AS `source_app`,`o`.`customer_id` AS `customer_id`,`o`.`confirm_date` AS `confirm_date`,`o`.`first_row_stamp` AS `first_row_stamp`,(ceiling((((unix_timestamp(`o`.`confirm_date`) - unix_timestamp(`o`.`first_row_stamp`)) / 60) / 5)) * 5) AS `minutos` from `order` `o` where ((`o`.`confirm_date` is not null) and (`o`.`first_row_stamp` is not null)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `order_row_view` +-- + +/*!50001 DROP VIEW IF EXISTS `order_row_view`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `order_row_view` AS select `r`.`id` AS `id`,`r`.`order_id` AS `order_id`,`r`.`warehouse_id` AS `warehouse_id`,`r`.`item_id` AS `item_id`,`r`.`amount` AS `amount`,`r`.`price` AS `price2` from `hedera`.`order_row` `r` where `r`.`order_id` in (select `order_view`.`id` AS `id` from `hedera`.`order_view`) */ +/*!50002 WITH CASCADED CHECK OPTION */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `order_view` +-- + +/*!50001 DROP VIEW IF EXISTS `order_view`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `order_view` AS select `o`.`id` AS `id`,`o`.`date_make` AS `date_make`,`o`.`date_send` AS `date_send`,`o`.`customer_id` AS `customer_id`,`o`.`delivery_method_id` AS `delivery_method_id`,`o`.`agency_id` AS `agency_id`,`o`.`note` AS `note`,`o`.`address_id` AS `address_id`,`o`.`company_id` AS `company_id` from `hedera`.`order` `o` where ((`o`.`customer_id` = `account`.`userGetId`()) and (`o`.`is_bionic` = 0)) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ticket_row_view` +-- + +/*!50001 DROP VIEW IF EXISTS `ticket_row_view`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticket_row_view` AS select `m`.`Id_Movimiento` AS `id`,`m`.`Id_Article` AS `item_id`,`m`.`Id_Ticket` AS `ticket_id`,`m`.`Concepte` AS `concept`,`m`.`Cantidad` AS `amount`,`m`.`Preu` AS `price`,`m`.`PrecioFijado` AS `fixed`,`m`.`Descuento` AS `discount`,`m`.`CostFixat` AS `cost`,`m`.`Reservado` AS `reserved`,`m`.`OK` AS `ok` from (`vn2008`.`Movimientos` `m` join `hedera`.`ticket_view` `t` on((`m`.`Id_Ticket` = `t`.`id`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `ticket_view` +-- + +/*!50001 DROP VIEW IF EXISTS `ticket_view`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticket_view` AS select `t`.`Id_Ticket` AS `id`,`t`.`Id_Cliente` AS `customer_id`,`t`.`warehouse_id` AS `warehouse_id`,`t`.`Fecha` AS `date`,`t`.`landing` AS `delivery`,`t`.`Alias` AS `alias`,`t`.`Id_Agencia` AS `agency_id`,`t`.`Notas` AS `note`,`t`.`Factura` AS `invoice`,`t`.`Id_Consigna` AS `address_id`,`t`.`Id_Trabajador` AS `employee_id`,`t`.`Observaciones` AS `comments`,`t`.`Firmado` AS `signed`,`t`.`Bultos` AS `packages`,`t`.`Localizacion` AS `location`,`t`.`Hora` AS `hour`,`t`.`blocked` AS `blocked`,`t`.`Solucion` AS `solution`,`t`.`empresa_id` AS `company_id`,`a`.`Agencia` AS `type` from (`vn2008`.`Tickets` `t` join `vn2008`.`Agencias` `a` on((`t`.`Id_Agencia` = `a`.`Id_Agencia`))) where (`t`.`Id_Cliente` = `account`.`userGetId`()) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `tpv_transaction_view` +-- + +/*!50001 DROP VIEW IF EXISTS `tpv_transaction_view`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `tpv_transaction_view` AS select `t`.`id` AS `id`,`t`.`merchant_id` AS `merchant_id`,`t`.`customer_id` AS `customer_id`,`t`.`receipt_id` AS `receipt_id`,`t`.`amount` AS `amount`,`t`.`response` AS `response`,`t`.`status` AS `status`,`t`.`date_time` AS `date_time` from `hedera`.`tpv_transaction` `t` where (`t`.`customer_id` = `account`.`userGetId`()) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + +-- +-- Final view structure for view `user_android_view` +-- + +/*!50001 DROP VIEW IF EXISTS `user_android_view`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `user_android_view` AS select `a`.`user_id` AS `user_id`,`a`.`android_id` AS `android_id` from `hedera`.`user_android` `a` where (`a`.`user_id` = `account`.`userGetId`()) */ +/*!50002 WITH CASCADED CHECK OPTION */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!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 2017-10-10 13:39:29 diff --git a/services/db/localDB02Inserts.sql b/services/db/localDB02Inserts.sql new file mode 100644 index 000000000..dc859bfbf --- /dev/null +++ b/services/db/localDB02Inserts.sql @@ -0,0 +1,498 @@ +INSERT INTO `account`.`role`(`id`, `name`, `description`) + VALUES + (1, 'employee', 'Privilegios básicos de un empleado'), + (2, 'customer', 'Privilegios básicos de un cliente'), + (3, 'agency', 'Consultar tablas de predicciones de bultos'), + (5, 'administrative', 'Tareas relacionadas con la contabilidad'), + (6, 'guest', 'Privilegios para usuarios sin cuenta'), + (9, 'developer', 'Desarrolladores del sistema'), + (11, 'account', 'Privilegios relacionados con el login'), + (13, 'teamBoss', 'Jefe de departamento'), + (14, 'manageEmployee', 'Privilegios para gestión de empleados'), + (15, 'logistic', 'Departamento de logística'), + (16, 'logisticBoss', 'Jefe del departamento de logística'), + (17, 'adminBoss', 'Jefe del departamento de administración'), + (18, 'salesPerson', 'Departamento de ventas'), + (19, 'salesBoss', 'Jefe del departamento de ventas'), + (20, 'manager', 'Departamento de gerencia'), + (21, 'salesAssistant', 'Jefe auxiliar de ventas'), + (22, 'teamManager', 'Jefe de departamento con privilegios de auxiliar de venta.'), + (30, 'financialBoss', 'Director finaciero'), + (31, 'freelancer', 'Trabajadores por cuenta ajena'), + (32, 'ett', 'Trabajadores de empresa temporal'), + (33, 'root', 'Rol con todos los privilegios'); + +UPDATE `account`.`role` SET `id` = 0 WHERE `id` = 33; + +INSERT INTO `account`.`roleRole`(`role`, `inheritsFrom`) + VALUES + (0, 0), + (0, 1), + (0, 2), + (0, 3), + (0, 5), + (0, 6), + (0, 9), + (0, 11), + (0, 13), + (0, 14), + (0, 15), + (0, 16), + (0, 17), + (0, 18), + (0, 19), + (0, 20), + (0, 21), + (0, 22), + (0, 30), + (0, 31), + (0, 32), + (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, 14), + (5, 18), + (5, 19), + (5, 21), + (6, 6), + (9, 0), + (9, 1), + (9, 2), + (9, 3), + (9, 5), + (9, 6), + (9, 9), + (9, 11), + (9, 13), + (9, 14), + (9, 15), + (9, 16), + (9, 17), + (9, 18), + (9, 19), + (9, 20), + (9, 21), + (9, 22), + (9, 30), + (9, 31), + (9, 32), + (11, 6), + (11, 11), + (13, 1), + (13, 2), + (13, 3), + (13, 6), + (13, 11), + (13, 13), + (13, 14), + (14, 14), + (15, 1), + (15, 2), + (15, 3), + (15, 6), + (15, 11), + (15, 15), + (16, 1), + (16, 2), + (16, 3), + (16, 6), + (16, 11), + (16, 13), + (16, 14), + (16, 15), + (16, 16), + (17, 1), + (17, 2), + (17, 3), + (17, 5), + (17, 6), + (17, 11), + (17, 13), + (17, 14), + (17, 17), + (17, 18), + (17, 19), + (17, 20), + (17, 21), + (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, 14), + (19, 18), + (19, 19), + (19, 21), + (20, 1), + (20, 2), + (20, 3), + (20, 6), + (20, 11), + (20, 13), + (20, 14), + (20, 20), + (21, 1), + (21, 2), + (21, 3), + (21, 6), + (21, 11), + (21, 18), + (21, 21), + (22, 1), + (22, 2), + (22, 3), + (22, 6), + (22, 11), + (22, 13), + (22, 14), + (22, 18), + (22, 21), + (22, 22), + (30, 1), + (30, 2), + (30, 3), + (30, 5), + (30, 6), + (30, 11), + (30, 13), + (30, 14), + (30, 18), + (30, 19), + (30, 20), + (30, 21), + (30, 22), + (30, 30), + (31, 1), + (31, 2), + (31, 3), + (31, 6), + (31, 11), + (31, 31), + (32, 1), + (32, 2), + (32, 3), + (32, 6), + (32, 11), + (32, 32); + +INSERT INTO `account`.`roleInherit`(`role`, `inheritsFrom`) + VALUES + (9, 0), + (5, 1), + (13, 1), + (15, 1), + (18, 1), + (31, 1), + (32, 1), + (1, 2), + (5, 2), + (1, 3), + (17, 5), + (30, 5), + (11, 6), + (1, 11), + (2, 11), + (3, 11), + (16, 13), + (17, 13), + (19, 13), + (20, 13), + (22, 13), + (5, 14), + (13, 14), + (16, 15), + (21, 18), + (5, 19), + (17, 20), + (30, 20), + (19, 21), + (22, 21), + (30, 22); + +INSERT INTO `salix`.`ACL`(`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + (1, 'Account', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (2, 'Account', '*', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + (3, 'Address', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (4, 'Address', '*', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + (5, 'AgencyService', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (6, 'AgencyService', '*', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + (7, 'Client', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (8, 'Client', '*', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + (9, 'ClientObservation', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (10, 'ClientObservation', '*', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + (11, 'ContactChannel', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (12, 'ContactChannel', '*', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + (13, 'Employee', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (14, 'PayMethod', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (15, 'PayMethod', '*', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + (16, 'FakeProduction', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (17, 'Warehouse', '* ', 'READ', 'ALLOW', 'ROLE', 'employee'), + (18, 'State', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (19, 'FakeProduction', '*', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + (20, 'TicketState', '*', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + (22, 'TicketState', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (23, 'TicketState', '*', 'EXECUTE', 'ALLOW', 'ROLE', 'employee'), + (24, 'Delivery', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (25, 'Zone', '*', 'READ', 'ALLOW', 'ROLE', 'employee'); + +INSERT INTO `salix`.`Account`(`id`,`name`,`password`,`roleFk`,`active`,`email`) + VALUES + (1, 'BruceWayne', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'BruceWayne@verdnatura.es'), + (2, 'PetterParker', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'PetterParker@verdnatura.es'), + (3, 'ClarkKent', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'ClarkKent@verdnatura.es'), + (4, 'TonyStark', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'TonyStark@verdnatura.es'), + (5, 'MaxEisenhardt', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'MaxEisenhardt@verdnatura.es'), + (6, 'DavidCharlesHaller', 'ac754a330530832ba1bf7687f577da91', 1, 1, 'DavidCharlesHaller@verdnatura.es'), + (7, 'HankPym', 'ac754a330530832ba1bf7687f577da91', 1, 1, 'HankPym@verdnatura.es'), + (8, 'CharlesXavier', 'ac754a330530832ba1bf7687f577da91', 18, 1, 'CharlesXavier@verdnatura.es'), + (9, 'BruceBanner', 'ac754a330530832ba1bf7687f577da91', 1, 1, 'BruceBanner@verdnatura.es'), + (10, 'JessicaJones', 'ac754a330530832ba1bf7687f577da91', 9, 1, 'JessicaJones@verdnatura.es'); + +INSERT INTO `salix`.`Country`(`id`, `name`, `inCee`, `code`, `currencyFk`, `realCountryFk`) + VALUES + (1, 'España', 0, 'ES', 1, 1), + (2, 'Italia', 1, 'IT', 1, 2), + (3, 'Alemania', 1, 'DE', 1, 3), + (4, 'Rumania', 1, 'RO', 1, 4), + (5, 'Holanda', 1, 'NL', 1, 5); + +INSERT INTO `salix`.`Warehouse`(`id`, `name`, `tpv`, `inventory`, `isManaged`) + VALUES + (1, 'Warehouse One', 01, 1, 1), + (2, 'Warehouse Two', 01, 1, 1), + (3, 'Warehouse Three', 01, 1, 1), + (4, 'Warehouse Four', 01, 1, 1), + (5, 'Warehouse Five', 01, 1, 0); + +INSERT INTO `salix`.`WarehouseAlias`(`id`, `name`) + VALUES + (1, 'Main Warehouse'); + +INSERT INTO `vn`.`accountingType`(`id`, `description`) + VALUES + (1, 'Digital money'), + (2, 'Cash'), + (3, 'Card'), + (4, 'Stolen Money'), + (5, 'Miscellaneous'); + +INSERT INTO `salix`.`Bank`(`id`, `bank`, `account`, `cash`, `entityFk`, `isActive`) + VALUES + (8, 'Pay on receipt', '0000000000', 4, 0, 1); + +INSERT INTO `salix`.`Agency`(`id`, `name`, `warehouseFk`, `isVolumetric`, `bankFk`, `warehouseAliasFk`) + VALUES + (1, 'inhouse pickup', 1, 0, 8, 1), + (2, 'Super-Man delivery', 1, 0, 8, 1), + (3, 'Teleportation device', 1, 0, 8, 1), + (4, 'Entanglement', 1, 0, 8, 1), + (5, 'Quantum break device', 1, 0, 8, 1), + (6, 'Walking', 1, 0, 8, 1); + +UPDATE `salix`.`AgencyMode` SET `id` = 1 WHERE `name` = 'inhouse pickup'; +UPDATE `salix`.`AgencyMode` SET `id` = 2 WHERE `name` = 'Super-Man delivery'; +UPDATE `salix`.`AgencyMode` SET `id` = 3 WHERE `name` = 'Teleportation device'; +UPDATE `salix`.`AgencyMode` SET `id` = 4 WHERE `name` = 'Entanglement'; +UPDATE `salix`.`AgencyMode` SET `id` = 5 WHERE `name` = 'Quantum break device'; +UPDATE `salix`.`AgencyMode` SET `id` = 6 WHERE `name` = 'Walking'; + +INSERT INTO `salix`.`PayMethod`(`id`, `name`, `graceDays`, `outstandingDebt`, `ibanRequired`) + VALUES + (1, 'PayMethod one', 0, 001, 0), + (2, 'PayMethod two', 10, 001, 0), + (3, 'PayMethod three', 0, 001, 0), + (4, 'PayMethod four', 0, 001, 1), + (5, 'PayMethod five', 10, 001, 0); + +INSERT INTO `salix`.`Zone`(`id`, `name`, `printingOrder`) + VALUES + (1, 'zone one', 1), + (2, 'zone two', 2), + (3, 'zone three', 3); + +INSERT INTO `salix`.`Province`(`id`, `name`, `countryFk`, `warehouseFk`, `zoneFk`) + VALUES + (1, 'Province one', 1, NULL, 1), + (2, 'Province two', 1, NULL, 2), + (3, 'Province three', 1, NULL, 3), + (4, 'Province four', 1, NULL, 2), + (5, 'Province five', 1, NULL, 1); + +INSERT INTO `salix`.`ClientType`(`id`, `code`, `type`) + VALUES + (1, 'normal', 'Normal'), + (2, 'internalUse', 'Autoconsumo'), + (3, 'handMaking', 'Confección'), + (4, 'loses', 'Mermas'); + +INSERT INTO `salix`.`City`(`id`, `name`, `provinceFk`) + VALUES + (1, 'Gotham', 1); + + +INSERT INTO `vn`.`cplusTerIdNif`(`id`, `description`) + VALUES + (1, 'NIF'); + +INSERT INTO `vn2008`.`Trabajadores`(`CodigoTrabajador`, `Id_Trabajador`, `Nombre`, `Apellidos`, `user`) + VALUES + ('LGN', 1, 'David Charles', 'Haller', 6), + ('ANT', 2, 'Hank', 'Pym', 7), + ('DCX', 3, 'Charles', 'Xavier', 8), + ('HLK', 4, 'Bruce', 'Banner', 9), + ('JJJ', 5, 'Jessica', 'Jones', 10); + +INSERT INTO `salix`.`ContactChannel`(`id`, `name`) + VALUES + (1, 'Rumors on the streets'), + (2, 'Metropolis newspaper'), + (3, 'Daily Bugle'), + (4, 'GCN Channel'), + (5, 'The Newspaper'); + +INSERT INTO `salix`.`Client`(`id`, `name`, `fi`, `socialName`, `contact`, `street`, `city`, `postcode`, `provinceFk`, `countryFk`, `email`, `phone`, `mobile`, `fax`, `active`, `discount`, `credit`, `creditInsurance`, `iban`, `dueDay`, `equalizationTax`, `hasToInvoice`, `invoiceByEmail`, `payMethodFk`, `salesPersonFk`, `contactChannelFk`, `sepaVnl`, `coreVnl`, `coreVnh`, `eypbc`, `quality`, `vies`, `isRelevant`, `typeFk`, `accountingAccount`, `created`) + VALUES + (1, 'Bruce Wayne', '11111111B', 'Batman', 'Alfred', '1007 Mountain Drive, Gotham', 'Silla', 46460, 1, 1, 'BruceWayne@verdnatura.es', 1111111111, 222222222, 333333333, 1, 1, 300, NULL, NULL, 0, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 10, 0, 1, 1, 1234567890, CURDATE()), + (2, 'Petter Parker', '22222222P', 'Spider-Man', 'Aunt May', '20 Ingram Street', 'Silla', 46460, 1, 1, 'PetterParker@verdnatura.es', 1111111111, 222222222, 333333333, 1, 1, 300, NULL, NULL, 0, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 10, 0, 1, 1, 1234567890, CURDATE()), + (3, 'Clark Kent', '33333333C', 'Super-Man', 'lois lane', '344 Clinton Street', 'Silla', 46460, 1, 1, 'ClarkKent@verdnatura.es', 1111111111, 222222222, 333333333, 1, 1, 300, NULL, NULL, 0, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 10, 0, 1, 1, 1234567890, CURDATE()), + (4, 'Tony Stark', '44444444T', 'Iron-Man', 'Pepper Potts', '10880 Malibu Point', 'Silla', 46460, 1, 1, 'TonyStark@verdnatura.es', 1111111111, 222222222, 333333333, 1, 1, 300, NULL, NULL, 0, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 10, 0, 1, 1, 1234567890, CURDATE()), + (5, 'Max Eisenhardt', '55555555M', 'Magneto', 'Rogue', 'Unknown Whereabouts', 'Silla', 46460, 1, 1, 'MaxEisenhardt@verdnatura.es', 1111111111, 222222222, 333333333, 1, 1, 300, NULL, NULL, 0, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 10, 0, 1, 1, 1234567890, CURDATE()), + (6, 'DavidCharlesHaller', '66666666D', 'Legion', 'Charles Xavier', 'Evil hideout', 'Silla', 46460, 1, 1, 'DavidCharlesHaller@verdnatura.es', 1111111111, 222222222, 333333333, 1, 1, 300, NULL, NULL, 0, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 10, 0, 1, 1, 1234567890, CURDATE()), + (7, 'Hank Pym', '77777777H', 'Ant-Man', 'Hawk', 'Anthill', 'Silla', 46460, 1, 1, 'HankPym@verdnatura.es', 1111111111, 222222222, 333333333, 1, 1, 300, NULL, NULL, 0, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 10, 0, 1, 1, 1234567890, CURDATE()), + (8, 'Charles Xavier', '88888888C', 'Professor X', 'Beast', '3800 Victory Pkwy, Cincinnati, OH 45207, USA', 'Silla', 46460, 1, 1, 'CharlesXavier@verdnatura.es', 1111111111, 222222222, 333333333, 1, 1, 300, NULL, NULL, 0, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 10, 0, 1, 1, 1234567890, CURDATE()), + (9, 'Bruce Banner', '99999999B', 'Hulk', 'Black widow', 'Somewhere in New York', 'Silla', 46460, 1, 1, 'BruceBanner@verdnatura.es', 1111111111, 222222222, 333333333, 1, 1, 300, NULL, NULL, 0, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 10, 0, 1, 1, 1234567890, CURDATE()), + (10, 'Jessica Jones', '10101010J', 'Jessica Jones', 'Luke Cage', 'NYCC 2015 Poster', 'Silla', 46460, 1, 1, 'JessicaJones@verdnatura.es', 1111111111, 222222222, 333333333, 1, 1, 300, NULL, NULL, 0, 1, 1, 1, 5, 4, 5, 1, 1, 1, 1, 10, 0, 1, 1, 1234567890, CURDATE()); + +INSERT INTO `salix`.`Address`(`id`, `consignee`, `street`, `city`, `postcode`, `provinceFk`, `phone`, `mobile`, `isEnabled`, `isDefaultAddress`, `clientFk`, `defaultAgencyFk`, `longitude`, `latitude`, `isEqualizated`) + VALUES + (1, 'Bruce Wayne', 'The Bat cave', 'Silla', 46460, 1, NULL, NULL, 1, 1, 1, 2, NULL, NULL, 1), + (2, 'Petter Parker', 'NY roofs', 'Silla', 46460, 1, NULL, NULL, 1, 1, 2, 2, NULL, NULL, 1), + (3, 'Clark Kenn', 'The phone box', 'Silla', 46460, 1, NULL, NULL, 1, 1, 3, 2, NULL, NULL, 1), + (4, 'Tony Stark', 'Stark tower', 'Silla', 46460, 1, NULL, NULL, 1, 1, 4, 2, NULL, NULL, 1), + (5, 'Max Eisenhardt', 'The plastic cell', 'Silla', 46460, 1, NULL, NULL, 1, 1, 5, 2, NULL, NULL, 1), + (6, 'David Charles Haller', 'Many places', 'Silla', 46460, 1, NULL, NULL, 1, 1, 6, 2, NULL, NULL, 1), + (7, 'Hank Pym', 'Your pocket', 'Silla', 46460, 1, NULL, NULL, 1, 1, 7, 2, NULL, NULL, 1), + (8, 'Charles Xavier', 'Cerebro', 'Silla', 46460, 1, NULL, NULL, 1, 1, 8, 2, NULL, NULL, 1), + (9, 'Bruce Banner', 'Somewhere in Thailand', 'Silla', 46460, 1, NULL, NULL, 1, 1, 9, 2, NULL, NULL, 1), + (10,'Jessica Jones', 'Luke Cages Bar', 'Silla', 46460, 1, NULL, NULL, 1, 1, 10, 2, NULL, NULL, 1); + +INSERT INTO `salix`.`ClientCredit`(`id`, `clientFk`, `employeeFk`, `amount`, `created`) + VALUES + (1, 1, 1, 1200, CURDATE()), + (2, 2, 2, 800, CURDATE()), + (3, 3, 3, 200, CURDATE()), + (4, 4, 4, 90, CURDATE()), + (5, 5, 5, 90, CURDATE()); + +INSERT INTO `salix`.`ClientCreditLimit`(`id`, `maxAmount`, `roleFk`) + VALUES + (1, 10000, 5), + (2, 600, 5), + (3, 0, 5); + +INSERT INTO `salix`.`ClientObservation`(`id`, `clientFk`, `employeeFk`, `text`, `created`) + VALUES + (1, 1, 1, 'Madness, as you know, is like gravity, all it takes is a little push', CURDATE()), + (2, 2, 1, 'With great power, comes great responsibility', CURDATE()), + (3, 3, 2, 'this is a job for Super-Man!', CURDATE()), + (4, 4, 2, 'yes... I am Iron-Man', CURDATE()), + (5, 5, 3, 'They do understand. Our mutant powers make us superior', CURDATE()), + (6, 6, 3, 'My name is Legion, for we are many!', CURDATE()), + (7, 7, 4, 'I think our first move should be calling the Avengers..', CURDATE()), + (8, 8, 4, 'Just because someone stumbles and loses their path, does not mean they are lost forever.', CURDATE()), + (9, 9, 5, 'HULK SMASH! ...', CURDATE()), + (10, 10, 5, 'They say everyone is born a hero. But if you let it, life will push you over the line until you are the villain. Problem is, you dont always know that you have crossed that line.', CURDATE()); + +INSERT INTO `vn`.`creditClassification`(`id`, `client`, `dateStart`, `dateEnd`) + VALUES + (1, 1, CURDATE(), CURDATE()), + (2, 2, CURDATE(), CURDATE()), + (3, 3, CURDATE(), CURDATE()), + (4, 4, CURDATE(), CURDATE()), + (5, 5, CURDATE(), CURDATE()); + +INSERT INTO `salix`.`Route`(`id`, `date`) + VALUES + (1, CURDATE()), + (2, CURDATE()), + (3, CURDATE()), + (4, CURDATE()), + (5, CURDATE()), + (6, CURDATE()), + (7, CURDATE()); + +INSERT INTO `salix`.`State`(`id`, `name`, `order`, `alertLevel`, `code`) + VALUES + (1, 'To check', 2, 0, 'FIXING'), + (2, 'Owes', 1, 0, 'FREE'), + (3, 'Ok', 3, 0, 'OK'); + +INSERT INTO `vn2008`.`empresa_grupo`(`empresa_grupo_id`, `grupo`) + VALUES + (1, 'Wayne Industries'); + +INSERT INTO `vn2008`.`empresa`(`id`, `abbreviation`, `registro`, `gerente_id`, `alta`, `baja`, `logo`, `oficial`, `cyc`, `rgb`, `mail`, `cuno`, `ODBC_DATE`, `Id_Cliente`, `digito_factura`, `Id_Proveedores_account`, `morosidad`, `empresa_grupo`) + VALUES + ('442', 'VNL', 'Wayne Industries, Inc. operates as a warehouse for steel products. Wayne Industries, Inc. was founded in 1989 and is based in Wayne, Michigan.', '2', '1989-11-19', NULL, NULL, '1', '1', '00FF00', 'BruceWayne@verdnatura.es', NULL, '1989-08-11 12:31:22', '10', '1', NULL, '1', '1'); + + INSERT INTO `salix`.`Ticket`(`id`, `agencyFk`, `employeeFk`, `date`, `hour`, `clientFk`, `addressFk`) + VALUES + (1, 1, 1, CURDATE(), 0, 1, 1), + (2, 1, 1, CURDATE(), 0, 1, 2), + (3, 2, 2, CURDATE(), 0, 2, 3), + (4, 2, 2, CURDATE(), 0, 2, 4), + (5, 3, 3, CURDATE(), 0, 3, 5), + (6, 3, 3, CURDATE(), 0, 3, 6), + (7, 4, 4, CURDATE(), 0, 4, 7), + (8, 4, 4, CURDATE(), 0, 4, 8), + (9, 5, 5, CURDATE(), 0, 5, 9), + (10, 6, 5, CURDATE(), 0, 5, 10); + +INSERT INTO `salix`.`TicketState`(`id`, `ticketFk`, `stateFk`, `employeeFk`, `updated`) + VALUES + (1, 1, 1, 1, CURDATE()), + (2, 2, 2, 1, CURDATE()), + (3, 3, 3, 2, CURDATE()), + (4, 4, 1, 2, CURDATE()), + (5, 5, 2, 3, CURDATE()), + (6, 6, 3, 3, CURDATE()), + (7, 7, 1, 4, CURDATE()), + (8, 8, 2, 4, CURDATE()), + (9, 9, 3, 5, CURDATE()), + (10, 10, 1, 5, CURDATE()); + +INSERT INTO `salix`.`Vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk`, `warehouseFk`, `description`, `m3`, `isActive`) + VALUES + (1, '3333-BAT', 'WAYNE INDUSTRIES', 'BATMOBILE', 442, 1, 'The ultimate war machine', 50, 1), + (2, '1111-IMK', 'STARK INDUSTRIES', 'MARK-III', 442, 1, 'Iron-Man Heavy Armor MARK-III', 18, 1), + (3, '2222-IMK', 'STARK INDUSTRIES', 'MARK-VI', 442, 1, 'Iron-Man Heavy Armor MARK-VI', 16, 1), + (4, '3333-IMK', 'STARK INDUSTRIES', 'MARK-VII', 442, 1, 'Iron-Man Heavy Armor MARK-VII', 14, 1), + (5, '4444-IMK', 'STARK INDUSTRIES', 'MARK-XLII', 442, 1, 'Iron-Man Heavy Armor MARK-XLII', 13, 1), + (6, '5555-IMK', 'STARK INDUSTRIES', 'MARK-XLV', 442, 1, 'Iron-Man Heavy Armor MARK-XLV', 12, 1); + +INSERT INTO `vn`.`config`(`id`, `mdbServer`, `fakeEmail`, `defaultersMaxAmount`) + VALUES +(1, 'beta-server', 'nightmare@verdnatura.es', '200'); \ No newline at end of file diff --git a/services/loopback/common/models/account.json b/services/loopback/common/models/account.json index 672053565..c0f1eb926 100644 --- a/services/loopback/common/models/account.json +++ b/services/loopback/common/models/account.json @@ -18,8 +18,7 @@ "type": "boolean" }, "email": { - "type": "string", - "required": true + "type": "string" }, "created": { "type": "date" diff --git a/services/loopback/common/models/vn-model.js b/services/loopback/common/models/vn-model.js index 740e41a36..3305cb67d 100644 --- a/services/loopback/common/models/vn-model.js +++ b/services/loopback/common/models/vn-model.js @@ -2,7 +2,7 @@ module.exports = function(Self) { Self.setup = function() { Self.super_.setup.call(this); - let disableMethods = { + /* let disableMethods = { create: true, replaceOrCreate: true, patchOrCreate: true, @@ -22,7 +22,7 @@ module.exports = function(Self) { }; for (let method in disableMethods) { // this.disableRemoteMethod(method, disableMethods[method]); - } + } */ }; Self.defineScope = function(serverFilter) { @@ -45,18 +45,20 @@ module.exports = function(Self) { }); this.list = function(ctx, clientFilter, cb) { - var clientFields = (clientFilter && clientFilter.fields) ? clientFilter.fields : []; - var serverFields = (serverFilter && serverFilter.fields) ? serverFilter.fields : []; - var fields = clientFields.filter(itemC => { + let clientFields = (clientFilter && clientFilter.fields) ? clientFilter.fields : []; + let serverFields = (serverFilter && serverFilter.fields) ? serverFilter.fields : []; + let fields = clientFields.filter(itemC => { return serverFields.some(itemS => itemS === itemC); }); + let and = []; + let order; + let limit; + let filter = {order: order, limit: limit}; - var and = []; - (clientFilter && clientFilter.where) && and.push(clientFilter.where); - (serverFilter && serverFilter.where) && and.push(serverFilter.where); - - var order; - var limit; + if (clientFilter && clientFilter.where) + and.push(clientFilter.where); + if (serverFilter && serverFilter.where) + and.push(serverFilter.where); if (clientFilter && clientFilter.order) order = clientFilter.order; @@ -68,12 +70,14 @@ module.exports = function(Self) { else if (clientFilter && clientFilter.limit) limit = clientFilter.limit; - var filter = {order: order, limit: limit}; filter.where = (and.length > 0) && {and: and}; filter.fields = fields; this.find(filter, function(err, states) { - (err) ? cb(err, null) : cb(null, states); + if (err) + cb(err, null); + else + cb(null, states); }); }; }; @@ -108,6 +112,10 @@ module.exports = function(Self) { this.remoteMethod(methodName, args); }; + Self.getConnection = function(cb) { + this.dataSource.connector.client.getConnection(cb); + }; + Self.connectToService = function(ctx, dataSource) { this.app.dataSources[dataSource].connector.remotes.auth = { bearer: new Buffer(ctx.req.accessToken.id).toString('base64'), @@ -194,8 +202,8 @@ function removeEmpty(o) { let array = []; for (let item of o) { let i = removeEmpty(item); - if (!isEmpty(item)) - array.push(item); + if (!isEmpty(i)) + array.push(i); } if (array.length > 0) return array; diff --git a/services/loopback/favicon.ico b/services/loopback/favicon.ico new file mode 100644 index 000000000..0de7b90c9 Binary files /dev/null and b/services/loopback/favicon.ico differ diff --git a/services/loopback/server/datasources.json b/services/loopback/server/datasources.json index 7b160e957..74b5ba64d 100644 --- a/services/loopback/server/datasources.json +++ b/services/loopback/server/datasources.json @@ -4,30 +4,6 @@ "connector": "memory", "file": "db.json" }, - "auth": { - "name": "mysql", - "connector": "mysql", - "database": "salix", - "debug": false, - "host": "localhost", - "port": 3306, - "username": "root", - "password": "", - "connectTimeout": 20000, - "acquireTimeout": 20000 - }, - "vn": { - "name": "mysql", - "connector": "mysql", - "database": "salix", - "debug": false, - "host": "localhost", - "port": 3306, - "username": "root", - "password": "", - "connectTimeout": 20000, - "acquireTimeout": 20000 - }, "client": { "name": "client", "connector": "remote", diff --git a/services/loopback/server/middleware.json b/services/loopback/server/middleware.json index 8412781d5..151b6a0e0 100644 --- a/services/loopback/server/middleware.json +++ b/services/loopback/server/middleware.json @@ -1,6 +1,8 @@ { "initial:before": { - "loopback#favicon": {} + "loopback#favicon": { + "params": "$!../favicon.ico" + } }, "initial": { "compression": {}, diff --git a/services/mailer/Dockerfile b/services/mailer/Dockerfile index dd9e2d200..9c1503ee2 100644 --- a/services/mailer/Dockerfile +++ b/services/mailer/Dockerfile @@ -8,6 +8,6 @@ RUN npm install RUN npm -g install pm2 -CMD ["pm2-docker", "."] +CMD ["pm2-docker", "./server/server.js"] EXPOSE 3003 diff --git a/services/mailer/application/auth.js b/services/mailer/application/auth.js index 11f8f0025..ee8f114e1 100644 --- a/services/mailer/application/auth.js +++ b/services/mailer/application/auth.js @@ -25,17 +25,13 @@ module.exports = { database.pool.query(query, [this.getToken()], (error, result) => { let token = result[0]; - if (error) - return this.response.status(401).send({status: 'REJECT', data: {message: error.code}}); - - if (result.length == 0) - return this.response.status(401).send({status: 'REJECT', data: {message: 'No token found'}}); + if (error || result.length == 0) + return this.response.status(401).send({message: 'Invalid token'}); if (this.isTokenExpired(token.created, token.ttl)) - return this.response.status(401).send({status: 'REJECT', data: {message: 'Token expired'}}); + return this.response.status(401).send({message: 'Token expired'}); this.request.userId = token.userId; - this.next(); }); }, @@ -45,7 +41,7 @@ module.exports = { * @return {String} Token */ getToken: function() { - return this.request.headers.authorization; + return this.request.headers.authorization || this.request.query.token; }, /** diff --git a/services/mailer/application/config/.gitignore b/services/mailer/application/config/.gitignore new file mode 100644 index 000000000..0ac46e95e --- /dev/null +++ b/services/mailer/application/config/.gitignore @@ -0,0 +1 @@ +smtp.test.json \ No newline at end of file diff --git a/services/mailer/application/config/mysql.test.json b/services/mailer/application/config/mysql.test.json index dee7b6929..5b00829b3 100644 --- a/services/mailer/application/config/mysql.test.json +++ b/services/mailer/application/config/mysql.test.json @@ -1,7 +1,7 @@ { "host": "localhost", "port": 3306, - "user": "rot", + "user": "root", "password": "", "database": "vn" } \ No newline at end of file diff --git a/services/mailer/application/config/smtp.json b/services/mailer/application/config/smtp.json index db98587f2..1ffa81024 100644 --- a/services/mailer/application/config/smtp.json +++ b/services/mailer/application/config/smtp.json @@ -3,7 +3,6 @@ "port": 465, "secure": true, "auth": { - "id": 10240, "user": "noreply", "pass": "" }, diff --git a/services/mailer/application/config/smtp.test.json b/services/mailer/application/config/smtp.test.json deleted file mode 100644 index 8ce24c53e..000000000 --- a/services/mailer/application/config/smtp.test.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "host": "smtp.verdnatura.es", - "port": 465, - "secure": true, - "auth": { - "id": 10240, - "user": "nocontestar", - "pass": "ub606cux7op" - }, - "tls": { - "rejectUnauthorized": false - }, - "pool": true -} \ No newline at end of file diff --git a/services/mailer/application/locale.js b/services/mailer/application/locale.js index ac2cc8b0c..496d48bb8 100644 --- a/services/mailer/application/locale.js +++ b/services/mailer/application/locale.js @@ -17,12 +17,12 @@ module.exports = { if (error) { fs.stat(defaultLocaleFile, (error, stats) => { if (error) - return cb({status: 'REJECT', data: {message: 'Translation not found for template ' + template + '.'}}); + return cb(new Error('Translation not found for template ' + template)); - cb({status: 'ACCEPT', data: {locale: require(defaultLocaleFile)}}); + cb(null, {locale: require(defaultLocaleFile)}); }); } else { - cb({status: 'ACCEPT', data: {locale: require(localeFile)}}); + cb(null, {locale: require(localeFile)}); } }); }, diff --git a/services/mailer/application/mail.js b/services/mailer/application/mail.js index 878595a5a..4807157a9 100644 --- a/services/mailer/application/mail.js +++ b/services/mailer/application/mail.js @@ -46,16 +46,20 @@ module.exports = { } this.transporter.sendMail(mailOptions, (error, info) => { - let status = (error ? error.message : 'OK'); - this.log(params.sender, params.recipient, recipient, subject, body, params.message, status); + try { + let status = (error ? error.message : 'OK'); + this.log(params.sender, params.recipient, recipient, subject, body, params.message, status); - if (error) - return cb({status: 'REJECT', data: {message: 'Email not sent: ' + error}}); + if (error) + return cb(new Error('Email not sent: ' + error)); - if (settings.app().debug) - console.log('Mail sent ' + info.messageId + ' [' + info.response + ']'); + if (settings.app().debug) + console.log('Mail sent ' + info.messageId + ' [' + info.response + ']'); - cb({status: 'ACCEPT', data: {message: 'Email sent'}}); + cb(); + } catch(e) { + throw e; + } }); }, @@ -66,12 +70,15 @@ module.exports = { * @param {Object} cb - Callback */ sendWithTemplate: function(tplName, params, cb) { - template.get(tplName, params, result => { - if (result.status == 'REJECT') - return cb(result); + template.get(tplName, params, false, (error, result) => { + if (error) + return cb(error); - this.send(result.data.recipient, result.data.subject, result.data.body, result.data.attachments, params, result => { - cb(result); + this.send(result.recipient, result.subject, result.body, result.attachments, params, error => { + if (error) + return cb(error); + + cb(); }); }); }, diff --git a/services/mailer/application/route/manuscript.js b/services/mailer/application/route/manuscript.js index 1ec5984c1..8e35c5d2d 100644 --- a/services/mailer/application/route/manuscript.js +++ b/services/mailer/application/route/manuscript.js @@ -1,18 +1,85 @@ var express = require('express'); var router = new express.Router(); var mail = require('../mail.js'); -var auth = require('../auth.js'); - -// Auth middleware -var requestToken = function(request, response, next) { - auth.init(request, response, next); -}; +var template = require('../template.js'); +var httpRequest = require('request'); // Payment method changes -router.post('/payment-update/:clientId', requestToken, function(request, response, next) { - mail.sendWithTemplate('payment-update', {recipient: request.params.clientId}, result => { - return response.json(result); +router.post('/payment-update/:clientId', function(request, response, next) { + mail.sendWithTemplate('payment-update', {recipient: request.params.clientId}, error => { + if (error) + return response.status(400).json({message: error.message}); + + return response.json(); }); }); +// Printer setup +router.post('/printer-setup/:clientId', function(request, response, next) { + mail.sendWithTemplate('printer-setup', {recipient: request.params.clientId}, error => { + if (error) + return response.status(400).json({message: error.message}); + + return response.json(); + }); +}); + +// Printer setup preview +router.get('/printer-setup/:clientId', function(request, response, next) { + template.get('printer-setup', {recipient: request.params.clientId}, true, (error, result) => { + if (error) + return response.status(400).json({message: error.message}); + + response.send(result.body); + }); +}); + +// Client welcome +router.post('/client-welcome/:clientId', function(request, response, next) { + mail.sendWithTemplate('client-welcome', {recipient: request.params.clientId}, error => { + if (error) + return response.status(400).json({message: error.message}); + + return response.json(); + }); +}); + +// Client welcome preview +router.get('/client-welcome/:clientId', function(request, response, next) { + template.get('client-welcome', {recipient: request.params.clientId}, true, (error, result) => { + if (error) + return response.status(400).json({message: error.message}); + + response.send(result.body); + }); +}); + +// Sepa core +router.post('/sepa-core/:clientId', function(request, response, next) { + var options = { + url: 'http://localhost:3008/manuscript/sepa-core/7422', + method: 'POST', + headers: { + 'authorization': request.headers.authorization + } + } + + let httpStream = httpRequest(options, function(error, httpResponse, body) { + if (error) + return response.status(400).json({message: httpResponse.message}); + }); + + if (httpStream) + mail.send('joan@verdnatura.es', 'Correu de prova', 'test message', [{filename: 'test.pdf', content: httpStream}], function(error, result) { + if (error) + return response.status(400).json({message: error.message}); + }); + /* mail.sendWithTemplate('sepa-core', {recipient: request.params.clientId}, error => { + if (error) + return response.status(400).json({message: error.message}); + + return response.json(); + }); */ +}); + module.exports = router; diff --git a/services/mailer/application/route/notification.js b/services/mailer/application/route/notification.js index 508aed386..e5d5e4beb 100644 --- a/services/mailer/application/route/notification.js +++ b/services/mailer/application/route/notification.js @@ -3,12 +3,6 @@ var router = new express.Router(); var mail = require('../mail.js'); var database = require('../database.js'); var settings = require('../settings.js'); -var auth = require('../auth.js'); - -// Auth middleware -var requestToken = function(request, response, next) { - auth.init(request, response, next); -}; // Single user notification /* router.post('/:recipient/noticeUserSend', function(request, response) { @@ -71,7 +65,7 @@ var requestToken = function(request, response, next) { }); */ // Send notification to alias solunion on client deactivate -router.post('/client-deactivate/:clientId', requestToken, function(request, response) { +router.post('/client-deactivate/:clientId', function(request, response) { var params = { alias: 'solunion', code: 'clientDeactivate', @@ -80,8 +74,11 @@ router.post('/client-deactivate/:clientId', requestToken, function(request, resp } }; - mail.sendWithTemplate('notification-alias', params, result => { - return response.json(result); + mail.sendWithTemplate('notification-alias', params, error => { + if (error) + response.status(400).json({message: error.message}); + + return response.json(); }); }); diff --git a/services/mailer/application/router.js b/services/mailer/application/router.js index 201548632..b51b8a195 100644 --- a/services/mailer/application/router.js +++ b/services/mailer/application/router.js @@ -4,7 +4,7 @@ var settings = require('./settings.js'); // Mailer default page router.get('/', function(request, response) { - response.send(settings.app().name + ' v' + settings.app().version); + response.json({}); }); // Manuscripts diff --git a/services/mailer/application/template.js b/services/mailer/application/template.js index 4da1d7a80..382b7202d 100644 --- a/services/mailer/application/template.js +++ b/services/mailer/application/template.js @@ -5,79 +5,82 @@ var path = require('path'); var inlineCss = require('inline-css'); module.exports = { - /** - * Obtiene la plantilla. - * @param {String} template - Nombre de la plantilla - * @param {Object} countryCode - Código del idioma - * @param {Object} params - Datos a reemplazar. - * @param {Object} cb - Callback - */ - get: function(template, params, cb) { +/** + * Get template. + * @param {String} template - Template name + * @param {Object} countryCode - Language code + * @param {Object} params - Params + * @param {Object} cb - Callback + */ + get: function(template, params, isPreview, cb) { var templatePath = path.join(__dirname, 'template', `${template}`, `index.html`); var classPath = path.join(__dirname, 'template', `${template}`, `${template}.js`); - var stylePath = path.join(__dirname, 'template', `default`, `style.css`); + var stylePath = path.join(__dirname, '../static', 'css', 'style.css'); fs.stat(templatePath, (error, stat) => { if (error) - return cb(null, 'Template ' + template + ' not found'); + return cb(new Error('Template ' + template + ' not found')); let TemplateClass = require(classPath); let instance = new TemplateClass(); let getRenderedStyles = body => { - this.renderStyles(stylePath, body, body => { + this.renderStyles(stylePath, body, (error, body) => { params.subject = params.subject || instance.subject; if (params.subject == undefined) params.subject = body.match(new RegExp('(.*?)', 'i'))[1]; - this.getAttachments(template, body, attachments => { - cb({status: 'ACCEPT', data: {recipient: instance.recipient, subject: params.subject, body: body, attachments: attachments}}); + this.getAttachments(template, body, isPreview, (error, result) => { + if (error) + return cb(error); + + cb(null, {recipient: instance.recipient, subject: params.subject, body: result.body, attachments: result.attachments}); }); }); }; let getDataCb = () => { - this.render(templatePath, instance, body => getRenderedStyles(body)); + this.render(templatePath, instance, (error, result) => getRenderedStyles(result)); }; - instance.getData(params, result => { - if (result.status == 'REJECT') - return cb(result); + instance.getData(params, (error, result) => { + if (error) + return cb(error); - locale.load(template, instance.countryCode, result => { - if (result.status == 'REJECT') - return cb(result); + locale.load(template, instance.countryCode, (error, result) => { + if (error) + return cb(error); - instance._ = result.data.locale; - getDataCb(result); + instance._ = result.locale; + getDataCb(null, result); }); }); }); }, - /** - * Renderiza las plantillas - * @param {String} path - Ruta de la plantilla - * @param {Object} data - Listado de parámetros a remplazar - * @param {Object} cb - Callback - */ +/** + * Render template + * @param {String} path - Template path + * @param {Object} data - Params + * @param {Object} cb - Callback + */ render: function(path, data, cb) { fs.readFile(path, 'utf8', function(error, body) { mustache.parse(body); - cb(mustache.render(body, data)); + cb(null, mustache.render(body, data)); }); }, - /** - * Renderiza los estilos de las plantillas. - * @param {String} path - Ruta de la hoja de estilos - * @param {String} body - Html renderizado - * @param {Object} cb - Callback - */ +/** + * Render template style. + * @param {String} path - Stylesheet path + * @param {String} body - Rendered html + * @param {Object} cb - Callback + */ renderStyles: function(path, html, cb) { fs.stat(path, error => { - if (error) return cb(null, 'Template stylesheet not found'); + if (error) return cb(new Error('Template stylesheet not found')); fs.readFile(path, 'utf8', (error, css) => { let style = ''; let body = style + html; @@ -85,42 +88,75 @@ module.exports = { inlineCss(body, options) .then(function(body) { - cb(body); + cb(null, body); }); }); }); }, - /** - * Obtiene todos los ficheros adjuntos de la plantilla - * @param {String} template - Nombre de la plantilla - * @param {String} body - html de la plantilla - * @param {Object} cb - Callback - */ - getAttachments: function(template, body, cb) { - var attachments = []; - var tplAttachments = body.match(new RegExp('src="cid:(.*?)"', 'ig')); +/** + * Get template attachments + * @param {String} template - Template name + * @param {String} body - template body + * @param {Object} cb - Callback + */ + getAttachments: function(template, body, isPreview, cb) { + let attachments = []; + let tplAttachments = body.match(new RegExp('src="cid:(.*?)"', 'ig')); + // Template default attachments for (var i = 0; i < tplAttachments.length; i++) { - var name = tplAttachments[i].replace('src="cid:', '').replace('"', ''); - var attachmentPath = path.join(__dirname, 'template/default/image', name); + let name = tplAttachments[i].replace('src="cid:', '').replace('"', ''); - attachments.push({filename: name, path: attachmentPath, cid: name}); + if (isPreview) { + let attachmentPath = `/mailer/static/images/${name}`; + body = body.replace(tplAttachments[i], `src="${attachmentPath}"`); + } else { + let attachmentPath = path.join(__dirname, '../static', 'images', name); + attachments.push({filename: name, path: attachmentPath, cid: name}); + } } - var attachmentsPath = path.join(__dirname, 'template', `${template}`, 'attachment.json'); + if (isPreview) + return cb(null, {body: body, attachments: attachments}); + + // Template attachment files + let attachmentsPath = path.join(__dirname, 'template', `${template}`, 'attachment.json'); fs.stat(attachmentsPath, (error, stats) => { - if (error) return cb(null, 'Could not load attachments from template ' + template); + if (error) + return cb(new Error(`Could not load attachments.js from template ${template}`)); - var attachObj = require(attachmentsPath); + let attachObj = require(attachmentsPath); for (var i = 0; i < attachObj.length; i++) { - var attachmentPath = path.join(__dirname, 'template', `${template}`, 'attachment', attachObj[i]); - attachments.push({filename: attachObj[i], path: attachmentPath, cid: attachObj[i]}); + let filename = attachObj[i]; + let attachmentPath = path.join(__dirname, 'template', `${template}`, 'attachment', filename); + + attachments.push({filename: filename, path: attachmentPath, cid: filename}); } - cb(attachments); + this.checkAttachments(attachments, error => { + if (error) + return cb(error); + cb(null, {body: body, attachments: attachments}); + }); }); + }, + +/** + * Check all template attachments + * @param {Object} attachments - Attachments object + * @param {Object} cb - Callback + */ + checkAttachments: function(attachments, cb) { + for (var i = 0; i < attachments.length; i++) { + var attachment = attachments[i]; + fs.stat(attachment.path, error => { + if (error) + return cb(new Error(`Could not load attachment file ${attachment.path}`)); + }); + } + cb(); } }; diff --git a/services/mailer/application/template/UNUSED/printer-setup/printer-setup.js b/services/mailer/application/template/UNUSED/printer-setup/printer-setup.js deleted file mode 100644 index 73fdb89c1..000000000 --- a/services/mailer/application/template/UNUSED/printer-setup/printer-setup.js +++ /dev/null @@ -1,41 +0,0 @@ -var path = require('path'); -var database = require(path.join(__dirname, '../../database.js')); -var format = require(path.join(__dirname, '../../util/format.js')); - -module.exports = class PaymentUpdate { - getData(params, cb) { - let query = `SELECT - pm.id payMethodFk, - pm.name payMethodName, - c.dueDay, - c.iban, - LOWER(ct.code) countryCode, - c.email recipient - FROM client c - JOIN payMethod pm ON pm.id = c.paymentMethodFk - JOIN country ct ON ct.id = c.countryFk - WHERE c.id = ?`; - database.pool.query(query, [params.recipient], (error, result) => { - if (error || result.length == 0) - return cb({status: 'REJECT', data: {message: 'No data found', error: error}}); - - Object.assign(this, result[0]); - cb({status: 'ACCEPT', data: {}}); - }); - } - - get paymentDay() { - if (this.payMethodFk != 5) { - return `
    ${this._.paymentDay}: ${this.dueDay} ${this._.everyMonth}
    `; - } - } - - get paymentAdvice() { - switch (this.payMethodFk) { - case 4: - return `${this._.accountPaymentAdviceBefore} ${format.partialAccountAddress(this.iban)} ${this._.accountPaymentAdviceAfter}`; - case 5: - return this._.cardPaymentAdvice; - } - } -}; diff --git a/services/mailer/application/template/client-welcome/attachment.json b/services/mailer/application/template/client-welcome/attachment.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/services/mailer/application/template/client-welcome/attachment.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/services/mailer/application/template/client-welcome/client-welcome.js b/services/mailer/application/template/client-welcome/client-welcome.js new file mode 100644 index 000000000..851c9a12e --- /dev/null +++ b/services/mailer/application/template/client-welcome/client-welcome.js @@ -0,0 +1,44 @@ +var path = require('path'); +var database = require(path.join(__dirname, '../../database.js')); +var format = require(path.join(__dirname, '../../util/format.js')); + +module.exports = class ClientWelcome { + getData(params, cb) { + let query = `SELECT + CONCAT(w.name, ' ', w.firstName) name, + w.phone AS phone, + CONCAT(wu.name, '@verdnatura.es') AS email, + u.name AS userName, + LOWER(ct.code) countryCode, + c.email recipient + FROM client c + JOIN account.user u ON u.id = c.id + LEFT JOIN worker w ON w.id = c.workerFk + LEFT JOIN account.user wu ON wu.id = w.userFk + JOIN country ct ON ct.id = c.countryFk + WHERE c.id = ?`; + database.pool.query(query, [params.recipient], (error, result) => { + if (error || result.length == 0) + return cb(new Error('No template data found')); + + Object.assign(this, result[0]); + cb(); + }); + } + + get salesPersonName() { + if (this.name) + return `
    ${this._.salesPersonNameText}: ${this.name}
    `; + } + + get salesPersonPhone() { + if (this.phone) + return `
    ${this._.salesPersonPhoneText}: ${format.phone(this.phone)}
    `; + } + + get salesPersonEmail() { + if (this.email) + return `
    ${this._.salesPersonEmailText}: ` + + `${this.email}
    `; + } +}; diff --git a/services/mailer/application/template/client-welcome/index.html b/services/mailer/application/template/client-welcome/index.html new file mode 100644 index 000000000..661f0986a --- /dev/null +++ b/services/mailer/application/template/client-welcome/index.html @@ -0,0 +1,129 @@ + + + + {{_.subject}} + + + +
    +
    + + + + + +
    +

    {{_.title}}

    +
    + + + +
    +

    {{_.dear}},

    +

    {{_.bodyDescription}}

    + +

    + Sus datos para poder comprar en la web de verdnatura (https://www.verdnatura.es) + o en nuestras aplicaciones para iOS (https://goo.gl/3hC2mG) y Android (https://goo.gl/8obvLc), son: +

    + +

    +

    Usuario: {{userName}}
    +
    Contraseña: ******** (Va a recibir un correo para establecer la contraseña)
    +

    + +

    Cómo hacer un pedido

    + +

    Para realizar un pedido en nuestra web, debe configurarlo indicando:

    + +
      +
    1. Si quiere recibir el pedido (por agencia o por nuestro propio reparto) o si lo prefiere recoger en alguno de nuestros almacenes.
    2. +
    3. La fecha en la que quiera recibir el pedido (se preparará el día anterior).
    4. +
    5. La dirección de entrega o el almacén donde quiera recoger el pedido.
    6. +
    + +

    En nuestra web y aplicaciones puedes visualizar el stock disponible de flor cortada, verdes, plantas, complementos y artificial. + Tenga en cuenta que dicho stock puede variar en función de la fecha seleccionada al configurar el pedido. Es importante CONFIRMAR los pedidos para que la mercancía quede reservada.

    + +

    El reparto se realiza de lunes a sábado según la zona en la que se encuentre. Por regla general, los pedidos que se entregan por agencia, deben estar confirmados y pagados antes de las 17h + del día en que se preparan (el día anterior a recibirlos), aunque esto puede variar si el pedido se envía a través de nuestro reparto y según la zona.

    + +

    Cómo pagar

    + +

    Las formas de pago admitidas en Verdnatura son

    + +
      +
    • Con tarjeta a través de nuestra plataforma web (al confirmar el pedido).
    • +
    • Mediante giro bancario mensual, modalidad que hay que solicitar y tramitar.
    • +
    + +

    Cosas a tener en cuenta

    + +

    Verdnatura vende EXCLUSIVAMENTE a profesionales, por lo que debe remitirnos el Modelo 036 ó 037, + para comprobar que está dado/a de alta en el epígrafe correspondiente al comercio de flores.

    + +

    POLÍTICA DE RECLAMACIONES

    + +

    Verdnatura aceptará las reclamaciones que se realicen dentro de los dos días naturales + siguientes a la recepción del pedido (incluyendo el mismo día de la recepción). Pasado este plazo no se aceptará ninguna reclamación.

    + +

    Cualquier duda que le surja, no dude en consultarla, ¡estamos para atenderle!

    + +

    + {{{salesPersonName}}} + {{{salesPersonPhone}}} + {{{salesPersonEmail}}} +

    + + +
    + + + + + + + + + + + +
    +

    {{_.fiscalAddress}}

    +

    {{_.privacy}}

    +

    {{_.privacyLaw}}

    +
    + +
    +
    + + \ No newline at end of file diff --git a/services/mailer/application/template/UNUSED/printer-setup/locale/es.json b/services/mailer/application/template/client-welcome/locale/es.json similarity index 60% rename from services/mailer/application/template/UNUSED/printer-setup/locale/es.json rename to services/mailer/application/template/client-welcome/locale/es.json index 144cdc346..c99fe0c8e 100644 --- a/services/mailer/application/template/UNUSED/printer-setup/locale/es.json +++ b/services/mailer/application/template/client-welcome/locale/es.json @@ -1,15 +1,11 @@ { - "subject": "Cambios en las condiciones de pago", - "title": "Cambio en las condiciones", + "subject": "¡Le damos la bienvenida!", + "title": "¡LE DAMOS LA BIENVENIDA!", "dear": "Estimado cliente", - "bodyDescription": "Le informamos que han cambiado las condiciones de pago de su cuenta. A continuación le indicamos las nuevas condiciones:", - "paymentMethod": "Método de pago", - "paymentDay": "Día de pago", - "everyMonth": "de cada mes", - "cardPaymentAdvice": "Su modo de pago actual implica que deberá abonar el importe de los pedidos realizados en el mismo día para que se puedan enviar.", - "accountPaymentAdviceBefore": "Su modo de pago actual implica que se le pasará un cargo a la cuenta", - "accountPaymentAdviceAfter": "por el importe pendiente, al vencimiento establecido en las condiciones.", - "notifyError": "En el caso de detectar algún error en los datos indicados o para cualquier aclaración, debe dirigirse a su comercial.", + "bodyDescription": "Siga las intrucciones especificadas en este correo para llevar a cabo la instalación de la impresora.", + "salesPersonNameText": "Soy tu comercial y mi nombre es", + "salesPersonPhoneText": "Teléfono y whatsapp", + "salesPersonEmailText": "Dirección de e-mail", "actionButton": "Visita nuestra Web", "infoButton": "Ayúdanos a mejorar", "fiscalAddress": "VERDNATURA LEVANTE SL, B97367486 Avda. Espioca, 100, 46460 Silla _ www.verdnatura.es _ clientes@verdnatura.es", diff --git a/services/mailer/application/template/notification-alias/notification-alias.js b/services/mailer/application/template/notification-alias/notification-alias.js index 132d037f4..937e1bf8c 100644 --- a/services/mailer/application/template/notification-alias/notification-alias.js +++ b/services/mailer/application/template/notification-alias/notification-alias.js @@ -12,10 +12,10 @@ module.exports = class NotificationAlias { database.pool.query(query, [params.alias], (error, result) => { if (error || result.length == 0) - return cb({status: 'REJECT', data: {message: 'No data found', error: error}}); + return cb(new Error('No template data found')); Object.assign(this, result[0]); - cb({status: 'ACCEPT', data: {}}); + cb(); }); } diff --git a/services/mailer/application/template/payment-update/payment-update.js b/services/mailer/application/template/payment-update/payment-update.js index 73fdb89c1..d126dc83a 100644 --- a/services/mailer/application/template/payment-update/payment-update.js +++ b/services/mailer/application/template/payment-update/payment-update.js @@ -17,25 +17,24 @@ module.exports = class PaymentUpdate { WHERE c.id = ?`; database.pool.query(query, [params.recipient], (error, result) => { if (error || result.length == 0) - return cb({status: 'REJECT', data: {message: 'No data found', error: error}}); + return cb(new Error('No template data found')); Object.assign(this, result[0]); - cb({status: 'ACCEPT', data: {}}); + cb(); }); } get paymentDay() { - if (this.payMethodFk != 5) { + if (this.payMethodFk != 5) return `
    ${this._.paymentDay}: ${this.dueDay} ${this._.everyMonth}
    `; - } } get paymentAdvice() { switch (this.payMethodFk) { - case 4: - return `${this._.accountPaymentAdviceBefore} ${format.partialAccountAddress(this.iban)} ${this._.accountPaymentAdviceAfter}`; - case 5: - return this._.cardPaymentAdvice; + case 4: + return `${this._.accountPaymentAdviceBefore} ${format.partialAccountAddress(this.iban)} ${this._.accountPaymentAdviceAfter}`; + case 5: + return this._.cardPaymentAdvice; } } }; diff --git a/services/mailer/application/template/printer-setup/attachment.json b/services/mailer/application/template/printer-setup/attachment.json new file mode 100644 index 000000000..7294783a8 --- /dev/null +++ b/services/mailer/application/template/printer-setup/attachment.json @@ -0,0 +1 @@ +["model.ezp"] \ No newline at end of file diff --git a/services/mailer/application/template/printer-setup/attachment/model.ezp b/services/mailer/application/template/printer-setup/attachment/model.ezp new file mode 100644 index 000000000..297df3d21 Binary files /dev/null and b/services/mailer/application/template/printer-setup/attachment/model.ezp differ diff --git a/services/mailer/application/template/printer-setup/index.html b/services/mailer/application/template/printer-setup/index.html new file mode 100644 index 000000000..3f6c8910d --- /dev/null +++ b/services/mailer/application/template/printer-setup/index.html @@ -0,0 +1,108 @@ + + + + {{_.subject}} + + + +
    +
    + + + + + +
    +

    {{_.title}}

    +
    + + + +
    +

    {{_.dear}},

    +

    {{_.bodyDescription}}

    +

    {{{_.followGuide}}}

    +

    {{{_.downloadFrom}}}

    + +

    {{_.sectionQLabelTitle}}

    + +

    {{_.sectionQLabelDescription}}

    + +
      +
    1. {{_.sectionQLabelStep1}}
    2. +
    3. {{_.sectionQLabelStep2}}
    4. +
    5. {{_.sectionQLabelStep3}}
    6. +
    7. {{{_.sectionQLabelStep4}}}
    8. +
    9. {{_.sectionQLabelStep5}}
    10. +
    11. {{_.sectionQLabelStep6}}
    12. +
    13. {{_.sectionQLabelStep7}}
    14. +
    15. {{_.sectionQLabelStep8}}
    16. +
    17. {{{_.sectionQLabelStep9}}}
    18. +
    19. {{_.sectionQLabelStep10}}
    20. +
    21. {{_.sectionQLabelStep11}}
    22. +
    23. {{_.sectionQLabelStep12}}
    24. +
    25. {{_.sectionQLabelStep13}}
    26. +
    27. {{_.sectionQLabelStep14}}
    28. +
    29. {{_.sectionQLabelStep15}}
    30. +
    + +

    {{_.sectionHelpTitle}}

    +

    {{_.sectionHelpDescription}}

    +

    {{{_.sectionHelpDownloadRemoteSupport}}}

    + +

    + {{{salesPersonName}}} + {{{salesPersonPhone}}} + {{{salesPersonEmail}}} +

    +
    + + + + + + + + + + + +
    +

    {{_.fiscalAddress}}

    +

    {{_.privacy}}

    +

    {{_.privacyLaw}}

    +
    + +
    +
    + + \ No newline at end of file diff --git a/services/mailer/application/template/printer-setup/locale/es.json b/services/mailer/application/template/printer-setup/locale/es.json new file mode 100644 index 000000000..41a831524 --- /dev/null +++ b/services/mailer/application/template/printer-setup/locale/es.json @@ -0,0 +1,36 @@ +{ + "subject": "Instalación y configuración de impresora", + "title": "¡GRACIAS POR SU CONFIANZA!", + "dear": "Estimado cliente", + "bodyDescription": "Siga las intrucciones especificadas en este correo para llevar a cabo la instalación de la impresora.", + "followGuide": "Puede utilizar como guía, el video del montaje del ribon y la cinta https://www.youtube.com/watch?v=qhb0kgQF3o8. También necesitará el QLabel, el programa para imprimir las cintas.", + "downloadFrom": "Puede descargarlo desde este enlace http://www.godexintl.com/en/product/type/Download/2967", + "sectionQLabelTitle": "Utilización de QLabel", + "sectionQLabelDescription": "Para utilizar el programa de impresión de cintas siga estos pasos:", + "sectionQLabelStep1": "Abra el programa QLabel.", + "sectionQLabelStep2": "Haga clic en el icono de la barra superior superior de la \"carpeta\".", + "sectionQLabelStep3": "Seleccione el archivo plantilla llamado \"model.ezp\".", + "sectionQLabelStep4": "Haga clic encima del texto con el boton secundario del ratón.", + "sectionQLabelStep5": "Elija la primera opcion \"setup\".", + "sectionQLabelStep6": "Cambie el texto para imprimir.", + "sectionQLabelStep7": "Haga clic en el boton \"Ok\".", + "sectionQLabelStep8": "Desplácese con el raton para ver la medida máxima.", + "sectionQLabelStep9": "Haga clic encima del texto con el botón secundario del ratón.", + "sectionQLabelStep10": "Elija la primera opcion \"Setup printer\".", + "sectionQLabelStep11": "Haga clic en la primera pestalla \"Label Setup\".", + "sectionQLabelStep12": "Modifique la propidad \"Paper Height\".", + "sectionQLabelStep13": "Haga clic en el boton \"Ok\".", + "sectionQLabelStep14": "Haga clic sobre el icono de la impresora.", + "sectionQLabelStep15": "Haga clic en \"Print\".", + "sectionHelpTitle": "¿Necesita ayuda?", + "sectionHelpDescription": "Si necesita ayuda, descárguese nuestro programa de soporte para poder conectarnos remotamente a su equipo y hacerle la instalación. Proporciónenos un horario de contacto para atenderle, y contactaremos con usted.", + "sectionHelpDownloadRemoteSupport": "Puede descargarse el programa desde este enlace http://soporte.verdnatura.es.", + "salesPersonNameText": "Soy su comercial y mi nombre es", + "salesPersonPhoneText": "Teléfono y whatsapp", + "salesPersonEmailText": "Dirección de e-mail", + "actionButton": "Visita nuestra Web", + "infoButton": "Ayúdanos a mejorar", + "fiscalAddress": "VERDNATURA LEVANTE SL, B97367486 Avda. Espioca, 100, 46460 Silla _ www.verdnatura.es _ clientes@verdnatura.es", + "privacy": "- AVISO - Este mensaje es privado y confidencial, y debe ser utilizado exclusivamente por la persona destinataria del mismo. Si usted ha recibido este mensaje por error, le rogamos lo comunique al remitente y borre dicho mensaje y cualquier documento adjunto que pudiera contener. Verdnatura Levante SL no renuncia a la confidencialidad ni a ningún privilegio por causa de transmisión errónea o mal funcionamiento. Igualmente no se hace responsable de los cambios, alteraciones, errores u omisiones que pudieran hacerse al mensaje una vez enviado.", + "privacyLaw": "En cumplimiento de lo dispuesto en la Ley Orgánica 15/1999, de Protección de Datos de Carácter Personal, le comunicamos que los datos personales que facilite se incluirán en ficheros automatizados de VERDNATURA LEVANTE S.L., pudiendo en todo momento ejercitar los derechos de acceso, rectificación, cancelación y oposición, comunicándolo por escrito al domicilio social de la entidad. La finalidad del fichero es la gestión administrativa, contabilidad, y facturación." +} \ No newline at end of file diff --git a/services/mailer/application/template/printer-setup/printer-setup.js b/services/mailer/application/template/printer-setup/printer-setup.js new file mode 100644 index 000000000..77147f459 --- /dev/null +++ b/services/mailer/application/template/printer-setup/printer-setup.js @@ -0,0 +1,42 @@ +var path = require('path'); +var database = require(path.join(__dirname, '../../database.js')); +var format = require(path.join(__dirname, '../../util/format.js')); + +module.exports = class PrinterSetup { + getData(params, cb) { + let query = `SELECT + CONCAT(w.name, ' ', w.firstName) name, + w.phone AS phone, + CONCAT(u.name, '@verdnatura.es') AS email, + LOWER(ct.code) countryCode, + c.email recipient + FROM client c + LEFT JOIN worker w ON w.id = c.workerFk + LEFT JOIN account.user u ON u.id = w.userFk + JOIN country ct ON ct.id = c.countryFk + WHERE c.id = ?`; + database.pool.query(query, [params.recipient], (error, result) => { + if (error || result.length == 0) + return cb(new Error('No template data found')); + + Object.assign(this, result[0]); + cb(); + }); + } + + get salesPersonName() { + if (this.name) + return `
    ${this._.salesPersonNameText}: ${this.name}
    `; + } + + get salesPersonPhone() { + if (this.phone) + return `
    ${this._.salesPersonPhoneText}: ${format.phone(this.phone)}
    `; + } + + get salesPersonEmail() { + if (this.email) + return `
    ${this._.salesPersonEmailText}: ` + + `${this.email}
    `; + } +}; diff --git a/services/mailer/application/template/sepa-core/attachment.json b/services/mailer/application/template/sepa-core/attachment.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/services/mailer/application/template/sepa-core/attachment.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/services/mailer/application/template/UNUSED/printer-setup/index.html b/services/mailer/application/template/sepa-core/index.html similarity index 89% rename from services/mailer/application/template/UNUSED/printer-setup/index.html rename to services/mailer/application/template/sepa-core/index.html index caec77e90..df149cb9f 100644 --- a/services/mailer/application/template/UNUSED/printer-setup/index.html +++ b/services/mailer/application/template/sepa-core/index.html @@ -23,12 +23,6 @@

    {{_.dear}},

    {{_.bodyDescription}}

    -

    -

    {{_.paymentMethod}}: {{payMethodName}}
    - {{{paymentDay}}} -

    -

    {{paymentAdvice}}

    -

    {{_.notifyError}}

    diff --git a/services/mailer/application/template/sepa-core/locale/es.json b/services/mailer/application/template/sepa-core/locale/es.json new file mode 100644 index 000000000..29e0ef1a9 --- /dev/null +++ b/services/mailer/application/template/sepa-core/locale/es.json @@ -0,0 +1,11 @@ +{ + "subject": "Instalación y configuración de impresora", + "title": "¡GRACIAS POR SU CONFIANZA!", + "dear": "Estimado cliente", + "bodyDescription": "A continuación le adjuntamos el documento de domicilación de datos bancarios.", + "actionButton": "Visita nuestra Web", + "infoButton": "Ayúdanos a mejorar", + "fiscalAddress": "VERDNATURA LEVANTE SL, B97367486 Avda. Espioca, 100, 46460 Silla _ www.verdnatura.es _ clientes@verdnatura.es", + "privacy": "- AVISO - Este mensaje es privado y confidencial, y debe ser utilizado exclusivamente por la persona destinataria del mismo. Si usted ha recibido este mensaje por error, le rogamos lo comunique al remitente y borre dicho mensaje y cualquier documento adjunto que pudiera contener. Verdnatura Levante SL no renuncia a la confidencialidad ni a ningún privilegio por causa de transmisión errónea o mal funcionamiento. Igualmente no se hace responsable de los cambios, alteraciones, errores u omisiones que pudieran hacerse al mensaje una vez enviado.", + "privacyLaw": "En cumplimiento de lo dispuesto en la Ley Orgánica 15/1999, de Protección de Datos de Carácter Personal, le comunicamos que los datos personales que facilite se incluirán en ficheros automatizados de VERDNATURA LEVANTE S.L., pudiendo en todo momento ejercitar los derechos de acceso, rectificación, cancelación y oposición, comunicándolo por escrito al domicilio social de la entidad. La finalidad del fichero es la gestión administrativa, contabilidad, y facturación." +} \ No newline at end of file diff --git a/services/mailer/application/template/sepa-core/sepa-core.js b/services/mailer/application/template/sepa-core/sepa-core.js new file mode 100644 index 000000000..536448bf0 --- /dev/null +++ b/services/mailer/application/template/sepa-core/sepa-core.js @@ -0,0 +1,42 @@ +var path = require('path'); +var database = require(path.join(__dirname, '../../database.js')); +var format = require(path.join(__dirname, '../../util/format.js')); + +module.exports = class SepaCore { + getData(params, cb) { + let query = `SELECT + CONCAT(w.name, ' ', w.firstName) name, + w.phone AS phone, + CONCAT(u.name, '@verdnatura.es') AS email, + LOWER(ct.code) countryCode, + c.email recipient + FROM client c + LEFT JOIN worker w ON w.id = c.workerFk + LEFT JOIN account.user u ON u.id = w.userFk + JOIN country ct ON ct.id = c.countryFk + WHERE c.id = ?`; + database.pool.query(query, [params.recipient], (error, result) => { + if (error || result.length == 0) + return cb(new Error('No template data found')); + + Object.assign(this, result[0]); + cb(); + }); + } + + get salesPersonName() { + if (this.name) + return `
    ${this._.salesPersonNameText}: ${this.name}
    `; + } + + get salesPersonPhone() { + if (this.phone) + return `
    ${this._.salesPersonPhoneText}: ${format.phone(this.phone)}
    `; + } + + get salesPersonEmail() { + if (this.email) + return `
    `; + } +}; diff --git a/services/mailer/application/util/format.js b/services/mailer/application/util/format.js index e166062c7..681fea72d 100644 --- a/services/mailer/application/util/format.js +++ b/services/mailer/application/util/format.js @@ -31,5 +31,9 @@ module.exports = { partialAccountAddress: function(addressNumber) { let address = this.accountAddress(addressNumber); return address.substring(0, 19).replace(/[0-9]/g, 'X') + address.substring(19, 24); + }, + + phone: function(number) { + return number; } }; diff --git a/services/mailer/package.json b/services/mailer/package.json index bb4b3d8a6..12aa4a0e4 100644 --- a/services/mailer/package.json +++ b/services/mailer/package.json @@ -10,7 +10,8 @@ "mustache": "^2.3.0", "mysql": "^2.13.0", "nodemailer": "^4.0.1", - "path": "^0.12.7" + "path": "^0.12.7", + "request": "^2.83.0" }, "repository": { "type": "git", diff --git a/services/mailer/server.js b/services/mailer/server/server.js similarity index 59% rename from services/mailer/server.js rename to services/mailer/server/server.js index d58e8eb0e..818b036a6 100644 --- a/services/mailer/server.js +++ b/services/mailer/server/server.js @@ -1,19 +1,25 @@ -/** - * Módulos necesarios - */ var express = require('express'); var app = module.exports = express(); var bodyParser = require('body-parser'); -var settings = require('./application/settings.js'); -var mail = require('./application/mail.js'); -var database = require('./application/database.js'); +var settings = require('../application/settings.js'); +var mail = require('../application/mail.js'); +var database = require('../application/database.js'); +var auth = require('../application/auth.js'); +var path = require('path'); // Body parser middleware app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); +app.use('/static', express.static(path.join(__dirname, '../static'))); + +// Auth middleware +var requestToken = function(request, response, next) { + auth.init(request, response, next); +}; + // Load routes -app.use('/', require('./application/router.js')); +app.use('/', requestToken, require('../application/router.js')); app.start = function() { var listener = app.listen(settings.app().port, function() { @@ -22,7 +28,7 @@ app.start = function() { database.init(); database.testEmail(); - let packageJson = require('./package.json'); + let packageJson = require('../package.json'); console.log(`Web server ${packageJson.name} listening at: ${servicePath}`); if (settings.app().debug) { diff --git a/services/mailer/application/template/default/style.css b/services/mailer/static/css/style.css similarity index 100% rename from services/mailer/application/template/default/style.css rename to services/mailer/static/css/style.css diff --git a/services/mailer/application/template/default/image/action.png b/services/mailer/static/images/action.png similarity index 100% rename from services/mailer/application/template/default/image/action.png rename to services/mailer/static/images/action.png diff --git a/services/mailer/application/template/default/image/facebook.png b/services/mailer/static/images/facebook.png similarity index 100% rename from services/mailer/application/template/default/image/facebook.png rename to services/mailer/static/images/facebook.png diff --git a/services/mailer/application/template/default/image/header.png b/services/mailer/static/images/header.png similarity index 100% rename from services/mailer/application/template/default/image/header.png rename to services/mailer/static/images/header.png diff --git a/services/mailer/application/template/default/image/info.png b/services/mailer/static/images/info.png similarity index 100% rename from services/mailer/application/template/default/image/info.png rename to services/mailer/static/images/info.png diff --git a/services/mailer/application/template/default/image/instagram.png b/services/mailer/static/images/instagram.png similarity index 100% rename from services/mailer/application/template/default/image/instagram.png rename to services/mailer/static/images/instagram.png diff --git a/services/mailer/application/template/default/image/linkedin.png b/services/mailer/static/images/linkedin.png similarity index 100% rename from services/mailer/application/template/default/image/linkedin.png rename to services/mailer/static/images/linkedin.png diff --git a/services/mailer/application/template/default/image/pinterest.png b/services/mailer/static/images/pinterest.png similarity index 100% rename from services/mailer/application/template/default/image/pinterest.png rename to services/mailer/static/images/pinterest.png diff --git a/services/mailer/application/template/default/image/twitter.png b/services/mailer/static/images/twitter.png similarity index 100% rename from services/mailer/application/template/default/image/twitter.png rename to services/mailer/static/images/twitter.png diff --git a/services/mailer/application/template/default/image/youtube.png b/services/mailer/static/images/youtube.png similarity index 100% rename from services/mailer/application/template/default/image/youtube.png rename to services/mailer/static/images/youtube.png diff --git a/services/nginx/static/templates/tooltip.routes.tpl.html b/services/nginx/static/templates/tooltip.routes.tpl.html new file mode 100644 index 000000000..2ca5181cb --- /dev/null +++ b/services/nginx/static/templates/tooltip.routes.tpl.html @@ -0,0 +1,14 @@ + + + Población + Provincia + ID_Cliente + Comercial + + + {{::ticket.city | ucwords}} + {{::ticket.province | ucwords}} + {{::ticket.client | ucwords}} + {{::ticket.worker | ucwords}} + + \ No newline at end of file diff --git a/services/production/Dockerfile b/services/production/Dockerfile index a15a314f9..7c0658d7c 100644 --- a/services/production/Dockerfile +++ b/services/production/Dockerfile @@ -1,6 +1,8 @@ FROM node:6.9.1 -COPY . /app +COPY production /app + +COPY loopback /loopback WORKDIR /app @@ -8,6 +10,6 @@ RUN npm install RUN npm -g install pm2 -CMD ["pm2-docker", "."] +CMD ["pm2-docker", "./server/server.js"] EXPOSE 3004 diff --git a/services/production/common/methods/fake-production/list.js b/services/production/common/methods/fake-production/list.js index 16f139d76..a52f29f96 100644 --- a/services/production/common/methods/fake-production/list.js +++ b/services/production/common/methods/fake-production/list.js @@ -1,60 +1,85 @@ -module.exports = function(FakeProduction) { - - FakeProduction.defineScope(); +module.exports = function(Self) { + Self.defineScope(); - FakeProduction.list = function(ctx, filter, cb){ - - var page = filter.page - 1; - var limit = filter.limit * page; - var offset = (page + 1) * filter.limit; - + Self.list = function(ctx, filter, callback) { + let daysTickets = 0; + let warehouseFk = filter.where.warehouseFk; delete filter.limit; delete filter.page; + delete filter.where.warehouseFk; - if(filter.where && filter.where.q){ - var newFilter = { - and: [ - { - or: [ - {agency: {regexp: filter.where.q}}, - {state: {regexp: filter.where.q}} - ] - } - ] - }; + let call = `call salix.production_control_source(? , ?)`; + var params = [warehouseFk, daysTickets]; + let conn; - delete filter.where.q; - - if(Object.keys(filter.where).length){ - Object.keys(filter.where).forEach( - key => { - let field = new Object(); - field[key] = filter.where[key]; - newFilter.and.push(field); - } - ); + Self.getConnection((err, connection) => { + if (err) { + onFinish(err); } - filter.where = newFilter; - } - - FakeProduction.connectToService(ctx, "client"); - this.find(filter, function(err, tickets) { - FakeProduction.disconnectFromService("client"); - (err) ? cb(err, null) : cb(null, (sum(tickets))); + conn = connection; + conn.query(call, params, getValue); }); - function sum(tickets){ - var obj = {lines: 0, m3: 0}; - tickets.forEach(function(t) { - obj.lines += t.lines; - obj.m3 += t.m3; - }, this); - obj.m3 = obj.m3.toFixed(2); - obj.total = tickets.length; - obj.tickets = tickets.slice(limit, offset); - return obj; + function getValue(err) { + if (err) { + onFinish(err); + } + + reBuildFilter(); + let where = Self.dataSource.connector.buildWhere(Self.modelName, filter.where); + let query = `SELECT * FROM tmp.production ${where.sql} GROUP BY RouteFk ORDER BY routeFk`; + conn.query(query, where.params, onFinish); } - } + function reBuildFilter() { + if (filter.where && filter.where.q) { + let regexQ = new RegExp(filter.where.q); + delete filter.where.q; + let newFilter = { + and: [ + { + or: [ + {agency: {regexp: regexQ}}, + {state: {regexp: regexQ}} + ] + } + ] + }; -} \ No newline at end of file + if (Object.keys(filter.where).length) { + Object.keys(filter.where).forEach( + key => { + let field = {}; + field[key] = filter.where[key]; + newFilter.and.push(field); + } + ); + } + filter.where = newFilter; + } + } + + function onFinish(err, results) { + conn.query('DROP TEMPORARY TABLE IF EXISTS tmp.production'); + conn.release(); + if (err) + callback(err); + callback(null, sum(results)); + } + + function sum(tickets) { + let obj = {lines: 0, m3: 0}; + if (tickets && tickets.length) + tickets.forEach(function(t, i) { + obj.lines += t.lines; + obj.m3 += t.m3; + if (tickets[i].problem) + tickets[i].problem = tickets[i].problem.trim(); + }, this); + obj.m3 = obj.m3.toFixed(2); + obj.total = tickets ? tickets.length : 0; + obj.tickets = tickets || []; + return obj; + } + }; +}; diff --git a/services/production/common/methods/fake-production/route.js b/services/production/common/methods/fake-production/route.js index cd89819d5..e1814e918 100644 --- a/services/production/common/methods/fake-production/route.js +++ b/services/production/common/methods/fake-production/route.js @@ -1,4 +1,5 @@ module.exports = function(FakeProduction) { + FakeProduction.remoteMethodCtx('routeList', { description: 'Route list', returns: { @@ -16,11 +17,12 @@ module.exports = function(FakeProduction) { let query = `call salix.production_control_source(1,1)`; var params = []; FakeProduction.rawSql(query, params, cb) - .then(function(response){ + .then(function(response) { cb(null, response); }) - .catch(function(response){ + .catch(function(response) { cb(response, null); }); - } -} \ No newline at end of file + }; + +}; diff --git a/services/production/common/methods/state/list.js b/services/production/common/methods/state/list.js index 2d999a069..da2c0c9e5 100644 --- a/services/production/common/methods/state/list.js +++ b/services/production/common/methods/state/list.js @@ -1,7 +1,4 @@ -module.exports = function(State) { - - var serverFilter = {where: { "order": {gt: 0 }}, order: "order, name"}; - +module.exports = State => { + var serverFilter = {where: {order: {gt: 0}}, order: "order, name"}; State.defineScope(serverFilter); - -} \ No newline at end of file +}; diff --git a/services/production/common/methods/ticket/change-time.js b/services/production/common/methods/ticket/change-time.js index d763d029d..3f6f13c4a 100644 --- a/services/production/common/methods/ticket/change-time.js +++ b/services/production/common/methods/ticket/change-time.js @@ -17,7 +17,6 @@ module.exports = function(Ticket) { path: '/:time/changeTime' } }); - Ticket.changeTime = function(ctx, time, cb) { var tickets = ctx.req.body.tickets; var FakeProduction = Ticket.app.models.FakeProduction; @@ -25,15 +24,14 @@ module.exports = function(Ticket) { var query = `update Ticket set date = CONCAT(DATE(date), ' ', ?) where id in (?)`; var params = [hour, tickets]; - + FakeProduction.updateAll({ticketFk: {inq: tickets}}, {hour: hour}, function(err, res){ - if(err) - cb(err, null) + if (err) + cb(err, null); else Ticket.rawSql(query, params, cb).then(function(response) { cb(null, response); }); }); - }; -} \ No newline at end of file +}; diff --git a/services/production/common/methods/ticket/change-worker.js b/services/production/common/methods/ticket/change-worker.js index c6572a786..c1fcea080 100644 --- a/services/production/common/methods/ticket/change-worker.js +++ b/services/production/common/methods/ticket/change-worker.js @@ -8,7 +8,7 @@ module.exports = function(Ticket) { required: true, description: 'worker id', http: {source: 'path'} - }, + } ], returns: { arg: 'response', @@ -25,12 +25,11 @@ module.exports = function(Ticket) { changeWorker(worker, tickets, cb); }; - var changeWorker = function(worker, tickets, cb){ - var inserts = []; + let changeWorker = function(worker, tickets, cb) { var FakeProduction = Ticket.app.models.FakeProduction; FakeProduction.updateAll({ticketFk: {inq: tickets}}, {workerFk: worker}, function(err, info){ (err) ? cb(err, null) : cb(null, info); }); - } -} \ No newline at end of file + }; +}; diff --git a/services/production/common/methods/ticket/list.js b/services/production/common/methods/ticket/list.js index c465dffec..0268c6186 100644 --- a/services/production/common/methods/ticket/list.js +++ b/services/production/common/methods/ticket/list.js @@ -1,7 +1,7 @@ module.exports = function(Ticket) { Ticket.remoteMethod('list', { description: 'List tickets for production', - /*accepts: { + /* accepts: { arg: 'id', type: 'number', required: true, @@ -19,19 +19,19 @@ module.exports = function(Ticket) { }); Ticket.list = function(cb) { - //list(); + // list(); }; var list = function(){ var params = [1, 0]; - var query = "CALL production_control_source(?, ?)" + var query = 'CALL production_control_source(?, ?)'; - var cb = function(error, res){ - if(error) console.log(error); + var cb = function(error, res) { + if (error) console.log(error); else console.log(res); - }; + }; Ticket.rawSql(query, params, cb); - } -} \ No newline at end of file + }; +}; diff --git a/services/production/package.json b/services/production/package.json index 8001114a5..91f9e27d2 100644 --- a/services/production/package.json +++ b/services/production/package.json @@ -12,5 +12,8 @@ "url": "https://git.verdnatura.es/salix" }, "license": "GPL-3.0", - "description": "vn-production" + "description": "vn-production", + "dependencies": { + "uuid": "^3.1.0" + } } diff --git a/services/production/server/server.js b/services/production/server/server.js index 030bbc1b4..f0493dcd9 100644 --- a/services/production/server/server.js +++ b/services/production/server/server.js @@ -1,4 +1,3 @@ - var vnLoopback = require('../../loopback/server/server.js'); var app = module.exports = vnLoopback.loopback(); diff --git a/services/route/Dockerfile b/services/route/Dockerfile index 0a4749712..ded1fa1db 100644 --- a/services/route/Dockerfile +++ b/services/route/Dockerfile @@ -1,6 +1,8 @@ FROM node:6.9.1 -COPY . /app +COPY route /app + +COPY loopback /loopback WORKDIR /app @@ -8,6 +10,6 @@ RUN npm install RUN npm -g install pm2 -CMD ["pm2-docker", "."] +CMD ["pm2-docker", "./server/server.js"] EXPOSE 3005 diff --git a/services/route/common/methods/comboVehicles.js b/services/route/common/methods/comboVehicles.js new file mode 100644 index 000000000..aeef16bde --- /dev/null +++ b/services/route/common/methods/comboVehicles.js @@ -0,0 +1,42 @@ +module.exports = (Vehicle) => { + Vehicle.remoteMethod('comboVehicles', { + description: 'returns list of vehicles', + accessType: 'READ', + accepts: [{ + arg: 'filter', + type: 'Object', + required: false, + description: 'Filter defining where and paginated data', + http: {source: 'query'} + }], + returns: { + arg: 'data', + type: 'Vehicle', + root: true + }, + http: { + path: `/comboVehicles`, + verb: 'get' + } + }); + + Vehicle.comboVehicles = (filter, callback) => { + Vehicle.find(filter, (_, instances) => { + callback(null, formatOutput(instances)); + }); + }; + + function formatOutput(instances) { + let results = []; + + for (let instance of instances) { + let numberPlate = ` ${instance.numberPlate}` || ''; + results.push({ + id: instance.id, + name: `${instance.tradeMark} ${instance.model}${numberPlate}` + }); + } + + return results; + } +}; \ No newline at end of file diff --git a/services/route/common/methods/drivers.js b/services/route/common/methods/drivers.js new file mode 100644 index 000000000..de51f471b --- /dev/null +++ b/services/route/common/methods/drivers.js @@ -0,0 +1,79 @@ +module.exports = (Vehicle) => { + Vehicle.remoteMethod('activeDrivers', { + description: 'returns actives employees with driver role', + accessType: 'READ', + accepts: [{ + arg: 'filter', + type: 'Object', + required: false, + description: 'Filter defining where and paginated data', + http: {source: 'query'} + }], + returns: { + arg: 'data', + type: 'Employee', + root: true + }, + http: { + path: `/activeDrivers`, + verb: 'get' + } + }); + + Vehicle.activeDrivers = (filter, callback) => { + let skip = filter.skip || 0; + let limit = filter.limit || 10; + let where = getCondition(filter.where); + // TODO: change salesPerson role to Driver role when it will be created + let query = `SELECT em.id, em.name, em.surname + FROM Employee em + JOIN Account ac ON em.userFk = ac.id + JOIN Role ON Role.id = ac.roleFK + WHERE ac.active AND Role.\`name\`='salesPerson' ${where} + ORDER BY em.name ASC + LIMIT ${limit} OFFSET ${skip}`; + + Vehicle.rawSql(query, [], callback) + .then(response => { + callback(null, formatDriver(response)); + }) + .catch(reject => { + callback(reject, null); + }); + }; + + function getCondition(where) { + let out = []; + if(typeof where === 'object') { + Object.keys(where).forEach((k) => { + let value = where[k]; + if (typeof value === 'number') { + out.push(`em.${k}=${value}`); + } else if (typeof value === 'string') { + out.push(`em.${k}='${value}'`); + } else if (typeof value === 'boolean' || value === null) { + out.push(`em.${k} IS ${String(value).toUpperCase()}`); + } else if (Object.keys(value).length) { + let firstProperty = Object.keys(value)[0]; + out.push(`em.${k} ${firstProperty} '${value[firstProperty]}'`); + } else { + throw new Error ('Error: unexpected type'); + } + }); + } + return out.length ? `AND (${out.join(' AND ')})` : ''; + } + + function formatDriver (response) { + let results = []; + + response.forEach( person => { + results.push({ + id: person.id, + name: `${person.name} ${person.surname}` + }); + }); + + return results; + } +}; \ No newline at end of file diff --git a/services/route/common/methods/filter.js b/services/route/common/methods/filterRoutes.js similarity index 80% rename from services/route/common/methods/filter.js rename to services/route/common/methods/filterRoutes.js index 22e93afbd..47edb3dcd 100644 --- a/services/route/common/methods/filter.js +++ b/services/route/common/methods/filterRoutes.js @@ -16,16 +16,16 @@ module.exports = function(Delivery) { ] }, - skip: (params.page - 1) * params.size, - limit: params.size + skip: (parseInt(params.page, 10) - 1) * parseInt(params.size, 10), + limit: parseInt(params.size, 10) }; } function andWhere(params) { let filters = { where: {}, - skip: (params.page - 1) * params.size, - limit: params.size + skip: (parseInt(params.page, 10) - 1) * parseInt(params.size, 10), + limit: parseInt(params.size, 10) }; delete params.page; diff --git a/services/route/common/models/delivery.js b/services/route/common/models/delivery.js index 04b9610cf..5bb764ee3 100644 --- a/services/route/common/models/delivery.js +++ b/services/route/common/models/delivery.js @@ -1,4 +1,4 @@ module.exports = function(Self) { - require('../methods/filter.js')(Self); + require('../methods/filterRoutes.js')(Self); }; diff --git a/services/route/common/models/vehicle.js b/services/route/common/models/vehicle.js new file mode 100644 index 000000000..6d6c3a113 --- /dev/null +++ b/services/route/common/models/vehicle.js @@ -0,0 +1,5 @@ + +module.exports = function(Self) { + require('../methods/comboVehicles.js')(Self); + require('../methods/drivers.js')(Self); +}; diff --git a/services/route/common/models/vehicle.json b/services/route/common/models/vehicle.json new file mode 100644 index 000000000..b330dedb7 --- /dev/null +++ b/services/route/common/models/vehicle.json @@ -0,0 +1,33 @@ +{ + "name": "Vehicle", + "base": "VnModel", + "properties": { + "id": { + "id": true, + "type": "Number", + "forceId": false + }, + "numberPlate": { + "type": "Number" + }, + "tradeMark":{ + "type": "String" + }, + "model":{ + "type": "String" + }, + "companyFk": { + "type": "Number" + }, + "warehouseFk": { + "type": "Number" + }, + "m3": { + "type": "Number" + }, + "isActive": { + "type": "Boolean" + } + } + } + \ No newline at end of file diff --git a/services/route/server/model-config.json b/services/route/server/model-config.json index b67cc7bae..032bbc862 100644 --- a/services/route/server/model-config.json +++ b/services/route/server/model-config.json @@ -32,5 +32,8 @@ }, "Agency": { "dataSource": "vn" + }, + "Vehicle": { + "dataSource": "vn" } } diff --git a/services/salix/Dockerfile b/services/salix/Dockerfile index 2b97fd599..db7b8720f 100644 --- a/services/salix/Dockerfile +++ b/services/salix/Dockerfile @@ -1,6 +1,8 @@ FROM node:6.9.1 -COPY . /app +COPY salix /app + +COPY loopback /loopback WORKDIR /app @@ -8,6 +10,6 @@ RUN npm install RUN npm -g install pm2 -CMD ["pm2-docker", "."] +CMD ["pm2-docker", "./server/server.js"] EXPOSE 3001 \ No newline at end of file diff --git a/services/salix/client/index.ejs b/services/salix/client/index.ejs index 9ed38a508..ed1bd1cd8 100644 --- a/services/salix/client/index.ejs +++ b/services/salix/client/index.ejs @@ -1,24 +1,24 @@ - - - Salix - - - - - - - - - + + + Salix + + + + + + + + + diff --git a/services/salix/package.json b/services/salix/package.json index b810436e4..32b9649ba 100644 --- a/services/salix/package.json +++ b/services/salix/package.json @@ -16,4 +16,4 @@ }, "license": "GPL-3.0", "description": "Salix application service" -} \ No newline at end of file +} diff --git a/services_tests.js b/services_tests.js index 5047ab208..9a282490f 100644 --- a/services_tests.js +++ b/services_tests.js @@ -36,4 +36,6 @@ jasmine.addReporter(new SpecReporter({ } })); -jasmine.execute(); +exports.start = () => { + jasmine.execute(); +}; diff --git a/webpack.config.js b/webpack.config.js index c4e78fced..1b8b59be2 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -59,14 +59,14 @@ var config = { ], devtool: 'source-map' }; - -if (!devMode) { - config.plugins.push( - new webpack.optimize.UglifyJsPlugin({ - minimize: true, - compress: {warnings: false} - }) - ); -} +// FIXME: https://github.com/webpack-contrib/uglifyjs-webpack-plugin/issues/132 +// if (!devMode) { +// config.plugins.push( +// new webpack.optimize.UglifyJsPlugin({ +// minimize: true, +// compress: {warnings: false} +// }) +// ); +// } module.exports = config;