7525-devToTest #2542

Merged
alexm merged 231 commits from 7525-devToTest into test 2024-06-04 07:59:34 +00:00
16 changed files with 139 additions and 59 deletions
Showing only changes of commit 50dbc5c515 - Show all commits

View File

@ -39,8 +39,6 @@ module.exports = Self => {
const xmlString = response.data;
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, 'text/xml');
const [resultElement] = xmlDoc.getElementsByTagName('Mensaje');
return resultElement.textContent;
return xmlDoc.getElementsByTagName('Mensaje')[0].textContent;
};
};

View File

@ -42,7 +42,8 @@ module.exports = Self => {
throw new UserError(`Some mrwConfig parameters are not set`);
const query =
`SELECT CASE co.code
`SELECT
CASE co.code
WHEN 'ES' THEN a.postalCode
WHEN 'PT' THEN LEFT(a.postalCode, 4)
WHEN 'AD' THEN REPLACE(a.postalCode, 'AD', '00')
@ -89,14 +90,9 @@ module.exports = Self => {
const getLabelResponse = await sendXmlDoc('getLabel', {mrw, shipmentId}, 'text/xml');
const file = getTextByTag(getLabelResponse, 'EtiquetaFile');
try {
await models.Expedition.updateAll({id: expeditionFk}, {externalId: shipmentId}, myOptions);
if (tx) await tx.commit();
} catch (error) {
if (tx) await tx.rollback();
throw error;
}
return file;
if (tx) await tx.commit();
return {shipmentId, file};
};
function getTextByTag(xmlDoc, tag) {

View File

@ -81,9 +81,9 @@ describe('MRWConfig createShipment()', () => {
spyOn(axios, 'post').and.callFake(() => Promise.resolve(mockPostResponses.pop()));
const base64Binary = await models.MrwConfig.createShipment(expedition1.id, options);
const {file} = await models.MrwConfig.createShipment(expedition1.id, options);
expect(base64Binary).toEqual(mockBase64Binary);
expect(file).toEqual(mockBase64Binary);
});
it('should fail if mrwConfig has no data', async() => {

View File

@ -35,7 +35,7 @@ BEGIN
itemFk,
longName,
supplier,
entryFk,
CONCAT('E',entryFk) entryFk,
landed,
`in`,
`out`,
@ -49,16 +49,98 @@ BEGIN
itemFk,
longName,
supplier,
'previous',
'E previous',
vFromDated,
SUM(`in`),
SUM(`out`),
NULL,
buyingValue
AVG(buyingValue)
FROM supplierPackaging
WHERE supplierFk = vSupplierFk
AND landed < vFromDated
GROUP BY itemFk
UNION ALL
SELECT vSupplierFk,
s.itemFk,
i.longName,
c.name,
CONCAT('T',s.ticketFk),
DATE(t.shipped),
-LEAST(s.quantity,0) `in`,
GREATEST(s.quantity,0) `out`,
t.warehouseFk,
s.price * (100 - s.discount) / 100
FROM sale s
JOIN item i ON i.id = s.itemFk
JOIN packaging p ON p.itemFk = i.id
JOIN ticket t ON t.id = s.ticketFk
JOIN client c ON c.id = t.clientFk
JOIN supplier su ON su.nif = c.fi
WHERE su.id = vSupplierFk
AND t.shipped >= vFromDated
AND p.isPackageReturnable
UNION ALL
SELECT vSupplierFk,
s.itemFk,
i.longName,
c.name,
'T previous',
vFromDated,
SUM(-LEAST(s.quantity,0)) `in`,
SUM(GREATEST(s.quantity,0)) `out`,
NULL,
AVG(s.price * (100 - s.discount) / 100)
FROM sale s
JOIN item i ON i.id = s.itemFk
JOIN packaging p ON p.itemFk = i.id
JOIN ticket t ON t.id = s.ticketFk
JOIN client c ON c.id = t.clientFk
JOIN supplier su ON su.nif = c.fi
WHERE su.id = vSupplierFk
AND t.shipped < vFromDated
AND p.isPackageReturnable
GROUP BY s.itemFk
UNION ALL
SELECT vSupplierFk,
p.itemFk,
i.longName,
c.name,
CONCAT('TP',tp.ticketFk),
DATE(t.shipped),
-LEAST(tp.quantity,0) `in`,
GREATEST(tp.quantity,0) `out`,
t.warehouseFk,
0
FROM ticketPackaging tp
JOIN packaging p ON p.id = tp.packagingFk
JOIN item i ON i.id = p.itemFk
JOIN ticket t ON t.id = tp.ticketFk
JOIN client c ON c.id = t.clientFk
JOIN supplier su ON su.nif = c.fi
WHERE su.id = vSupplierFk
AND t.shipped >= vFromDated
AND p.isPackageReturnable
UNION ALL
SELECT vSupplierFk,
p.itemFk,
i.longName,
c.name,
'TP previous',
vFromDated,
SUM(-LEAST(tp.quantity,0)) `in`,
SUM(GREATEST(tp.quantity,0)) `out`,
NULL,
0
FROM ticketPackaging tp
JOIN packaging p ON p.id = tp.packagingFk
JOIN item i ON i.id = p.itemFk
JOIN ticket t ON t.id = tp.ticketFk
JOIN client c ON c.id = t.clientFk
JOIN supplier su ON su.nif = c.fi
WHERE su.id = vSupplierFk
AND t.shipped >= vFromDated
AND p.isPackageReturnable
GROUP BY p.itemFk
ORDER BY itemFk, landed, entryFk
) sub
WHERE `out` OR `in`;

View File

@ -0,0 +1,2 @@
-- Place your SQL code here
ALTER TABLE floranet.`order` ADD IF NOT EXISTS observations TEXT NULL;

View File

@ -62,12 +62,12 @@ module.exports = Self => {
const clone = await models.Roadmap.create(roadmap, options);
const expeditionTrucks = roadmap.expeditionTruck();
expeditionTrucks.map(expeditionTruck => {
expeditionTruck.roadmapFk = clone.id;
return expeditionTruck;
const roadmapStops = roadmap.roadmapStop();
roadmapStops.map(roadmapStop => {
roadmapStop.roadmapFk = clone.id;
return roadmapStop;
});
await models.ExpeditionTruck.create(expeditionTrucks, options);
await models.RoadmapStop.create(roadmapStops, options);
}
await tx.commit();

View File

@ -8,7 +8,7 @@
"DeliveryPoint": {
"dataSource": "vn"
},
"ExpeditionTruck": {
"RoadmapStop": {
"dataSource": "vn"
},
"Roadmap": {

View File

@ -54,9 +54,9 @@
"model": "Supplier",
"foreignKey": "supplierFk"
},
"expeditionTruck": {
"roadmapStop": {
"type": "hasMany",
"model": "ExpeditionTruck",
"model": "RoadmapStop",
"foreignKey": "roadmapFk"
}
}

View File

@ -1,9 +1,9 @@
{
"name": "ExpeditionTruck",
"name": "RoadmapStop",
"base": "VnModel",
"options": {
"mysql": {
"table": "expeditionTruck"
"table": "roadmapStop"
}
},
"properties": {

View File

@ -1,22 +1,22 @@
<vn-crud-model
vn-id="model"
url="ExpeditionTrucks"
url="RoadmapStops"
where="{roadmapFk: $ctrl.$params.id}"
order="eta ASC"
data="$ctrl.expeditionTrucks"
data="$ctrl.roadmapStops"
auto-load="true">
</vn-crud-model>
<vn-watcher
vn-id="watcher"
data="$ctrl.expeditionTrucks"
data="$ctrl.roadmapStops"
form="form">
</vn-watcher>
<form class="vn-w-md" name="form" ng-submit="$ctrl.onSubmit()">
<vn-card class="vn-pa-lg">
<vn-horizontal ng-repeat="expeditionTruck in $ctrl.expeditionTrucks">
<vn-horizontal ng-repeat="roadmapStop in $ctrl.roadmapStops">
<vn-autocomplete vn-one
label="Warehouse"
ng-model="expeditionTruck.warehouseFk"
ng-model="roadmapStop.warehouseFk"
url="Warehouses"
show-field="name"
value-field="id"
@ -25,18 +25,18 @@
</vn-autocomplete>
<vn-date-picker vn-one
label="ETA date"
ng-model="expeditionTruck.eta"
ng-model="roadmapStop.eta"
rule>
</vn-date-picker>
<vn-input-time
vn-one
label="ETA hour"
ng-model="expeditionTruck.eta">
ng-model="roadmapStop.eta">
</vn-input-time>
<vn-textArea
vn-one
label="Description"
ng-model="expeditionTruck.description"
ng-model="roadmapStop.description"
rule>
</vn-textArea>
<vn-none>

View File

@ -49,7 +49,7 @@
vn-bind="+"
vn-tooltip="Add stop"
icon="add_circle"
vn-click-stop="addExpeditionTruck.show()">
vn-click-stop="addRoadmapStop.show()">
</vn-icon-button>
</a>
</h4>
@ -61,9 +61,9 @@
</vn-tr>
</vn-thead>
<vn-tbody>
<vn-tr ng-repeat="expeditionTruck in summary.expeditionTruck">
<vn-td>{{expeditionTruck.warehouse.name}}</vn-td>
<vn-td expand>{{expeditionTruck.eta | date:'dd/MM/yyyy HH:mm'}}</vn-td>
<vn-tr ng-repeat="roadmapStop in summary.roadmapStop">
<vn-td>{{roadmapStop.warehouse.name}}</vn-td>
<vn-td expand>{{roadmapStop.eta | date:'dd/MM/yyyy HH:mm'}}</vn-td>
</vn-tr>
</vn-tbody>
</vn-table>
@ -75,14 +75,14 @@
</vn-supplier-descriptor-popover>
<vn-dialog
vn-id="addExpeditionTruck"
vn-id="addRoadmapStop"
on-open="$ctrl.getETD()"
on-accept="$ctrl.onAddAccept()">
<tpl-body>
<vn-horizontal>
<vn-autocomplete
label="Warehouse"
ng-model="$ctrl.expeditionTruck.warehouseFk"
ng-model="$ctrl.roadmapStop.warehouseFk"
url="Warehouses"
show-field="name"
value-field="id"
@ -93,18 +93,18 @@
<vn-horizontal>
<vn-date-picker
label="ETA date"
ng-model="$ctrl.expeditionTruck.eta"
ng-model="$ctrl.roadmapStop.eta"
rule>
</vn-date-picker>
<vn-input-time
label="ETA hour"
ng-model="$ctrl.expeditionTruck.eta">
ng-model="$ctrl.roadmapStop.eta">
</vn-input-time>
</vn-horizontal>
<vn-horizontal>
<vn-textArea
label="Description"
ng-model="$ctrl.expeditionTruck.description"
ng-model="$ctrl.roadmapStop.description"
rule>
</vn-textArea>
</vn-horizontal>

View File

@ -20,7 +20,7 @@ class Controller extends Component {
include: [
{relation: 'supplier'},
{relation: 'worker'},
{relation: 'expeditionTruck',
{relation: 'roadmapStop',
scope: {
include: [
{relation: 'warehouse'}
@ -36,19 +36,19 @@ class Controller extends Component {
const eta = new Date(this.roadmap.etd);
eta.setDate(eta.getDate() + 1);
this.expeditionTruck = {eta: eta};
this.roadmapStop = {eta: eta};
}
onAddAccept() {
try {
const data = {
roadmapFk: this.roadmap.id,
warehouseFk: this.expeditionTruck.warehouseFk,
eta: this.expeditionTruck.eta,
description: this.expeditionTruck.description
warehouseFk: this.roadmapStop.warehouseFk,
eta: this.roadmapStop.eta,
description: this.roadmapStop.description
};
this.$http.post(`ExpeditionTrucks`, data)
this.$http.post(`RoadmapStops`, data)
.then(() => {
this.loadData();
this.vnApp.showSuccess(this.$t('Data saved!'));

View File

@ -23,9 +23,9 @@
}
},
"relations": {
"expeditionTruck": {
"roadmapStop": {
"type": "belongsTo",
"model": "ExpeditionTruck",
"model": "RoadmapStop",
"foreignKey": "truckFk"
}
}

View File

@ -8,7 +8,8 @@
},
"properties": {
"id": {
"type": "string"
"type": "number",
"id": true
},
"originFk": {
"type": "number"

View File

@ -37,18 +37,19 @@ class Controller extends Section {
});
const filter = {
fields: ['originFk', 'creationDate', 'newInstance'],
fields: ['id', 'originFk', 'creationDate', 'newInstance'],
where: {
originFk: value,
newInstance: {like: '%"isDeleted":true%'}
},
order: 'creationDate DESC'
order: 'creationDate DESC',
limit: 1
};
this.$http.get(`TicketLogs/findOne`, {filter})
this.$http.get(`TicketLogs`, {filter})
.then(res => {
if (res && res.data) {
if (res && res.data && res.data.length) {
const now = Date.vnNew();
const maxDate = new Date(res.data.creationDate);
const maxDate = new Date(res.data[0].creationDate);
maxDate.setHours(maxDate.getHours() + 1);
if (now <= maxDate)
return this.canRestoreTicket = true;

View File

@ -227,7 +227,7 @@ localFixtures:
- expeditionScan
- expeditionState
- expeditionStateType
- expeditionTruck
- roadmapStop
- expense
- genus
- greuge