This commit is contained in:
parent
cdea3abcdf
commit
676d95563b
|
@ -0,0 +1,74 @@
|
|||
DELIMITER $$
|
||||
$$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_canbePostponed`(vOriginDated DATE, vFutureDated DATE, vWarehouseFk INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Devuelve un listado de tickets susceptibles de fusionarse con otros tickets en el futuro
|
||||
*
|
||||
* @param vOriginDated Fecha en cuestión
|
||||
* @param vFutureDated Fecha en el futuro a sondear
|
||||
* @param vWarehouseFk Identificador de vn.warehouse
|
||||
*/
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.filter
|
||||
(INDEX (id))
|
||||
SELECT sv.ticketFk id,
|
||||
sub2.id futureId,
|
||||
GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) ipt,
|
||||
CAST(sum(litros) AS DECIMAL(10,0)) liters,
|
||||
CAST(count(*) AS DECIMAL(10,0)) `lines`,
|
||||
st.name state,
|
||||
sub2.iptd futureIpt,
|
||||
sub2.state futureState,
|
||||
t.clientFk,
|
||||
t.warehouseFk,
|
||||
ts.alertLevel,
|
||||
t.shipped,
|
||||
t.totalWithVat,
|
||||
sub2.shipped futureShipped,
|
||||
t.workerFk,
|
||||
st.code stateCode,
|
||||
sub2.code futureStateCode,
|
||||
st.classColor,
|
||||
sub2.classColor futureClassColor
|
||||
FROM vn.saleVolume sv
|
||||
JOIN vn.sale s ON s.id = sv.saleFk
|
||||
JOIN vn.item i ON i.id = s.itemFk
|
||||
JOIN vn.ticket t ON t.id = sv.ticketFk
|
||||
JOIN vn.address a ON a.id = t.addressFk
|
||||
JOIN vn.province p ON p.id = a.provinceFk
|
||||
JOIN vn.country c ON c.id = p.countryFk
|
||||
JOIN vn.ticketState ts ON ts.ticketFk = t.id
|
||||
JOIN vn.state st ON st.id = ts.stateFk
|
||||
JOIN vn.alertLevel al ON al.id = ts.alertLevel
|
||||
LEFT JOIN vn.ticketParking tp ON tp.ticketFk = t.id
|
||||
LEFT JOIN (
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT
|
||||
t.addressFk,
|
||||
t.id,
|
||||
t.shipped,
|
||||
st.name state,
|
||||
st.code,
|
||||
st.classColor,
|
||||
GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) iptd
|
||||
FROM vn.ticket t
|
||||
JOIN vn.ticketState ts ON ts.ticketFk = t.id
|
||||
JOIN vn.state st ON st.id = ts.stateFk
|
||||
JOIN vn.sale s ON s.ticketFk = t.id
|
||||
JOIN vn.item i ON i.id = s.itemFk
|
||||
WHERE t.shipped BETWEEN vFutureDated
|
||||
AND util.dayend(vFutureDated)
|
||||
AND t.warehouseFk = vWarehouseFk
|
||||
GROUP BY t.id
|
||||
) sub
|
||||
GROUP BY sub.addressFk
|
||||
) sub2 ON sub2.addressFk = t.addressFk AND t.id != sub2.id
|
||||
WHERE t.shipped BETWEEN vOriginDated AND util.dayend(vOriginDated)
|
||||
AND t.warehouseFk = vWarehouseFk
|
||||
AND al.code = 'FREE'
|
||||
AND tp.ticketFk IS NULL
|
||||
GROUP BY sv.ticketFk
|
||||
HAVING futureId;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -74,6 +74,12 @@ module.exports = Self => {
|
|||
description: 'Destination state',
|
||||
required: false
|
||||
},
|
||||
{
|
||||
arg: 'totalWithVat',
|
||||
type: 'string',
|
||||
description: 'Total price with vat',
|
||||
required: false
|
||||
},
|
||||
{
|
||||
arg: 'problems',
|
||||
type: 'boolean',
|
||||
|
@ -84,7 +90,7 @@ module.exports = Self => {
|
|||
arg: 'filter',
|
||||
type: 'object',
|
||||
description: `Filter defining where, order, offset, and limit - must be a JSON-encoded string`
|
||||
}
|
||||
},
|
||||
],
|
||||
returns: {
|
||||
type: ['object'],
|
||||
|
@ -132,6 +138,8 @@ module.exports = Self => {
|
|||
return {'f.stateCode': {like: `%${value}%`}};
|
||||
case 'futureState':
|
||||
return {'f.futureStateCode': {like: `%${value}%`}};
|
||||
case 'totalWithVat':
|
||||
return {'t.totalWithVat': value};
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -61,6 +61,9 @@
|
|||
<th field="liters">
|
||||
<span translate>Liters</span>
|
||||
</th>
|
||||
<th field="futureTotalWithVat">
|
||||
<span translate>Import</span>
|
||||
</th>
|
||||
<th shrink field="lines">
|
||||
<span translate>Available Lines</span>
|
||||
</th>
|
||||
|
@ -76,6 +79,7 @@
|
|||
<th shrink field="futureState">
|
||||
<span translate>State</span>
|
||||
</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -148,6 +152,13 @@
|
|||
</span>
|
||||
</td>
|
||||
<td>{{::ticket.liters}}</td>
|
||||
<td>
|
||||
<span
|
||||
class="chip {{$ctrl.totalPriceColor(ticket.totalWithVat)}}"
|
||||
title="{{$ctrl.totalPriceTitle(ticket.totalWithVat) | translate}}">
|
||||
{{::(ticket.totalWithVat ? ticket.totalWithVat : 0) | currency: 'EUR': 2}}
|
||||
</span>
|
||||
</td>
|
||||
<td>{{::ticket.lines}}</td>
|
||||
<td separator>
|
||||
<span
|
||||
|
|
|
@ -21,6 +21,9 @@ export default class Controller extends Section {
|
|||
{
|
||||
field: 'futureShipped',
|
||||
searchable: false
|
||||
}, {
|
||||
field: 'totalWithVat',
|
||||
searchable: false
|
||||
},
|
||||
{
|
||||
field: 'state',
|
||||
|
@ -130,6 +133,17 @@ export default class Controller extends Section {
|
|||
this.vnApp.showSuccess(this.$t('Success'));
|
||||
});
|
||||
}
|
||||
totalPriceColor(totalWithVat) {
|
||||
return this.isLessThan50(totalWithVat) ? 'warning' : '';
|
||||
}
|
||||
|
||||
totalPriceTitle(totalWithVat) {
|
||||
return this.isLessThan50(totalWithVat) ? 'Less than 50€' : '';
|
||||
}
|
||||
|
||||
isLessThan50(totalWithVat) {
|
||||
return (parseInt(totalWithVat) > 0 && parseInt(totalWithVat) < 50);
|
||||
}
|
||||
|
||||
exprBuilder(param, value) {
|
||||
switch (param) {
|
||||
|
@ -145,6 +159,8 @@ export default class Controller extends Section {
|
|||
return {'ipt': {like: `%${value}%`}};
|
||||
case 'futureIpt':
|
||||
return {'futureIpt': {like: `%${value}%`}};
|
||||
case 'totalWithVat':
|
||||
return {'totalWithVat': value};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue