dev #1731
|
@ -71,11 +71,10 @@ module.exports = Self => {
|
|||
}
|
||||
|
||||
try {
|
||||
const response = await Self.get(fileCabinet, filter);
|
||||
const [documents] = response.Items;
|
||||
if (!documents) return false;
|
||||
const [response] = await Self.get(fileCabinet, filter);
|
||||
if (!response) return false;
|
||||
|
||||
return {id: documents.Id};
|
||||
return {id: response['Document ID']};
|
||||
} catch (error) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ module.exports = Self => {
|
|||
|
||||
const email = new Email('delivery-note', params);
|
||||
|
||||
const docuwareFile = await models.Docuware.download(ctx, id, 'deliveryNote');
|
||||
const docuwareFile = await models.Docuware.download(id, 'deliveryNote');
|
||||
|
||||
return email.send({
|
||||
overrideAttachments: true,
|
||||
|
|
|
@ -16,19 +16,9 @@ describe('docuware download()', () => {
|
|||
|
||||
it('should return the document data', async() => {
|
||||
const docuwareId = 1;
|
||||
const response = {
|
||||
Items: [
|
||||
{
|
||||
Id: docuwareId,
|
||||
Fields: [
|
||||
{
|
||||
FieldName: 'ESTADO',
|
||||
Item: 'Firmado'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
const response = [{
|
||||
'Document ID': docuwareId
|
||||
}];
|
||||
spyOn(docuwareModel, 'get').and.returnValue((new Promise(resolve => resolve(response))));
|
||||
|
||||
const result = await models.Docuware.checkFile(ticketId, fileCabinetName, null, true);
|
||||
|
|
|
@ -111,7 +111,7 @@ module.exports = Self => {
|
|||
throw new UserError('Action not allowed on the test environment');
|
||||
|
||||
// delete old
|
||||
const docuwareFile = await models.Docuware.checkFile(ctx, id, fileCabinet, false);
|
||||
const docuwareFile = await models.Docuware.checkFile(id, fileCabinet, false);
|
||||
if (docuwareFile) {
|
||||
const deleteJson = {
|
||||
'Field': [{'FieldName': 'ESTADO', 'Item': 'Pendiente eliminar', 'ItemElementName': 'String'}]
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
INSERT INTO `account`.`role` (`id`, `name`, `description`, `hasLogin`)
|
||||
VALUES ('claimViewer','Trabajadores que consulta las reclamaciones ',1);
|
||||
|
||||
INSERT INTO `account`.`roleInherit` (`role`,`inheritsFrom`)
|
||||
SELECT `r`.`id`, `r2`.`id`
|
||||
FROM `account`.`role` `r`
|
||||
JOIN `account`.`role` `r2` ON `r2`.`name` = 'claimViewer'
|
||||
WHERE `r`.`name` IN (
|
||||
'salesPerson',
|
||||
'buyer',
|
||||
'deliveryBoss',
|
||||
'handmadeBoss'
|
||||
)
|
||||
|
||||
DELETE FROM `salix`.`ACL`
|
||||
WHERE `model`= 'claim'
|
||||
AND `property` IN (
|
||||
'filter',
|
||||
'find',
|
||||
'findById',
|
||||
'getSummary'
|
||||
);
|
||||
|
||||
INSERT INTO `salix`.`ACL` (`model`,`property`,`accessType`,`permission`,`principalType`,`principalid`)
|
||||
VALUES ('Claim','filter','READ','ALLOW','ROLE','claimViewer');
|
||||
INSERT INTO `salix`.`ACL` (`model`,`property`,`accessType`,`permission`,`principalType`,`principalid`)
|
||||
VALUES ('Claim','find','READ','ALLOW','ROLE','claimViewer');
|
||||
INSERT INTO `salix`.`ACL` (`model`,`property`,`accessType`,`permission`,`principalType`,`principalid`)
|
||||
VALUES ('Claim','findById','READ','ALLOW','ROLE','claimViewer');
|
||||
INSERT INTO `salix`.`ACL` (`model`,`property`,`accessType`,`permission`,`principalType`,`principalid`)
|
||||
VALUES ('Claim','getSummary','READ','ALLOW','ROLE','claimViewer');
|
||||
|
|
@ -25,10 +25,6 @@ class Controller extends SearchPanel {
|
|||
this.filter.values.push({});
|
||||
setTimeout(() => this.parentPopover.relocate());
|
||||
}
|
||||
|
||||
changeTag() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
ngModule.vnComponent('vnOrderCatalogSearchPanel', {
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
<vn-th field="street" expand>Street</vn-th>
|
||||
<vn-th field="city">City</vn-th>
|
||||
<vn-th field="postalCode" translate-attr="{title: 'Postcode'}" shrink>PC</vn-th>
|
||||
<vn-th field="clientFk" expand>Client</vn-th>
|
||||
<vn-th field="nickname" expand>Client</vn-th>
|
||||
<vn-th field="warehouse" expand>Warehouse</vn-th>
|
||||
<vn-th field="packages" shrink>Packages</vn-th>
|
||||
<vn-th field="volume" shrink>m³</vn-th>
|
||||
|
@ -100,9 +100,9 @@
|
|||
</field>
|
||||
</vn-td-editable>
|
||||
<vn-td expand title="{{::ticket.street}}">{{::ticket.street}}</vn-td>
|
||||
<vn-td
|
||||
expand
|
||||
ng-click="$ctrl.goToBuscaman(ticket)"
|
||||
<vn-td
|
||||
expand
|
||||
ng-click="$ctrl.goToBuscaman(ticket)"
|
||||
class="link"
|
||||
vn-tooltip="Open buscaman"
|
||||
tooltip-position="up">
|
||||
|
|
|
@ -32,6 +32,14 @@ module.exports = Self => {
|
|||
});
|
||||
|
||||
Self.docuwareDownload = async id => {
|
||||
const models = Self.app.models;
|
||||
const docuwareInfo = await models.Docuware.findOne({
|
||||
where: {
|
||||
code: 'deliveryNote',
|
||||
action: 'find'
|
||||
}
|
||||
});
|
||||
|
||||
const filter = {
|
||||
condition: [
|
||||
{
|
||||
|
@ -50,6 +58,6 @@ module.exports = Self => {
|
|||
}
|
||||
]
|
||||
};
|
||||
return Self.app.models.Docuware.download(id, 'deliveryNote', filter);
|
||||
return models.Docuware.download(id, 'deliveryNote', filter);
|
||||
};
|
||||
};
|
||||
|
|
|
@ -42,4 +42,5 @@ module.exports = function(Self) {
|
|||
require('../methods/ticket/expeditionPalletLabel')(Self);
|
||||
require('../methods/ticket/saveSign')(Self);
|
||||
require('../methods/ticket/invoiceTickets')(Self);
|
||||
require('../methods/ticket/docuwareDownload')(Self);
|
||||
};
|
||||
|
|
|
@ -3,10 +3,11 @@ import Section from 'salix/components/section';
|
|||
import './style.scss';
|
||||
|
||||
class Controller extends Section {
|
||||
constructor($element, $, vnReport, vnEmail) {
|
||||
constructor($element, $, vnReport, vnEmail, vnFile) {
|
||||
super($element, $);
|
||||
this.vnReport = vnReport;
|
||||
this.vnEmail = vnEmail;
|
||||
this.vnFile = vnFile;
|
||||
}
|
||||
|
||||
get ticketId() {
|
||||
|
@ -322,7 +323,7 @@ class Controller extends Section {
|
|||
}
|
||||
|
||||
docuwareDownload() {
|
||||
this.vnFile.download(`api/Ticket/${this.ticket.id}/docuwareDownload`);
|
||||
this.vnFile.download(`api/Tickets/${this.ticket.id}/docuwareDownload`);
|
||||
}
|
||||
|
||||
setTicketWeight(weight) {
|
||||
|
@ -335,7 +336,7 @@ class Controller extends Section {
|
|||
}
|
||||
}
|
||||
|
||||
Controller.$inject = ['$element', '$scope', 'vnReport', 'vnEmail'];
|
||||
Controller.$inject = ['$element', '$scope', 'vnReport', 'vnEmail', 'vnFile'];
|
||||
|
||||
ngModule.vnComponent('vnTicketDescriptorMenu', {
|
||||
template: require('./index.html'),
|
||||
|
|
|
@ -121,15 +121,18 @@ module.exports = Self => {
|
|||
`, [started, ended]);
|
||||
stmts.push(stmt);
|
||||
|
||||
stmt = new ParameterizedSQL(`INSERT INTO mail (receiver, subject, body)
|
||||
SELECT CONCAT(u.name, '@verdnatura.es'),
|
||||
CONCAT('Error registro de horas semana ', ?, ' año ', ?) ,
|
||||
CONCAT('No se ha podido enviar el registro de horas al empleado/s: ', GROUP_CONCAT(DISTINCT CONCAT('<br>', w.id, ' ', w.firstName, ' ', w.lastName)))
|
||||
FROM tmp.timeControlError tce
|
||||
JOIN vn.workerTimeControl wtc ON wtc.id = tce.id
|
||||
JOIN worker w ON w.id = wtc.userFK
|
||||
JOIN account.user u ON u.id = w.bossFk
|
||||
GROUP BY w.bossFk`, [args.week, args.year]);
|
||||
stmt = new ParameterizedSQL(`
|
||||
INSERT INTO mail (receiver, subject, body)
|
||||
SELECT CONCAT(u.name, '@verdnatura.es'),
|
||||
CONCAT('Error registro de horas semana ', ?, ' año ', ?) ,
|
||||
CONCAT('No se ha podido enviar el registro de horas al empleado/s: ',
|
||||
GROUP_CONCAT(DISTINCT CONCAT('<br>', w.id, ' ', w.firstName, ' ', w.lastName)))
|
||||
FROM tmp.timeControlError tce
|
||||
JOIN vn.workerTimeControl wtc ON wtc.id = tce.id
|
||||
JOIN worker w ON w.id = wtc.userFK
|
||||
JOIN account.user u ON u.id = w.bossFk
|
||||
GROUP BY w.bossFk
|
||||
`, [args.week, args.year]);
|
||||
stmts.push(stmt);
|
||||
|
||||
stmt = new ParameterizedSQL(`
|
||||
|
@ -177,10 +180,8 @@ module.exports = Self => {
|
|||
const workerTimeControlConfig = await models.WorkerTimeControlConfig.findOne(null, myOptions);
|
||||
|
||||
for (let day of days[index]) {
|
||||
if (!myOptions.transaction) {
|
||||
tx = await Self.beginTransaction({});
|
||||
myOptions.transaction = tx;
|
||||
}
|
||||
tx = await Self.beginTransaction({});
|
||||
myOptions.transaction = tx;
|
||||
try {
|
||||
workerFk = day.workerFk;
|
||||
if (day.timeWorkDecimal > 0 && day.timeWorkedDecimal == null
|
||||
|
@ -365,13 +366,31 @@ module.exports = Self => {
|
|||
previousReceiver = day.receiver;
|
||||
}
|
||||
|
||||
if (tx) {
|
||||
await tx.commit();
|
||||
delete myOptions.transaction;
|
||||
}
|
||||
if (tx) await tx.commit();
|
||||
} catch (e) {
|
||||
const stmts = [];
|
||||
let stmt;
|
||||
stmt = new ParameterizedSQL(`
|
||||
INSERT INTO mail (receiver, subject, body)
|
||||
SELECT CONCAT(u.name, '@verdnatura.es'),
|
||||
CONCAT('Error registro de horas semana ', ?, ' año ', ?) ,
|
||||
CONCAT('No se ha podido enviar el registro de horas al empleado: ',
|
||||
w.id, ' ', w.firstName, ' ', w.lastName, ' por el motivo: ', ?)
|
||||
FROM worker w
|
||||
JOIN account.user u ON u.id = w.bossFk
|
||||
WHERE w.id = ?
|
||||
`, [args.week, args.year, e.message, day.workerFk]);
|
||||
stmts.push(stmt);
|
||||
|
||||
const sql = ParameterizedSQL.join(stmts, ';');
|
||||
await conn.executeStmt(sql);
|
||||
|
||||
previousWorkerFk = day.workerFk;
|
||||
previousReceiver = day.receiver;
|
||||
|
||||
if (tx) await tx.rollback();
|
||||
throw e;
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ module.exports = Self => {
|
|||
const salix = await models.Url.findOne({
|
||||
where: {
|
||||
appName: 'salix',
|
||||
environment: process.env.NODE_ENV || 'dev'
|
||||
environment: process.env.NODE_ENV || 'development'
|
||||
}
|
||||
}, myOptions);
|
||||
|
||||
|
@ -61,7 +61,7 @@ module.exports = Self => {
|
|||
const url = `${salix.url}worker/${args.workerId}/time-control?timestamp=${timestamp}`;
|
||||
ctx.args.url = url;
|
||||
|
||||
Self.sendTemplate(ctx, 'weekly-hour-record');
|
||||
await Self.sendTemplate(ctx, 'weekly-hour-record');
|
||||
|
||||
return models.WorkerTimeControl.updateWorkerTimeControlMail(ctx, myOptions);
|
||||
};
|
||||
|
|
|
@ -5,7 +5,7 @@ class Controller extends Section {
|
|||
onSubmit() {
|
||||
const sip = this.worker.sip;
|
||||
const params = {
|
||||
userFk: this.worker.userFk,
|
||||
userFk: this.worker.id,
|
||||
extension: sip.extension
|
||||
};
|
||||
this.$.watcher.check();
|
||||
|
|
|
@ -8,4 +8,4 @@ SELECT
|
|||
FROM supplier s
|
||||
JOIN entry e ON e.supplierFk = s.id
|
||||
LEFT JOIN province p ON p.id = s.provinceFk
|
||||
WHERE e.id = ?
|
||||
WHERE e.id = ?
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
<h3 class="uppercase">{{invoice.name}}</h3>
|
||||
<div>{{invoice.postalAddress}}</div>
|
||||
<div>{{invoice.postcodeCity}}</div>
|
||||
<div>{{invoice.postCode}}, {{invoice.city}}, ({{invoice.province}})</div>
|
||||
<div v-if="invoice.nif">{{$t('fiscalId')}}: {{invoice.nif}}</div>
|
||||
<div v-if="invoice.phone">{{$t('phone')}}: {{invoice.phone}}</div>
|
||||
</div>
|
||||
|
|
|
@ -4,6 +4,9 @@ SELECT
|
|||
i.issued,
|
||||
s.name,
|
||||
s.street AS postalAddress,
|
||||
s.city,
|
||||
s.postCode,
|
||||
pr.name province,
|
||||
s.nif,
|
||||
s.phone,
|
||||
p.name payMethod
|
||||
|
@ -11,4 +14,5 @@ SELECT
|
|||
JOIN supplier s ON s.id = i.supplierFk
|
||||
JOIN company c ON c.id = i.companyFk
|
||||
JOIN payMethod p ON p.id = s.payMethodFk
|
||||
LEFT JOIN province pr ON pr.id = s.provinceFk
|
||||
WHERE i.id = ?
|
||||
|
|
Loading…
Reference in New Issue