master #1367

Merged
juan merged 9 commits from master into test 2023-03-06 08:28:31 +00:00
6 changed files with 87 additions and 45 deletions

View File

@ -12,6 +12,9 @@ services:
placement: placement:
constraints: constraints:
- node.role == worker - node.role == worker
resources:
limits:
memory: 1G
back: back:
image: registry.verdnatura.es/salix-back:${BRANCH_NAME:?} image: registry.verdnatura.es/salix-back:${BRANCH_NAME:?}
build: . build: .
@ -38,6 +41,9 @@ services:
placement: placement:
constraints: constraints:
- node.role == worker - node.role == worker
resources:
limits:
memory: 4G
configs: configs:
datasources: datasources:
external: true external: true

View File

@ -32,7 +32,9 @@ module.exports = Self => {
Self.confirm = async(signatureVersion, merchantParameters, signature) => { Self.confirm = async(signatureVersion, merchantParameters, signature) => {
const $ = Self.app.models; const $ = Self.app.models;
let transaction;
try {
const decodedParams = JSON.parse( const decodedParams = JSON.parse(
base64url.decode(merchantParameters, 'utf8')); base64url.decode(merchantParameters, 'utf8'));
const params = {}; const params = {};
@ -41,16 +43,28 @@ module.exports = Self => {
params[param] = decodeURIComponent(decodedParams[param]); params[param] = decodeURIComponent(decodedParams[param]);
const orderId = params['Ds_Order']; const orderId = params['Ds_Order'];
const merchantId = parseInt(params['Ds_MerchantCode']);
if (!orderId) if (!orderId)
throw new UserError('Order id not found'); throw new UserError('Order id not provided');
transaction = await Self.findById(orderId, {fields: ['id']});
if (!transaction)
throw new UserError('Order not found');
await transaction.updateAttributes({
merchantParameters,
signature,
signatureVersion,
});
const merchantId = parseInt(params['Ds_MerchantCode']);
if (!merchantId) if (!merchantId)
throw new UserError('Mechant id not found'); throw new UserError('Merchant id not provided');
const merchant = await $.TpvMerchant.findById(merchantId, { const merchant = await $.TpvMerchant.findById(merchantId, {
fields: ['id', 'secretKey'] fields: ['id', 'secretKey']
}); });
if (!merchant)
throw new UserError('Merchant not found');
const base64hmac = Self.createSignature( const base64hmac = Self.createSignature(
orderId, orderId,
@ -72,5 +86,12 @@ module.exports = Self => {
]); ]);
return true; return true;
} catch (err) {
if (transaction)
await transaction.updateAttribute('responseError', err.message);
else
console.error(err);
throw err;
}
}; };
}; };

View File

@ -35,6 +35,18 @@
}, },
"created": { "created": {
"type": "date" "type": "date"
},
"merchantParameters": {
"type": "string"
},
"signature": {
"type": "string"
},
"signatureVersion": {
"type": "string"
},
"responseError": {
"type": "string"
} }
}, },
"relations": { "relations": {
@ -45,4 +57,3 @@
} }
} }
} }

View File

@ -54,3 +54,6 @@
<vn-popup vn-id="summary"> <vn-popup vn-id="summary">
<vn-invoice-out-summary invoice-out="$ctrl.invoiceOut"></vn-invoice-out-summary> <vn-invoice-out-summary invoice-out="$ctrl.invoiceOut"></vn-invoice-out-summary>
</vn-popup> </vn-popup>
<vn-client-descriptor-popover
vn-id="clientDescriptor">
</vn-client-descriptor-popover>

View File

@ -33,16 +33,16 @@
</vn-icon-button> </vn-icon-button>
</vn-td> </vn-td>
</vn-tr> </vn-tr>
<vn-tr ng-repeat="waste in detail.lines" class="clickable vn-tr" <a ng-repeat="waste in detail.lines" class="clickable vn-tr"
ui-sref="item.waste.detail({buyer: waste.buyer, family: waste.family})" ui-sref="item.waste.detail({buyer: waste.buyer, family: waste.family})"
ng-class="{'hidden': !$ctrl.wasteConfig[detail.buyer].hidden}"> ng-show="$ctrl.wasteConfig[detail.buyer].hidden">
<vn-td></vn-td> <vn-td></vn-td>
<vn-td>{{::waste.family}}</vn-td> <vn-td>{{::waste.family}}</vn-td>
<vn-td number>{{::(waste.percentage / 100) | percentage: 2}}</vn-td> <vn-td number>{{::(waste.percentage / 100) | percentage: 2}}</vn-td>
<vn-td number>{{::waste.dwindle | currency: 'EUR'}}</vn-td> <vn-td number>{{::waste.dwindle | currency: 'EUR'}}</vn-td>
<vn-td number>{{::waste.total | currency: 'EUR'}}</vn-td> <vn-td number>{{::waste.total | currency: 'EUR'}}</vn-td>
<vn-td shrink></vn-td> <vn-td shrink></vn-td>
</vn-tr> </a>
</vn-tbody> </vn-tbody>
</vn-table> </vn-table>
</vn-card> </vn-card>

View File

@ -1,10 +1,11 @@
SELECT SELECT
io.amount, io2.amount,
io.ref, io2.ref,
io.issued, io2.issued,
ict.description ict.description
FROM invoiceOut io FROM invoiceOut io
JOIN invoiceCorrection ic ON ic.correctingFk = io.id JOIN invoiceCorrection ic ON ic.correctingFk = io.id
JOIN invoiceCorrectionType ict ON ict.id = ic.invoiceCorrectionTypeFk JOIN invoiceOut io2 ON io2.id = ic.correctedFk
LEFT JOIN ticket t ON t.refFk = io.ref LEFT JOIN ticket t ON t.refFk = io.ref
JOIN invoiceCorrectionType ict ON ict.id = ic.invoiceCorrectionTypeFk
WHERE io.ref = ? WHERE io.ref = ?