feat(docuware): upload deliveryNote file
gitea/salix/pipeline/head This commit looks good Details

This commit is contained in:
Alex Moreno 2023-01-10 15:03:23 +01:00
parent 382aad2622
commit b8fe919b2a
2 changed files with 393 additions and 443 deletions

View File

@ -1,6 +1,6 @@
const got = require('got');
const UserError = require('vn-loopback/util/user-error');
const request = require('request');
const axios = require('axios');
module.exports = Self => {
Self.remoteMethodCtx('upload', {
@ -24,21 +24,7 @@ module.exports = Self => {
description: 'The dialog'
}
],
returns: [
{
arg: 'body',
type: 'file',
root: true
}, {
arg: 'Content-Type',
type: 'string',
http: {target: 'header'}
}, {
arg: 'Content-Disposition',
type: 'string',
http: {target: 'header'}
}
],
returns: [],
http: {
path: `/:id/upload`,
verb: 'POST'
@ -70,7 +56,6 @@ module.exports = Self => {
}
};
try {
// get fileCabinetId
const fileCabinetResponse = await got.get(`${docuwareUrl}/FileCabinets`, options);
const fileCabinetJson = JSON.parse(fileCabinetResponse.body).FileCabinet;
@ -423,48 +408,24 @@ module.exports = Self => {
};
const uploadUri = `${docuwareUrl}/FileCabinets/${fileCabinetId}/Documents?StoreDialogId=${storeDialogId}`;
const optionsUpload = {
'method': 'POST',
'url': uploadUri,
'headers': {
const FormData = require('form-data');
const data = new FormData();
data.append('document', JSON.stringify(templateJson), 'schema.json');
data.append('file[]', deliveryNote[0], 'file.pdf');
const uploadOptions = {
headers: {
'Content-Type': 'multipart/form-data',
'X-File-ModifiedDate': new Date(),
'Cookie': cookie
'Cookie': cookie,
...data.getHeaders()
},
'formData': {
'document': {
'value': JSON.stringify(templateJson),
'options': {
'filename': 'store.json',
'contentType': null
}
},
'file[]': {
'value': deliveryNote[0],
'options': {
'filename': 'deliveryNote.pdf',
'contentType': deliveryNote[1]
}
}
}
};
try {
return new Promise((resolve, reject) => {
request.post(optionsUpload, function(error) {
if (error) return reject(error);
resolve();
return await axios.post(uploadUri, data, uploadOptions)
.catch(() => {
throw new UserError('Failed to upload file');
});
});
} catch (error) {
console.log(error);
return;
}
} catch (error) {
if (error.code === 'ENOENT')
throw new UserError('The DOCUWARE PDF document does not exists');
throw error;
}
};
};

View File

@ -21,11 +21,11 @@
Add turn
</vn-item>
<vn-item class="dropdown"
vn-click-stop="showDeliveryNoteMenu.show($event, 'left')"
vn-click-stop="showDeliveryNoteMenu.show($event, 'left'); $ctrl.hasDocuware()"
translate>
Show Delivery Note...
<vn-menu vn-id="showDeliveryNoteMenu">
<vn-list>
<vn-list ng-if="!$ctrl.hasDocuwareFile">
<vn-item
ng-click="$ctrl.showPdfDeliveryNote('deliveryNote')"
translate>
@ -41,11 +41,29 @@
translate>
as CSV
</vn-item>
<div class="spinner-wrapper" ng-if="$ctrl.isLoadingDocuware">
<vn-spinner enable="$ctrl.isLoadingDocuware"></vn-spinner>
Loading Docuware info
</div>
</vn-list>
<vn-list ng-if="$ctrl.hasDocuwareFile">
<a class="vn-item"
ng-if="$ctrl.hasDocuwareFile"
href='api/Docuwares/{{$ctrl.ticket.id}}/download/deliveryClient/findTicket?access_token={{$ctrl.vnToken.token}}'
target="_blank"
translate>
as PDF
</a>
<vn-item
ng-click="$ctrl.showCsvDeliveryNote()"
translate>
as CSV
</vn-item>
</vn-list>
</vn-menu>
</vn-item>
<vn-item class="dropdown"
vn-click-stop="sendDeliveryNoteMenu.show($event, 'left')"
vn-click-stop="sendDeliveryNoteMenu.show($event, 'left'); $ctrl.hasDocuware()"
translate>
Send Delivery Note...
<vn-menu vn-id="sendDeliveryNoteMenu">
@ -55,6 +73,11 @@
translate>
Send PDF
</vn-item>
<vn-item
ng-click="$ctrl.uploadDocuware()"
translate>
Send PDF to Tablet
</vn-item>
<vn-item
ng-click="sendCsvConfirmation.show({email: $ctrl.ticket.client.email})"
translate>
@ -63,40 +86,6 @@
</vn-list>
</vn-menu>
</vn-item>
<vn-item class="dropdown"
vn-click-stop="showDeliveryNoteMenu.show($event, 'left'); $ctrl.hasDocuware()"
translate>
Docuware options...
<vn-menu vn-id="showDeliveryNoteMenu">
<vn-list ng-if="$ctrl.isLoadingDocuware">
<div class="spinner-wrapper">
<vn-spinner enable="$ctrl.isLoadingDocuware"></vn-spinner>
Loading Docuware info
</div>
</vn-list>
<vn-list ng-if="!$ctrl.isLoadingDocuware">
<a class="vn-item"
ng-if="$ctrl.hasDocuwareFile"
href='api/Docuwares/{{$ctrl.ticket.id}}/download/deliveryClient/findTicket?access_token={{$ctrl.vnToken.token}}'
target="_blank"
translate>
Show PDF
</a>
<vn-item
ng-if="!$ctrl.hasDocuwareFile"
ng-click="$ctrl.uploadDocuware()"
translate>
Upload Salix PDF
</vn-item>
<vn-item
ng-if="$ctrl.hasDocuwareFile"
ng-click="$ctrl.sendDocuwarePdfDeliveryNote({email: $ctrl.ticket.client.email})"
translate>
Send PDF
</vn-item>
</vn-list>
</vn-menu>
</vn-item>
<vn-item
ng-click="$ctrl.showPdfDeliveryNote('proforma')"
translate>