summaryrefslogtreecommitdiff
path: root/addons/pos_restaurant_adyen/static/src/js/payment_adyen.js
blob: 6bdb845c92b8516e7fdd09ce36aabb970d1acb8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
odoo.define('pos_restaurant_adyen.payment', function (require) {
    "use strict";

    var PaymentAdyen = require('pos_adyen.payment');
    var models = require('point_of_sale.models');

    PaymentAdyen.include({
        _adyen_pay_data: function () {
            var data = this._super();

            if (data.SaleToPOIRequest.PaymentRequest.SaleData.SaleToAcquirerData) {
                data.SaleToPOIRequest.PaymentRequest.SaleData.SaleToAcquirerData += "&authorisationType=PreAuth";
            } else {
                data.SaleToPOIRequest.PaymentRequest.SaleData.SaleToAcquirerData = "authorisationType=PreAuth";
            }
    
            return data;
        },

        send_payment_adjust: function (cid) {
            var order = this.pos.get_order();
            var line = order.get_paymentline(cid);
            var data = {
                originalReference: line.transaction_id,
                modificationAmount: {
                    value: parseInt(line.amount * Math.pow(10, this.pos.currency.decimals)),
                    currency: this.pos.currency.name,
                },
                merchantAccount: this.payment_method.adyen_merchant_account,
                additionalData: {
                    industryUsage: 'DelayedCharge',
                },
            };

            return this._call_adyen(data, 'adjust');
        },

        canBeAdjusted: function (cid) {
            var order = this.pos.get_order();
            var line = order.get_paymentline(cid);
            return ['mc', 'visa', 'amex', 'discover'].includes(line.card_type);
        }
    });
});