/var/www/greso.tech/server/nsm/controllers/order
NameSizeModeActions
comment/-0755rm
document/-0755rm
inventory/-0755rm
message/-0755rm
movement/-0755rm
payment/-0755rm
status/-0755rm
create.js127780644editdlrm
delete.js8280644editdlrm
details.js21680644editdlrm
edit.js140900644editdlrm
history.js11930644editdlrm
lead.js110190644editdlrm
list.js37870644editdlrm
search.js30470644editdlrm
Edit: /var/www/greso.tech/server/nsm/controllers/order/create.js (12778B)
module.exports = function ({ db, logger }) { const uuid = require('uuid'); const { NotFound, BadRequest } = require('../../responseModels/errors') const { isSet, isEmail, isPhone, isEmpty, minLength, isNumber, parseBool } = require('../../utils/validator.util') return async (req, res, next) => { logger.child({ path: req.path, request: req.query }).info() let t1 = performance.now() let transaction = await db.sequelize.transaction() try { // client name // client phone // client email // pickup address (street, state, zip, city) // delivery address (street, state, zip, city) var { id, // provider reference_number, // provider companyId, userId, destinationUserId, salesRepId, qaId, warehouseId, providerId, app, pickupAddressId, deliveryAddressId, pickupAreaId, deliveryAreaId, orderType, hold, followUpDate, pickupDateFrom, // provider pickupDateTo, // provider deliveryDateFrom, // provider deliveryDateTo, // provider loadingDate, deliveryDate, estimateChargesId, reviceChargesId, deliveryChargesId, inventoryId, inventory } = req.body // required if (!isSet(id) || isEmpty(id)) { id = uuid.v4() }else{ const order = await db.order.findOne({ where: { id: id } }) if (order) { throw new BadRequest({ code: 2000, lang: req.user?.languageCode }) } } if (!isSet(companyId) || isEmpty(companyId)) { throw new BadRequest({ code: 2003, lang: req.user?.languageCode }) } if (!isSet(orderType) || isEmpty(orderType)) { throw new BadRequest({ code: 2124, lang: req.user?.languageCode }) } var params = { companyId, orderType, } // static params params['status'] = ORDER_STATUS.NEW params['pay_status_order'] = 'no_pay' // not required if (isSet(id)){ if(isEmpty(id)) { throw new BadRequest({ code: 2007, lang: req.user?.languageCode }) }else{ params['id'] = id } } if (isSet(reference_number)){ if(isEmpty(reference_number)) { throw new BadRequest({ code: 2024, lang: req.user?.languageCode }) }else{ params['reference_number'] = reference_number } } if (isSet(userId)){ if(isEmpty(userId)) { throw new BadRequest({ code: 2011, lang: req.user?.languageCode }) }else{ params['userId'] = userId } } if (isSet(destinationUserId)){ if(isEmpty(destinationUserId)) { throw new BadRequest({ code: 2048, lang: req.user?.languageCode }) }else{ params['destinationUserId'] = destinationUserId } } if (isSet(salesRepId)){ if(isEmpty(salesRepId)) { throw new BadRequest({ code: 2047, lang: req.user?.languageCode }) }else{ params['salesRepId'] = salesRepId } } if (isSet(qaId)){ if(isEmpty(qaId)) { throw new BadRequest({ code: 2049, lang: req.user?.languageCode }) }else{ params['qaId'] = qaId } } if (isSet(warehouseId)){ if(isEmpty(warehouseId)) { throw new BadRequest({ code: 2053, lang: req.user?.languageCode }) }else{ params['warehouseId'] = warehouseId } } if (isSet(providerId)){ if(isEmpty(providerId)) { throw new BadRequest({ code: 2054, lang: req.user?.languageCode }) }else{ params['providerId'] = providerId } } if (isSet(app)){ if(isEmpty(app)) { throw new BadRequest({ code: 2016, lang: req.user?.languageCode }) }else{ params['app'] = app } } if (isSet(pickupAddressId)){ if(isEmpty(pickupAddressId)) { throw new BadRequest({ code: 2018, lang: req.user?.languageCode }) }else{ params['pickupAddressId'] = pickupAddressId } } if (isSet(deliveryAddressId)){ if(isEmpty(deliveryAddressId)) { throw new BadRequest({ code: 2019, lang: req.user?.languageCode }) }else{ params['deliveryAddressId'] = deliveryAddressId } } if (isSet(pickupAreaId)){ if(isEmpty(pickupAreaId)) { throw new BadRequest({ code: 2039, lang: req.user?.languageCode }) }else{ params['pickupAreaId'] = pickupAreaId } } if (isSet(deliveryAreaId)){ if(isEmpty(deliveryAreaId)) { throw new BadRequest({ code: 2040, lang: req.user?.languageCode }) }else{ params['deliveryAreaId'] = deliveryAreaId } } if (isSet(hold)){ if(isEmpty(hold)) { throw new BadRequest({ code: 2103, lang: req.user?.languageCode }) }else{ params['hold'] = hold } } if (isSet(followUpDate)){ if(isEmpty(followUpDate)) { throw new BadRequest({ code: 2102, lang: req.user?.languageCode }) }else{ params['followUpDate'] = followUpDate } } if (isSet(pickupDateFrom)){ if(isEmpty(pickupDateFrom)) { throw new BadRequest({ code: 2020, lang: req.user?.languageCode }) }else{ params['pickupDateFrom'] = pickupDateFrom } } if (isSet(pickupDateTo)){ if(isEmpty(pickupDateTo)) { throw new BadRequest({ code: 2022, lang: req.user?.languageCode }) }else{ params['pickupDateTo'] = pickupDateTo } } if (isSet(deliveryDateFrom)){ if(isEmpty(deliveryDateFrom)) { throw new BadRequest({ code: 2021, lang: req.user?.languageCode }) }else{ params['deliveryDateFrom'] = deliveryDateFrom } } if (isSet(deliveryDateTo)){ if(isEmpty(deliveryDateTo)) { throw new BadRequest({ code: 2021, lang: req.user?.languageCode }) }else{ params['deliveryDateTo'] = deliveryDateTo } } if (isSet(loadingDate)){ if(isEmpty(loadingDate)) { throw new BadRequest({ code: 2055, lang: req.user?.languageCode }) }else{ params['loadingDate'] = loadingDate } } if (isSet(deliveryDate)){ if(isEmpty(deliveryDate)) { throw new BadRequest({ code: 2084, lang: req.user?.languageCode }) }else{ params['deliveryDate'] = deliveryDate } } const company = await db.company.findOne({ where: { id: companyId } }) if (company) { company.ordersCreated++ company.save() }else{ throw new BadRequest({ code: 2003, lang: req.user?.languageCode }) } // GENERATE ID var zerofilled = ('000000'+company.ordersCreated).slice(-6); params['number'] = company.prefix + zerofilled params['updateUserId'] = req.user.id; const newOrder = await db.order.create(params) await db.orderHistory.create({ orderId: newOrder.id, userId: req.user.id || null, // userId: req.body.userId || null, status: ORDER_STATUS.NEW, comment: 'Order created' }) var items = [] var extras = [] try{ if(inventory!=null && !isEmpty(inventory)){ const inventoryArr = JSON.parse(inventory); const itemsArr = JSON.parse(inventoryArr.items); for (let index = 0; index < itemsArr.length; index++) { items.push({ id: itemsArr[index].id, orderInventoryId: itemsArr[index].inventoryId, extraId: itemsArr[index].extraId, name: itemsArr[index].name, count: itemsArr[index].count, isItem: itemsArr[index].isItem, isPacking: itemsArr[index].isPacking, isUnpacking: itemsArr[index].isUnpacking, weight: itemsArr[index].weight, volume: itemsArr[index].volume, qrcode: itemsArr[index].qrcode, comment: itemsArr[index].comment, color: itemsArr[index].color, bulky: itemsArr[index].bulky, }) } const extrasArr = JSON.parse(inventoryArr.extras); for (let index = 0; index < extrasArr.length; index++) { extras.push({ id: extrasArr[index].id, extraId: extrasArr[index].extraId, orderInventoryId: extrasArr[index].inventoryId, name: extrasArr[index].name, type: extrasArr[index].type, price: extrasArr[index].price, }) } await db.orderInventory.create( { id: inventoryArr.id, orderId: inventoryArr.orderId, type: inventoryArr.type, status: inventoryArr.status, localRateId: inventoryArr.localRateId, pickupFrom: inventoryArr.pickupFrom, pickupTo: inventoryArr.pickupTo, pickupHours: inventoryArr.pickupHours, drivingFrom: inventoryArr.drivingFrom, drivingTo: inventoryArr.drivingTo, drivingHours: inventoryArr.drivingHours, deliveryFrom: inventoryArr.deliveryFrom, deliveryTo: inventoryArr.deliveryTo, deliveryHours: inventoryArr.deliveryHours, doubleDriving: inventoryArr.doubleDriving, rate: inventoryArr.rate, rate_multiply: inventoryArr.rate_multiply, carrier_rate: inventoryArr.carrier_rate, storage_rate: inventoryArr.storage_rate, storage: inventoryArr.storage, valuation:JSON.stringify(inventoryArr.valuation), items_weight: inventoryArr.items_weight, items_volume: inventoryArr.items_volume, items_count: inventoryArr.items_count, items_total: inventoryArr.items_total, bulky_count: inventoryArr.bulky_count, bulky_total: inventoryArr.bulky_total, extras_count: inventoryArr.extras_count, extras_total: inventoryArr.extras_total, packages_count: inventoryArr.packages_count, packages_total: inventoryArr.packages_total, fuel_percent: inventoryArr.fuel_percent, fuel_total: inventoryArr.fuel_total, edited_packages: inventoryArr.edited_packages, custom_packages: inventoryArr.custom_packages, edited_weight: inventoryArr.edited_weight, custom_weight: inventoryArr.custom_weight, edited_volume: inventoryArr.edited_volume, custom_volume: inventoryArr.custom_volume, edited_total: inventoryArr.edited_total, custom_total: inventoryArr.custom_total, discount_comment: inventoryArr.discount_comment, discount_cash: inventoryArr.discount_cash, total: inventoryArr.total, paid: inventoryArr.paid, due: inventoryArr.due, } ) } }catch(e){ throw new BadRequest({ code: 500, message: e.message, lang: req.user?.languageCode }) } transaction.commit() await transaction.afterCommit(async (t) => { if(items.length > 0){ for (let index = 0; index < items.length; index++) { try{ db.inventoryItems.create(items[index]) }catch(e){ throw new BadRequest({ code: 500, message: e.message, lang: req.user?.languageCode }) } } } if(extras.length > 0){ for (let index = 0; index < extras.length; index++) { try{ db.inventoryExtras.create(extras[index]) }catch(e){ throw new BadRequest({ code: 500, message: e.message, lang: req.user?.languageCode }) } } } let saveOrder = false; if (isSet(inventoryId)){ if(isEmpty(inventoryId)) { throw new BadRequest({ code: 2035, lang: req.user?.languageCode }) }else{ newOrder.orderInventoryId = inventoryId saveOrder = true; } } if (isSet(estimateChargesId)){ if(isEmpty(estimateChargesId)) { throw new BadRequest({ code: 2035, lang: req.user?.languageCode }) }else{ newOrder.orderEstimateChargesId = estimateChargesId saveOrder = true; } } else { newOrder.orderEstimateChargesId = inventoryId saveOrder = true; } if (isSet(reviceChargesId)){ if(isEmpty(reviceChargesId)) { throw new BadRequest({ code: 2035, lang: req.user?.languageCode }) }else{ newOrder.orderReviceChargesId = reviceChargesId saveOrder = true; } } if (isSet(deliveryChargesId)){ if(isEmpty(deliveryChargesId)) { throw new BadRequest({ code: 2035, lang: req.user?.languageCode }) }else{ newOrder.orderDeliveryChargesId = deliveryChargesId saveOrder = true; } } if(saveOrder){ await newOrder.save() SERVICES.OrderService.OrderStatus(newOrder, 'orderCreate') } }); transaction = null const time = performance.now() - t1 return res.status(200).json({ status: 'success', id: newOrder.id, time }) } catch (err) { transaction?.rollback() next(err) } } }