refactor: refs #7567 Fix and improvement #2699
|
@ -0,0 +1,12 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `srt`.`buffer_afterDelete`
|
||||||
|
AFTER DELETE ON `buffer`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO buffer
|
||||||
|
SET `action` = 'delete',
|
||||||
|
`changedModel` = 'Buffer',
|
||||||
|
`changedModelId` = OLD.id,
|
||||||
|
`userFk` = account.myUser_getId();
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,8 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `srt`.`buffer_beforeInsert`
|
||||||
|
BEFORE INSERT ON `buffer`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
SET NEW.editorFk = account.myUser_getId();
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,8 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `srt`.`buffer_beforeUpdate`
|
||||||
|
BEFORE UPDATE ON `buffer`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
SET NEW.editorFk = account.myUser_getId();
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,12 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `srt`.`config_afterDelete`
|
||||||
|
AFTER DELETE ON `config`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO config
|
||||||
|
SET `action` = 'delete',
|
||||||
|
`changedModel` = 'Config',
|
||||||
|
`changedModelId` = OLD.id,
|
||||||
|
`userFk` = account.myUser_getId();
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,8 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `srt`.`config_beforeInsert`
|
||||||
|
BEFORE INSERT ON `config`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
SET NEW.editorFk = account.myUser_getId();
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,8 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `srt`.`config_beforeUpdate`
|
||||||
|
BEFORE UPDATE ON `config`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
SET NEW.editorFk = account.myUser_getId();
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -14,16 +14,28 @@ BEGIN
|
||||||
DECLARE vTicketFk INT;
|
DECLARE vTicketFk INT;
|
||||||
|
|
||||||
DECLARE cTickets CURSOR FOR
|
DECLARE cTickets CURSOR FOR
|
||||||
SELECT id FROM ticket
|
SELECT DISTINCT t.id
|
||||||
WHERE refFk IS NULL
|
FROM ticket t
|
||||||
AND ((vScope = 'client' AND clientFk = vId)
|
LEFT JOIN tItems ti ON ti.id = t.id
|
||||||
OR (vScope = 'address' AND addressFk = vId));
|
WHERE t.refFk IS NULL
|
||||||
|
AND ((vScope = 'client' AND t.clientFk = vId)
|
||||||
|
OR (vScope = 'address' AND t.addressFk = vId)
|
||||||
|
OR (vScope = 'item' AND ti.id)
|
||||||
|
);
|
||||||
|
|
||||||
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||||
SET vDone = TRUE;
|
|
||||||
|
CREATE OR REPLACE TEMPORARY TABLE tItems
|
||||||
|
(PRIMARY KEY (id))
|
||||||
|
ENGINE = MEMORY
|
||||||
|
SELECT DISTINCT t.id
|
||||||
|
FROM ticket t
|
||||||
|
JOIN sale s ON s.ticketFk = t.id
|
||||||
|
JOIN itemTaxCountry itc ON itc.itemFk = s.itemFk
|
||||||
|
WHERE t.refFk IS NULL
|
||||||
|
AND (vScope = 'item' AND itc.itemFk = vId);
|
||||||
|
|
||||||
OPEN cTickets;
|
OPEN cTickets;
|
||||||
|
|
||||||
myLoop: LOOP
|
myLoop: LOOP
|
||||||
SET vDone = FALSE;
|
SET vDone = FALSE;
|
||||||
FETCH cTickets INTO vTicketFk;
|
FETCH cTickets INTO vTicketFk;
|
||||||
|
@ -34,7 +46,8 @@ BEGIN
|
||||||
|
|
||||||
CALL ticket_recalc(vTicketFk, NULL);
|
CALL ticket_recalc(vTicketFk, NULL);
|
||||||
END LOOP;
|
END LOOP;
|
||||||
|
|
||||||
CLOSE cTickets;
|
CLOSE cTickets;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE tItems;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
CREATE OR REPLACE TABLE `srt`.`bufferLog` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`originFk` int(11) DEFAULT NULL,
|
||||||
|
`userFk` int(10) unsigned DEFAULT NULL,
|
||||||
|
`action` set('insert','update','delete','select') NOT NULL,
|
||||||
|
`creationDate` timestamp NULL DEFAULT current_timestamp(),
|
||||||
|
`description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
|
||||||
|
`changedModel` enum('Buffer', 'Config') NOT NULL DEFAULT 'Buffer',
|
||||||
|
`oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
|
||||||
|
`newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
|
||||||
|
`changedModelId` int(11) NOT NULL,
|
||||||
|
`changedModelValue` varchar(45) DEFAULT NULL,
|
||||||
|
`summaryId` varchar(30) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `logBufferUserFk` (`userFk`),
|
||||||
|
KEY `bufferLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
|
||||||
|
KEY `bufferLog_originFk` (`originFk`,`creationDate`),
|
||||||
|
CONSTRAINT `bufferUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
|
|
@ -0,0 +1 @@
|
||||||
|
ALTER TABLE srt.buffer ADD editorFk int(10) unsigned DEFAULT NULL NULL;
|
|
@ -0,0 +1 @@
|
||||||
|
ALTER TABLE srt.config ADD editorFk int(10) unsigned DEFAULT NULL NULL;
|
|
@ -0,0 +1,9 @@
|
||||||
|
CREATE TABLE vn.quadMindsApiConfig (
|
||||||
|
id int(10) unsigned NULL PRIMARY KEY,
|
||||||
|
`url` varchar(255) DEFAULT NULL NULL,
|
||||||
|
`key` varchar(255) DEFAULT NULL NULL,
|
||||||
|
CONSTRAINT quadMindsConfig_check CHECK (id = 1)
|
||||||
|
)
|
||||||
|
ENGINE=InnoDB
|
||||||
|
DEFAULT CHARSET=utf8mb3
|
||||||
|
COLLATE=utf8mb3_unicode_ci;
|
|
@ -22,7 +22,7 @@ labels AS (
|
||||||
b.id,
|
b.id,
|
||||||
b.itemFk,
|
b.itemFk,
|
||||||
p.name producer,
|
p.name producer,
|
||||||
IF(i2.id, i2.comment, i.comment) comment
|
IFNULL(i2.comment, i.comment) comment
|
||||||
FROM buy b
|
FROM buy b
|
||||||
JOIN item i ON i.id = b.itemFk
|
JOIN item i ON i.id = b.itemFk
|
||||||
LEFT JOIN producer p ON p.id = i.producerFk
|
LEFT JOIN producer p ON p.id = i.producerFk
|
||||||
|
|
|
@ -1,14 +1,20 @@
|
||||||
|
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-weight: 100;
|
font-weight: 100;
|
||||||
color: #555
|
color: #555
|
||||||
}
|
}
|
||||||
|
|
||||||
.report-info {
|
.report-info {
|
||||||
font-size: 20px
|
font-size: 20px
|
||||||
}
|
}
|
||||||
|
|
||||||
.description strong {
|
.description strong {
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
.nowrap {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.padding {
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.tags {
|
||||||
|
font-size: 10px;
|
||||||
|
margin: 0;
|
||||||
}
|
}
|
|
@ -4,23 +4,23 @@
|
||||||
</template>
|
</template>
|
||||||
<div class="grid-row">
|
<div class="grid-row">
|
||||||
<div class="grid-block">
|
<div class="grid-block">
|
||||||
<div class="columns">
|
<h1 class="title uppercase">{{$t('title')}}</h1>
|
||||||
|
<div class="columns header-tables">
|
||||||
<div class="size50">
|
<div class="size50">
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<h1 class="title uppercase">{{$t('title')}}</h1>
|
|
||||||
<table class="row-oriented report-info">
|
<table class="row-oriented report-info">
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="font gray uppercase">{{$t('entryId')}}</td>
|
<td class="font gray uppercase padding nowrap">{{$t('entryId')}}</td>
|
||||||
<th>{{entry.id}}</th>
|
<th>{{entry.id}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="font gray uppercase">{{$t('date')}}</td>
|
<td class="font gray uppercase padding nowrap">{{$t('date')}}</td>
|
||||||
<th>{{formatDate(entry.landed,'%d-%m-%Y')}}</th>
|
<th>{{formatDate(entry.landed,'%d-%m-%Y')}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="font gray uppercase">{{$t('ref')}}</td>
|
<td class="font gray uppercase padding nowrap">{{$t('ref')}}</td>
|
||||||
<th>{{entry.invoiceNumber}}</th>
|
<th>{{entry.invoiceNumber | dashIfEmpty}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -38,42 +38,56 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<table class="column-oriented vn-mt-ml">
|
<table class="column-oriented vn-mt-ml border-collapse">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="number">{{$t('boxes')}}</th>
|
<th class="number">{{$t('boxes')}}</th>
|
||||||
|
<th width="5%" class="number"></th>
|
||||||
<th class="number">{{$t('packing')}}</th>
|
<th class="number">{{$t('packing')}}</th>
|
||||||
<th width="50%">{{$t('concept')}}</th>
|
<th width="40%">{{$t('concept')}}</th>
|
||||||
|
<th width="10%">{{$t('reference')}}</th>
|
||||||
|
<th width="10%">{{$t('tags')}}</th>
|
||||||
<th width="10%" class="number">{{$t('quantity')}}</th>
|
<th width="10%" class="number">{{$t('quantity')}}</th>
|
||||||
|
<th width="5%" class="number"></th>
|
||||||
<th width="15%" class="number">{{$t('price')}}</th>
|
<th width="15%" class="number">{{$t('price')}}</th>
|
||||||
|
<th width="5%" class="number"></th>
|
||||||
<th width="15%" class="number">{{$t('amount')}}</th>
|
<th width="15%" class="number">{{$t('amount')}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody v-for="buy in buys">
|
<tbody v-for="buy in buys">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="number">{{buy.box}}</td>
|
<td class="number">{{buy.stickers}}</td>
|
||||||
|
<td width="5%" class="number">x</td>
|
||||||
<td class="number">{{buy.packing}}</td>
|
<td class="number">{{buy.packing}}</td>
|
||||||
<td width="50%">{{buy.itemName}}</td>
|
<td width="40%" class="nowrap">{{buy.name}}</td>
|
||||||
|
<td width="10%">{{buy.comment}}</td>
|
||||||
|
<td width="10%" class="font light-gray tags">
|
||||||
|
<span v-if="buy.value5" class="nowrap"><strong>{{buy.tag5}} → </strong>{{buy.value5}} </span>
|
||||||
|
<span v-if="buy.value6" class="nowrap"><strong>{{buy.tag6}} → </strong>{{buy.value6}} </span>
|
||||||
|
<span v-if="buy.value7" class="nowrap"><strong>{{buy.tag7}} → </strong>{{buy.value7}} </span>
|
||||||
|
</td>
|
||||||
<td width="10%" class="number">{{buy.quantity | number($i18n.locale)}}</td>
|
<td width="10%" class="number">{{buy.quantity | number($i18n.locale)}}</td>
|
||||||
|
<td width="5%" class="number">x</td>
|
||||||
<td width="15%" class="number">{{buy.buyingValue | currency('EUR', $i18n.locale)}}</td>
|
<td width="15%" class="number">{{buy.buyingValue | currency('EUR', $i18n.locale)}}</td>
|
||||||
|
<td width="5%" class="number">=</td>
|
||||||
<td width="15%" class="number">
|
<td width="15%" class="number">
|
||||||
{{buy.buyingValue * buy.quantity | currency('EUR', $i18n.locale)}}
|
{{buy.buyingValue * buy.quantity | currency('EUR', $i18n.locale)}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="description font light-gray">
|
|
||||||
<td colspan="7">
|
|
||||||
<span v-if="buy.value5"> <strong>{{buy.tag5}}</strong> {{buy.value5}} </span>
|
|
||||||
<span v-if="buy.value6"> <strong>{{buy.tag6}}</strong> {{buy.value6}} </span>
|
|
||||||
<span v-if="buy.value7"> <strong>{{buy.tag7}}</strong> {{buy.value7}} </span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr class="font bold">
|
||||||
<td colspan="5" class="font bold">
|
<td class="number">{{getTotalBy('stickers')}}</td>
|
||||||
<span class="pull-right">{{$t('total')}}</span>
|
<td></td>
|
||||||
</td>
|
<td></td>
|
||||||
<td class="number">{{getTotal() | currency('EUR', $i18n.locale)}}</td>
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="number">{{getTotalBy('quantity') | number($i18n.locale)}}</td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="number">{{getTotalBy('amount') | currency('EUR', $i18n.locale)}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -13,13 +13,17 @@ module.exports = {
|
||||||
return {totalBalance: 0.00};
|
return {totalBalance: 0.00};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getTotal() {
|
getTotalBy(property) {
|
||||||
let total = 0.00;
|
return this.buys.reduce((total, buy) => {
|
||||||
this.buys.forEach(buy => {
|
switch (property) {
|
||||||
total += buy.quantity * buy.buyingValue;
|
case 'amount':
|
||||||
});
|
return total + buy.quantity * buy.buyingValue;
|
||||||
|
case 'quantity':
|
||||||
return total;
|
return total + buy.quantity;
|
||||||
|
case 'stickers':
|
||||||
|
return total + buy.stickers;
|
||||||
|
}
|
||||||
|
}, 0);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
|
|
@ -2,7 +2,7 @@ reportName: pedido-de-entrada
|
||||||
title: Pedido
|
title: Pedido
|
||||||
supplierName: Proveedor
|
supplierName: Proveedor
|
||||||
supplierStreet: Dirección
|
supplierStreet: Dirección
|
||||||
entryId: Referencia interna
|
entryId: Nº Entrada
|
||||||
date: Fecha
|
date: Fecha
|
||||||
ref: Nº Factura
|
ref: Nº Factura
|
||||||
boxes: Cajas
|
boxes: Cajas
|
||||||
|
@ -14,4 +14,6 @@ concept: Descripción
|
||||||
total: Total
|
total: Total
|
||||||
entry: Entrada {0}
|
entry: Entrada {0}
|
||||||
supplierData: Datos del proveedor
|
supplierData: Datos del proveedor
|
||||||
notes: Notas
|
notes: Notas
|
||||||
|
reference: Referencia
|
||||||
|
tags: Tags
|
|
@ -1,16 +1,17 @@
|
||||||
SELECT
|
SELECT b.itemFk,
|
||||||
b.itemFk,
|
b.quantity,
|
||||||
b.quantity,
|
b.buyingValue,
|
||||||
b.buyingValue,
|
b.stickers,
|
||||||
b.stickers box,
|
b.packing,
|
||||||
b.packing,
|
i.name,
|
||||||
i.name itemName,
|
IFNULL(i2.comment, i.comment) comment,
|
||||||
i.tag5,
|
i.tag5,
|
||||||
i.value5,
|
i.value5,
|
||||||
i.tag6,
|
i.tag6,
|
||||||
i.value6,
|
i.value6,
|
||||||
i.tag7,
|
i.tag7,
|
||||||
i.value7
|
i.value7
|
||||||
FROM buy b
|
FROM buy b
|
||||||
JOIN item i ON i.id = b.itemFk
|
JOIN item i ON i.id = b.itemFk
|
||||||
WHERE b.entryFk = ?
|
LEFT JOIN item i2 ON i2.id = b.itemOriginalFk
|
||||||
|
WHERE b.entryFk = ?
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
SELECT
|
SELECT e.id,
|
||||||
e.id,
|
e.invoiceNumber,
|
||||||
e.invoiceNumber,
|
c.code companyCode,
|
||||||
c.code companyCode,
|
t.landed
|
||||||
t.landed
|
FROM entry e
|
||||||
FROM entry e
|
JOIN travel t ON t.id = e.travelFk
|
||||||
JOIN travel t ON t.id = e.travelFk
|
JOIN company c ON c.id = e.companyFk
|
||||||
JOIN company c ON c.id = e.companyFk
|
WHERE e.id = ?
|
||||||
WHERE e.id = ?
|
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
SELECT
|
SELECT s.name,
|
||||||
s.name,
|
s.street,
|
||||||
s.street,
|
s.nif,
|
||||||
s.nif,
|
s.postCode,
|
||||||
s.postCode,
|
s.city,
|
||||||
s.city,
|
p.name province
|
||||||
p.name province
|
FROM supplier s
|
||||||
FROM supplier s
|
JOIN entry e ON e.supplierFk = s.id
|
||||||
JOIN entry e ON e.supplierFk = s.id
|
LEFT JOIN province p ON p.id = s.provinceFk
|
||||||
LEFT JOIN province p ON p.id = s.provinceFk
|
WHERE e.id = ?
|
||||||
WHERE e.id = ?
|
|
||||||
|
|
Loading…
Reference in New Issue