Получить `Sum of` из двух разных объединений (включенных) в Sequelize - PullRequest
0 голосов
/ 02 января 2019

Я хочу получить сумму столбца из двух разных таблиц в sequilize.

Я хочу указать точное поле totalpaid, refunded & refundable, которое варьируется в зависимости от группы, но я не могу его разрешить.

//Some pre-desined variables
var totalPaidQueryStr = '(CASE WHEN (SUM(inv_payment_record_invoices.payment)) IS NULL THEN 0 ELSE (SUM(inv_payment_record_invoices.payment)) END)';
var totalPaidQuery = [Sequelize.literal(totalPaidQueryStr), 'totalpaid']; //Get the total paid amount till date;
var refundedQueryStr = '(CASE WHEN (SUM(inv_payment_record_refunds.amount)) IS NULL THEN 0 ELSE (SUM(inv_payment_record_refunds.amount)) END)';
var refundedQuery = [Sequelize.literal(refundedQueryStr), 'refunded']; //Get the total paid amount till date
var refundableQueryStr = `(inv_payment_records.amount - (${totalPaidQueryStr} + ${refundedQueryStr}))`;
var refundableQuery = [Sequelize.literal(refundableQueryStr), 'refundable']; //Get the total due amount

return InvPaymentRecords.findOne({
    attributes: [
        'customer_id',
        'amount',
        'company_currency_id',
        'exchange_rate',
        totalPaidQuery, //Want to accurate sum
        refundedQuery, //Want to accurate sum
        refundableQuery
    ],
    where: {
        'id': payment_record_id,
        'company_id': company_id
    },
    include: [
        {
            model: InvPaymentRecordInvoices,
            require: false,
            attributes: [],
        },
        {
            model: InvPaymentRecordRefund,
            require: false,
            attributes: [],
        }
    ],
    group: [
        //'inv_payment_records.id',
        //'inv_payment_record_invoices.id',
        //'inv_payment_record_refunds.id'
    ]
}).then(iprdata => {
    return sequelize.Promise.resolve(iprdata);
}).catch(error => {
    return sequelize.Promise.reject(error);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...