All files / source/products update.js

100% Statements 8/8
100% Branches 8/8
100% Functions 1/1
100% Lines 8/8

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                5x 5x                                                                                             4x   1x 1x   4x   1x 1x              
import moment from 'moment-timezone';
 
import APIError from '../../helpers/error';
import ProductDao from '../../database/dao/product';
 
import Totvs from '../../services/totvs';
 
async function updateProduct(productId, product, opts = {}, sendErp = false) {
  try {
    const updProduct = await ProductDao.updateProduct(
      {
        id: productId,
      },
      {
        name: product.name,
        fullName: product.fullName,
        complementCode: product.complementCode,
        complementInfo: product.complementInfo,
        fullDescription: product.fullDescription,
        status: product.status,
        unitMeasure: product.unitMeasure,
        materialFamily: product.materialFamily,
        productGroupingCode: product.productGroupingCode,
        stockGroup: product.stockGroup || null,
        productControlType: product.productControlType,
        stockControlType: product.stockControlType,
        volume: product.volume,
        height: product.height,
        width: product.width,
        length: product.length,
        grossWeight: product.grossWeight,
        netWeight: product.netWeight,
        origin: product.origin,
        taxClassification: product.taxClassification,
        conversionFactor: product.conversionFactor,
        multipleSale: product.multipleSale,
        businessUnit: product.businessUnit,
        level1: product.level1,
        level2: product.level2,
        level3: product.level3,
        level4: product.level4,
        level5: product.level5,
        controlExpirationDate: product.controlExpirationDate,
        inboundPreExpiration: product.inboundPreExpiration,
        outboundPreExpiration: product.outboundPreExpiration,
        lifeDays: product.lifeDays,
        overdueDays: product.overdueDays,
        minimalLeftOver: product.minimalLeftOver,
        retailLoss: product.retailLoss,
        note: product.note,
        updatedUser: product.updatedUser,
        updatedAt: moment().format(),
      },
      opts
    );
 
    if (updProduct && sendErp) {
      // Integração ERP
      product.id = productId;
      Totvs.syncProductMeasure([product], product.updatedUser);
    }
    return updProduct;
  } catch (error) {
    console.log(error);
    throw new APIError('', error);
  }
}
 
export default {
  updateProduct,
};