refs #5094 feat(ticket_index): docuware multiple deliveryNote
gitea/salix/pipeline/head There was a failure building this commit
Details
gitea/salix/pipeline/head There was a failure building this commit
Details
This commit is contained in:
parent
bbdc0d3e7f
commit
d3c4a6ba5c
|
@ -20,8 +20,8 @@ module.exports = Self => {
|
|||
|
||||
const options = await Self.getOptions();
|
||||
|
||||
if (!process.env.NODE_ENV)
|
||||
return Math.round();
|
||||
// if (!process.env.NODE_ENV)
|
||||
// return Math.round();
|
||||
|
||||
const response = await axios.get(`${options.url}/FileCabinets/${fileCabinetId}/dialogs`, options.headers);
|
||||
const dialogs = response.data.Dialog;
|
||||
|
@ -44,8 +44,8 @@ module.exports = Self => {
|
|||
}
|
||||
});
|
||||
|
||||
if (!process.env.NODE_ENV)
|
||||
return Math.round();
|
||||
// if (!process.env.NODE_ENV)
|
||||
// return Math.round();
|
||||
|
||||
const fileCabinetResponse = await axios.get(`${options.url}/FileCabinets`, options.headers);
|
||||
const fileCabinets = fileCabinetResponse.data.FileCabinet;
|
||||
|
|
|
@ -7,30 +7,27 @@ module.exports = Self => {
|
|||
accessType: 'WRITE',
|
||||
accepts: [
|
||||
{
|
||||
arg: 'id',
|
||||
type: 'number',
|
||||
description: 'The ticket id',
|
||||
http: {source: 'path'}
|
||||
arg: 'ticketIds',
|
||||
type: ['number'],
|
||||
description: 'The ticket ids',
|
||||
required: true
|
||||
},
|
||||
{
|
||||
arg: 'fileCabinet',
|
||||
type: 'string',
|
||||
description: 'The file cabinet'
|
||||
},
|
||||
{
|
||||
arg: 'dialog',
|
||||
type: 'string',
|
||||
description: 'The dialog'
|
||||
description: 'The file cabinet',
|
||||
required: true
|
||||
}
|
||||
],
|
||||
returns: [],
|
||||
http: {
|
||||
path: `/:id/upload`,
|
||||
path: `/upload`,
|
||||
verb: 'POST'
|
||||
}
|
||||
});
|
||||
|
||||
Self.upload = async function(ctx, id, fileCabinet) {
|
||||
Self.upload = async function(ctx, ticketIds, fileCabinet) {
|
||||
delete ctx.args.ticketIds;
|
||||
const models = Self.app.models;
|
||||
const action = 'store';
|
||||
|
||||
|
@ -38,18 +35,22 @@ module.exports = Self => {
|
|||
const fileCabinetId = await Self.getFileCabinet(fileCabinet);
|
||||
const dialogId = await Self.getDialog(fileCabinet, action, fileCabinetId);
|
||||
|
||||
const uploaded = [];
|
||||
|
||||
// get delivery note
|
||||
for (id of ticketIds) {
|
||||
// get delivery note
|
||||
ctx.args.id = id;
|
||||
const deliveryNote = await models.Ticket.deliveryNotePdf(ctx, {
|
||||
id,
|
||||
type: 'deliveryNote'
|
||||
});
|
||||
|
||||
// get ticket data
|
||||
const ticket = await models.Ticket.findById(id, {
|
||||
include: [{
|
||||
relation: 'client',
|
||||
scope: {
|
||||
fields: ['id', 'socialName', 'fi']
|
||||
fields: ['id', 'name', 'fi']
|
||||
}
|
||||
}]
|
||||
});
|
||||
|
@ -75,7 +76,7 @@ module.exports = Self => {
|
|||
{
|
||||
'FieldName': 'NOMBRE_PROVEEDOR',
|
||||
'ItemElementName': 'string',
|
||||
'Item': ticket.client().socialName,
|
||||
'Item': ticket.client().name + ' - ' + id,
|
||||
},
|
||||
{
|
||||
'FieldName': 'FECHA_FACTURA',
|
||||
|
@ -105,8 +106,8 @@ module.exports = Self => {
|
|||
]
|
||||
};
|
||||
|
||||
if (process.env.NODE_ENV != 'production')
|
||||
throw new UserError('Action not allowed on the test environment');
|
||||
// if (process.env.NODE_ENV != 'production')
|
||||
// throw new UserError('Action not allowed on the test environment');
|
||||
|
||||
// delete old
|
||||
const docuwareFile = await models.Docuware.checkFile(ctx, id, fileCabinet, false);
|
||||
|
@ -133,9 +134,17 @@ module.exports = Self => {
|
|||
},
|
||||
};
|
||||
|
||||
return await axios.post(uploadUri, data, uploadOptions)
|
||||
.catch(() => {
|
||||
throw new UserError('Failed to upload file');
|
||||
});
|
||||
try {
|
||||
await axios.post(uploadUri, data, uploadOptions);
|
||||
} catch (err) {
|
||||
const $t = ctx.req.__;
|
||||
const message = $t('Failed to upload ticket', {id});
|
||||
if (uploaded.length)
|
||||
await models.TicketTracking.setDelivered(ctx, uploaded);
|
||||
throw new UserError(message);
|
||||
}
|
||||
uploaded.push(id);
|
||||
}
|
||||
return models.TicketTracking.setDelivered(ctx, ticketIds);
|
||||
};
|
||||
};
|
||||
|
|
|
@ -173,5 +173,6 @@
|
|||
"This ticket is already a refund": "This ticket is already a refund",
|
||||
"A claim with that sale already exists": "A claim with that sale already exists",
|
||||
"Can't transfer claimed sales": "Can't transfer claimed sales",
|
||||
"Invalid quantity": "Invalid quantity"
|
||||
"Invalid quantity": "Invalid quantity",
|
||||
"Failed to upload delivery note": "Error to upload delivery note {{id}}"
|
||||
}
|
||||
|
|
|
@ -259,7 +259,7 @@
|
|||
"App name does not exist": "El nombre de aplicación no es válido",
|
||||
"Try again": "Vuelve a intentarlo",
|
||||
"Aplicación bloqueada por el usuario 9": "Aplicación bloqueada por el usuario 9",
|
||||
"Failed to upload file": "Error al subir archivo",
|
||||
"Failed to upload delivery note": "Error al subir albarán {{id}}",
|
||||
"The DOCUWARE PDF document does not exists": "El documento PDF Docuware no existe",
|
||||
"It is not possible to modify tracked sales": "No es posible modificar líneas de pedido que se hayan empezado a preparar",
|
||||
"It is not possible to modify sales that their articles are from Floramondo": "No es posible modificar líneas de pedido cuyos artículos sean de Floramondo",
|
||||
|
|
|
@ -326,14 +326,8 @@ class Controller extends Section {
|
|||
if (!force)
|
||||
return this.$.pdfToTablet.show();
|
||||
|
||||
return this.$http.post(`Docuwares/${this.id}/upload`, {fileCabinet: 'deliveryNote'})
|
||||
return this.$http.post(`Docuwares/upload`, {fileCabinet: 'deliveryNote', ticketIds: [this.id]})
|
||||
.then(() => {
|
||||
this.$.balanceCreate.amountPaid = this.ticket.totalWithVat;
|
||||
this.$.balanceCreate.clientFk = this.ticket.clientFk;
|
||||
this.$.balanceCreate.description = 'Albaran: ';
|
||||
this.$.balanceCreate.description += this.ticket.id;
|
||||
|
||||
this.$.balanceCreate.show();
|
||||
this.vnApp.showSuccess(this.$t('PDF sent!'));
|
||||
});
|
||||
}
|
||||
|
|
|
@ -304,9 +304,8 @@ describe('Ticket Component vnTicketDescriptorMenu', () => {
|
|||
expect(controller.$.pdfToTablet.show).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should make a query and show balance create', () => {
|
||||
it('should make a query', () => {
|
||||
controller.$.balanceCreate = {show: () => {}};
|
||||
jest.spyOn(controller.$.balanceCreate, 'show');
|
||||
jest.spyOn(controller.vnApp, 'showSuccess');
|
||||
|
||||
$httpBackend.whenPOST(`Docuwares/${ticket.id}/upload`).respond(true);
|
||||
|
@ -314,7 +313,6 @@ describe('Ticket Component vnTicketDescriptorMenu', () => {
|
|||
$httpBackend.flush();
|
||||
|
||||
expect(controller.vnApp.showSuccess).toHaveBeenCalled();
|
||||
expect(controller.$.balanceCreate.show).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -152,21 +152,21 @@
|
|||
</vn-data-viewer>
|
||||
<div fixed-bottom-right>
|
||||
<vn-vertical style="align-items: center;">
|
||||
<vn-button class="round sm vn-mb-sm"
|
||||
icon="print"
|
||||
<vn-button class="round vn-mb-sm"
|
||||
icon="install_mobile"
|
||||
ng-show="$ctrl.totalChecked > 0"
|
||||
ng-click="$ctrl.setDelivered()"
|
||||
ng-click="$ctrl.sendDocuware()"
|
||||
vn-tooltip="Set as delivered and open delivery note(s)"
|
||||
tooltip-position="left">
|
||||
</vn-button>
|
||||
<vn-button class="round sm vn-mb-sm"
|
||||
<vn-button class="round vn-mb-sm"
|
||||
icon="icon-recovery"
|
||||
ng-show="$ctrl.totalChecked > 0"
|
||||
ng-click="$ctrl.openBalanceDialog()"
|
||||
vn-tooltip="Payment on account..."
|
||||
tooltip-position="left">
|
||||
</vn-button>
|
||||
<vn-button class="round sm vn-mb-sm"
|
||||
<vn-button class="round vn-mb-sm"
|
||||
icon="icon-invoice"
|
||||
ng-click="makeInvoiceConfirmation.show()"
|
||||
ng-show="$ctrl.totalChecked > 0"
|
||||
|
|
|
@ -9,14 +9,15 @@ export default class Controller extends Section {
|
|||
this.vnReport = vnReport;
|
||||
}
|
||||
|
||||
setDelivered() {
|
||||
sendDocuware() {
|
||||
const checkedTickets = this.checked;
|
||||
let ids = [];
|
||||
let ticketIds = [];
|
||||
|
||||
for (let ticket of checkedTickets)
|
||||
ids.push(ticket.id);
|
||||
ticketIds.push(ticket.id);
|
||||
|
||||
this.$http.post('TicketTrackings/setDelivered', ids).then(res => {
|
||||
return this.$http.post(`Docuwares/upload`, {fileCabinet: 'deliveryNote', ticketIds})
|
||||
.then(res => {
|
||||
let state = res.data;
|
||||
for (let ticket of checkedTickets) {
|
||||
ticket.stateFk = state.id;
|
||||
|
@ -24,15 +25,9 @@ export default class Controller extends Section {
|
|||
ticket.alertLevel = state.alertLevel;
|
||||
ticket.alertLevelCode = state.code;
|
||||
}
|
||||
this.openDeliveryNotes(ids);
|
||||
});
|
||||
}
|
||||
|
||||
openDeliveryNotes(ids) {
|
||||
for (let id of ids)
|
||||
this.vnReport.show(`Tickets/${id}/delivery-note-pdf`);
|
||||
}
|
||||
|
||||
openBalanceDialog() {
|
||||
const checkedTickets = this.checked;
|
||||
const description = [];
|
||||
|
|
Loading…
Reference in New Issue