All files / source/orderTypeConfig search.js

3.84% Statements 1/26
0% Branches 0/19
0% Functions 0/1
3.84% Lines 1/26

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101        8x                                                                                                                                                                                                
import Sequelize from 'sequelize';
 
import OrderTypeConfigDao from '../../database/dao/orderTypeConfig';
 
const { Op } = Sequelize;
 
async function searchOrderTypeConfigs({
  branchCode,
  movementType,
  depositCode,
  customerSupplierCode,
  carrierCode,
  deliveryType,
  stockGroupCode,
  cfop,
}) {
  try {
    if (!branchCode || !movementType || !depositCode) {
      return null;
    }
 
    const query = {
      branchCode,
      movementType: parseInt(movementType, 10),
      depositCode,
      status: 1,
    };
 
    if (customerSupplierCode) {
      query.customerSupplierCode = { [Op.or]: [customerSupplierCode, '*'] };
    } else {
      query.customerSupplierCode = '*';
    }
 
    if (carrierCode) {
      query.carrierCode = { [Op.or]: [carrierCode, '*'] };
    } else {
      query.carrierCode = '*';
    }
 
    if (deliveryType) {
      query.deliveryType = { [Op.or]: [parseInt(deliveryType, 10), 0] };
    } else {
      query.deliveryType = 0;
    }
 
    if (stockGroupCode) {
      query.stockGroupCode = { [Op.or]: [stockGroupCode, '*'] };
    } else {
      query.stockGroupCode = '*';
    }
 
    if (cfop) {
      query.cfop = { [Op.or]: [cfop, '*'] };
    } else {
      query.cfop = '*';
    }
 
    const orderTypeConfigs = await OrderTypeConfigDao.findOrderTypeConfigs(
      query,
      {
        attributes: [
          'movementType',
          'branchCode',
          'depositCode',
          'customerSupplierCode',
          'carrierCode',
          'deliveryType',
          'stockGroupCode',
          'cfop',
          'orderType',
        ],
        order: [
          ['movementType', 'desc'],
          ['branchCode', 'desc'],
          ['depositCode', 'desc'],
          ['customerSupplierCode', 'desc'],
          ['carrierCode', 'desc'],
          ['deliveryType', 'desc'],
          ['stockGroupCode', 'desc'],
          ['cfop', 'desc'],
        ],
      }
    );
 
    if (!orderTypeConfigs || orderTypeConfigs.length === 0) {
      return null;
    }
 
    return orderTypeConfigs[0];
  } catch (error) {
    // eslint-disable-next-line no-console
    console.log(error);
    return null;
  }
}
 
export default {
  searchOrderTypeConfigs,
};