Built motion from commit (unavailable).|2.4.4
[motion2.git] / server / api / saProductQuotation / saProductQuotation.controller.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xd8b0=['length','query','hasOwnProperty','nolimit','sort','pick','where','merge','map','type','key','VIRTUAL','options','SAProductQuotation','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body','destroy','describe','InvoiceId','sequelize','transaction','companyId','productName','productCode','productDescription','pricelistName','discount','tax','subscriptionId','subscriptionName','subscriptionMonthly','quantity','unitName','SAInvoiceDetail','automaticInvoice','SAInvoice','result','push','all','No\x20product\x20to\x20assign\x20invoice.\x20Invoice\x20not\x20created!!','log','TCL:\x20exports.automaticInvoice\x20->\x20err','send','companyName','typeName','ProductPriceListId','netPrice','agentFullname','note','SAProformaDetail','automaticProforma','SAProforma','WARNING','TCL:\x20exports.automaticProforma\x20->\x20err','SequelizeUniqueConstraintError','Duplicate\x20entry.','html-pdf','eml-format','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','reject','save','update','then','stack','name','index','rawAttributes','keys','filters','model','attributes','intersection'];(function(_0x352401,_0x5c29d3){var _0x2982c5=function(_0x3df520){while(--_0x3df520){_0x352401['push'](_0x352401['shift']());}};_0x2982c5(++_0x5c29d3);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var pdf=require(_0x0d8b('0x0'));var emlformat=require(_0x0d8b('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0d8b('0x2'));var moment=require(_0x0d8b('0x3'));var BPromise=require(_0x0d8b('0x4'));var Mustache=require(_0x0d8b('0x5'));var util=require(_0x0d8b('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x0d8b('0x7'));var ejs=require(_0x0d8b('0x8'));var fs=require('fs');var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0x7'));var querystring=require(_0x0d8b('0xc'));var Papa=require(_0x0d8b('0xd'));var Redis=require(_0x0d8b('0xe'));var authService=require(_0x0d8b('0xf'));var qs=require(_0x0d8b('0x10'));var hardwareService=require(_0x0d8b('0x11'));var logger=require(_0x0d8b('0x12'))('api');var utils=require(_0x0d8b('0x13'));var config=require('../../config/environment');var db=require(_0x0d8b('0x14'))['db'];function respondWithStatusCode(_0xc574a3,_0x340cc4){_0x340cc4=_0x340cc4||0xcc;return function(_0x92cdd8){if(_0x92cdd8){return _0xc574a3[_0x0d8b('0x15')](_0x340cc4);}return _0xc574a3[_0x0d8b('0x16')](_0x340cc4)[_0x0d8b('0x17')]();};}function respondWithResult(_0x31a8cc,_0x1d4bbc){_0x1d4bbc=_0x1d4bbc||0xc8;return function(_0x2ce75e){if(_0x2ce75e){return _0x31a8cc[_0x0d8b('0x16')](_0x1d4bbc)[_0x0d8b('0x18')](_0x2ce75e);}};}function respondWithFilteredResult(_0x1567ce,_0x2d4e1c){return function(_0x4f6f21){if(_0x4f6f21){var _0x23eb7b=_0x4f6f21[_0x0d8b('0x19')],_0xa86349=_0x2d4e1c['offset'],_0x17f7df=_0x2d4e1c[_0x0d8b('0x1a')]+_0x2d4e1c[_0x0d8b('0x1b')],_0xe2e167;if(_0x17f7df>=_0x23eb7b){_0x17f7df=_0x23eb7b;_0xe2e167=0xc8;}else{_0xe2e167=0xce;}_0x1567ce[_0x0d8b('0x16')](_0xe2e167);return _0x1567ce[_0x0d8b('0x1c')](_0x0d8b('0x1d'),_0xa86349+'-'+_0x17f7df+'/'+_0x23eb7b)[_0x0d8b('0x18')](_0x4f6f21);}return null;};}function patchUpdates(_0x264b39){return function(_0xa3612a){try{jsonpatch['apply'](_0xa3612a,_0x264b39,!![]);}catch(_0x27512e){return BPromise[_0x0d8b('0x1e')](_0x27512e);}return _0xa3612a[_0x0d8b('0x1f')]();};}function saveUpdates(_0x143372,_0x24e8ed){return function(_0x5b709c){if(_0x5b709c){return _0x5b709c[_0x0d8b('0x20')](_0x143372)[_0x0d8b('0x21')](function(_0x50ec1e){return _0x50ec1e;});}return null;};}function removeEntity(_0x4f0a1a,_0x33fb87){return function(_0x54a9a7){if(_0x54a9a7){return _0x54a9a7['destroy']()['then'](function(){_0x4f0a1a[_0x0d8b('0x16')](0xcc)[_0x0d8b('0x17')]();});}};}function handleEntityNotFound(_0x214778,_0x38efc8){return function(_0x221071){if(!_0x221071){_0x214778[_0x0d8b('0x15')](0x194);}return _0x221071;};}function handleError(_0x30980c,_0x4562cb){_0x4562cb=_0x4562cb||0x1f4;return function(_0x27b695){logger['error'](_0x27b695[_0x0d8b('0x22')]);if(_0x27b695[_0x0d8b('0x23')]){delete _0x27b695['name'];}_0x30980c[_0x0d8b('0x16')](_0x4562cb)['send'](_0x27b695);};}exports[_0x0d8b('0x24')]=function(_0x234bdd,_0xa2af02){var _0x4fe6f9={'raw':!![]},_0x59a905={},_0x28f639={'count':0x0,'rows':[]};var _0x3ef745=db['SAProductQuotation'][_0x0d8b('0x25')];_0x59a905['model']=_[_0x0d8b('0x26')](_0x3ef745);_0x59a905['query']=_[_0x0d8b('0x26')](_0x234bdd['query']);_0x59a905[_0x0d8b('0x27')]=_['intersection'](_0x59a905[_0x0d8b('0x28')],_0x59a905['query']);_0x4fe6f9[_0x0d8b('0x29')]=_[_0x0d8b('0x2a')](_0x59a905[_0x0d8b('0x28')],qs['fields'](_0x234bdd['query']['fields']));_0x4fe6f9[_0x0d8b('0x29')]=_0x4fe6f9['attributes'][_0x0d8b('0x2b')]?_0x4fe6f9['attributes']:_0x59a905['model'];if(!_0x234bdd[_0x0d8b('0x2c')][_0x0d8b('0x2d')](_0x0d8b('0x2e'))){_0x4fe6f9[_0x0d8b('0x1b')]=qs[_0x0d8b('0x1b')](_0x234bdd[_0x0d8b('0x2c')][_0x0d8b('0x1b')]);_0x4fe6f9[_0x0d8b('0x1a')]=qs['offset'](_0x234bdd[_0x0d8b('0x2c')][_0x0d8b('0x1a')]);}_0x4fe6f9['order']=qs[_0x0d8b('0x2f')](_0x234bdd[_0x0d8b('0x2c')][_0x0d8b('0x2f')]);_0x4fe6f9['where']=qs[_0x0d8b('0x27')](_[_0x0d8b('0x30')](_0x234bdd[_0x0d8b('0x2c')],_0x59a905[_0x0d8b('0x27')]));if(_0x234bdd[_0x0d8b('0x2c')]['filter']){_0x4fe6f9[_0x0d8b('0x31')]=_[_0x0d8b('0x32')](_0x4fe6f9['where'],{'$or':_[_0x0d8b('0x33')](_0x3ef745,function(_0x3cc3ee){if(_0x3cc3ee[_0x0d8b('0x34')][_0x0d8b('0x35')]!==_0x0d8b('0x36')){var _0x519088={};_0x519088[_0x3cc3ee['field']]={'$like':'%'+_0x234bdd[_0x0d8b('0x2c')]['filter']+'%'};return _0x519088;}})});}_0x4fe6f9=_['merge']({},_0x4fe6f9,_0x234bdd[_0x0d8b('0x37')]);var _0x2e279c={'where':_0x4fe6f9[_0x0d8b('0x31')]};return db[_0x0d8b('0x38')][_0x0d8b('0x19')](_0x2e279c)[_0x0d8b('0x21')](function(_0x579324){_0x28f639[_0x0d8b('0x19')]=_0x579324;if(_0x234bdd[_0x0d8b('0x2c')][_0x0d8b('0x39')]){_0x4fe6f9[_0x0d8b('0x3a')]=[{'all':!![]}];}return db[_0x0d8b('0x38')][_0x0d8b('0x3b')](_0x4fe6f9);})[_0x0d8b('0x21')](function(_0x5c980b){_0x28f639[_0x0d8b('0x3c')]=_0x5c980b;return _0x28f639;})[_0x0d8b('0x21')](respondWithFilteredResult(_0xa2af02,_0x4fe6f9))[_0x0d8b('0x3d')](handleError(_0xa2af02,null));};exports[_0x0d8b('0x3e')]=function(_0x59d3ad,_0xe0bf42){var _0x4b4bde={'raw':!![],'where':{'id':_0x59d3ad[_0x0d8b('0x3f')]['id']}},_0x37b26c={};_0x37b26c[_0x0d8b('0x28')]=_[_0x0d8b('0x26')](db[_0x0d8b('0x38')][_0x0d8b('0x25')]);_0x37b26c[_0x0d8b('0x2c')]=_[_0x0d8b('0x26')](_0x59d3ad[_0x0d8b('0x2c')]);_0x37b26c[_0x0d8b('0x27')]=_['intersection'](_0x37b26c['model'],_0x37b26c['query']);_0x4b4bde['attributes']=_['intersection'](_0x37b26c[_0x0d8b('0x28')],qs[_0x0d8b('0x40')](_0x59d3ad[_0x0d8b('0x2c')]['fields']));_0x4b4bde['attributes']=_0x4b4bde[_0x0d8b('0x29')][_0x0d8b('0x2b')]?_0x4b4bde[_0x0d8b('0x29')]:_0x37b26c['model'];if(_0x59d3ad[_0x0d8b('0x2c')][_0x0d8b('0x39')]){_0x4b4bde['include']=[{'all':!![]}];}_0x4b4bde=_['merge']({},_0x4b4bde,_0x59d3ad[_0x0d8b('0x37')]);return db['SAProductQuotation'][_0x0d8b('0x41')](_0x4b4bde)['then'](handleEntityNotFound(_0xe0bf42,null))['then'](respondWithResult(_0xe0bf42,null))[_0x0d8b('0x3d')](handleError(_0xe0bf42,null));};exports[_0x0d8b('0x42')]=function(_0x5a75c7,_0x5ebe8a){return db['SAProductQuotation']['create'](_0x5a75c7[_0x0d8b('0x43')],{})[_0x0d8b('0x21')](respondWithResult(_0x5ebe8a,0xc9))[_0x0d8b('0x3d')](handleError(_0x5ebe8a,null));};exports['update']=function(_0xb0910e,_0x1afe8a){if(_0xb0910e[_0x0d8b('0x43')]['id']){delete _0xb0910e[_0x0d8b('0x43')]['id'];}return db[_0x0d8b('0x38')][_0x0d8b('0x41')]({'where':{'id':_0xb0910e[_0x0d8b('0x3f')]['id']}})[_0x0d8b('0x21')](handleEntityNotFound(_0x1afe8a,null))[_0x0d8b('0x21')](saveUpdates(_0xb0910e[_0x0d8b('0x43')],null))[_0x0d8b('0x21')](respondWithResult(_0x1afe8a,null))[_0x0d8b('0x3d')](handleError(_0x1afe8a,null));};exports[_0x0d8b('0x44')]=function(_0x3e569b,_0x570af8){return db[_0x0d8b('0x38')][_0x0d8b('0x41')]({'where':{'id':_0x3e569b[_0x0d8b('0x3f')]['id']}})[_0x0d8b('0x21')](handleEntityNotFound(_0x570af8,null))['then'](removeEntity(_0x570af8,null))[_0x0d8b('0x3d')](handleError(_0x570af8,null));};exports['describe']=function(_0x5d29ab,_0x39a31d){return db[_0x0d8b('0x38')][_0x0d8b('0x45')]()[_0x0d8b('0x21')](respondWithResult(_0x39a31d,null))['catch'](handleError(_0x39a31d,null));};function assignProductQuotationToProformaInvoice(_0x131579,_0x1106d6){if(_0x131579[_0x0d8b('0x43')]['id']){delete _0x131579[_0x0d8b('0x43')]['id'];}return db[_0x0d8b('0x38')]['update']({'ProformaId':_0x131579['body']['ProformaId'],'InvoiceId':_0x131579['body'][_0x0d8b('0x46')]},{'where':{'QuotationId':_0x131579[_0x0d8b('0x3f')]['id'],'ProformaId':_0x131579['query']['ProformaId']||{'$eq':null},'InvoiceId':_0x131579[_0x0d8b('0x2c')][_0x0d8b('0x46')]||{'$eq':null}},'transaction':_0x1106d6});}exports['updateBulk']=function(_0x5ef6c3,_0x900906,_0xeeefd4){return db[_0x0d8b('0x47')][_0x0d8b('0x48')](function(_0x2d5519){return assignProductQuotationToProformaInvoice(_0x5ef6c3,_0x2d5519)['then'](function(_0x2de903){return _0x900906[_0x0d8b('0x15')](0xc8);})['catch'](handleError(_0x900906,null));});};function addInvoiceDetail(_0x580580,_0xf6a773,_0x3f2d95){var _0x546fef={'companyName':_0x580580['companyName'],'companyId':_0x580580[_0x0d8b('0x49')],'productName':_0x580580[_0x0d8b('0x4a')],'productCode':_0x580580[_0x0d8b('0x4b')],'productDescription':_0x580580[_0x0d8b('0x4c')],'typeName':_0x580580['typeName'],'pricelistName':_0x580580[_0x0d8b('0x4d')],'priceListId':_0x580580['ProductPriceListId'],'netPrice':_0x580580['netPrice'],'discount':_0x580580[_0x0d8b('0x4e')],'tax':_0x580580[_0x0d8b('0x4f')],'agentFullname':_0x580580['agentFullname'],'note':_0x580580['note'],'subscriptionId':_0x580580[_0x0d8b('0x50')],'subscriptionName':_0x580580[_0x0d8b('0x51')],'subscriptionMonthly':_0x580580[_0x0d8b('0x52')],'quantity':_0x580580[_0x0d8b('0x53')],'InvoiceId':_0xf6a773,'unitName':_0x580580[_0x0d8b('0x54')]};return db[_0x0d8b('0x55')][_0x0d8b('0x42')](_0x546fef,{'transaction':_0x3f2d95})[_0x0d8b('0x21')](function(){return db['SAProductQuotation'][_0x0d8b('0x20')]({'InvoiceId':_0xf6a773},{'where':{'id':_0x580580['id']},'transaction':_0x3f2d95});});}exports[_0x0d8b('0x56')]=function(_0x3a3d33,_0x3c7efb,_0x3fb9ea){if(_0x3a3d33[_0x0d8b('0x43')]['id']){delete _0x3a3d33[_0x0d8b('0x43')]['id'];}return db[_0x0d8b('0x47')][_0x0d8b('0x48')](function(_0x4bfdf1){return db[_0x0d8b('0x57')][_0x0d8b('0x42')](_0x3a3d33[_0x0d8b('0x43')],{'transaction':_0x4bfdf1})[_0x0d8b('0x21')](function(_0x43ad22){console['log'](_0x0d8b('0x58'),_0x43ad22);var _0x2d6284=_0x3a3d33[_0x0d8b('0x3f')]['id'];return db[_0x0d8b('0x38')][_0x0d8b('0x3b')]({'where':{'QuotationId':_0x2d6284,'productAsset':{'$ne':0x1},'ProformaId':{'$eq':null},'InvoiceId':{'$eq':null}},'raw':!![],'logging':console['log']})['then'](function(_0x3b1166){if(_0x3b1166[_0x0d8b('0x2b')]>0x0){var _0x3e4a41=[];for(var _0xbbb520=0x0;_0xbbb520<_0x3b1166['length'];_0xbbb520++){_0x3e4a41[_0x0d8b('0x59')](addInvoiceDetail(_0x3b1166[_0xbbb520],_0x43ad22['id'],_0x4bfdf1));}return BPromise[_0x0d8b('0x5a')](_0x3e4a41);}else{var _0x8c0bbe={'errors':[{'type':'WARNING','message':_0x0d8b('0x5b')}]};throw _0x8c0bbe;}});});})['then'](function(){return _0x3c7efb[_0x0d8b('0x15')](0xc8);})[_0x0d8b('0x3d')](function(_0x1efce6){console[_0x0d8b('0x5c')](_0x0d8b('0x5d'),_0x1efce6);if(_0x1efce6[_0x0d8b('0x23')]==='SequelizeUniqueConstraintError'){var _0x1efce6={'errors':[{'message':'Duplicate\x20entry.'}]};}_0x3c7efb[_0x0d8b('0x16')](0x1f4)[_0x0d8b('0x5e')](_0x1efce6);});};function addProformaDetail(_0xafeeb0,_0x33a614,_0x48025e){var _0x19e097={'companyName':_0xafeeb0[_0x0d8b('0x5f')],'companyId':_0xafeeb0[_0x0d8b('0x49')],'productName':_0xafeeb0[_0x0d8b('0x4a')],'productCode':_0xafeeb0[_0x0d8b('0x4b')],'productDescription':_0xafeeb0[_0x0d8b('0x4c')],'typeName':_0xafeeb0[_0x0d8b('0x60')],'pricelistName':_0xafeeb0[_0x0d8b('0x4d')],'priceListId':_0xafeeb0[_0x0d8b('0x61')],'netPrice':_0xafeeb0[_0x0d8b('0x62')],'discount':_0xafeeb0['discount'],'tax':_0xafeeb0['tax'],'agentFullname':_0xafeeb0[_0x0d8b('0x63')],'note':_0xafeeb0[_0x0d8b('0x64')],'subscriptionId':_0xafeeb0['subscriptionId'],'subscriptionName':_0xafeeb0[_0x0d8b('0x51')],'subscriptionMonthly':_0xafeeb0['subscriptionMonthly'],'quantity':_0xafeeb0['quantity'],'ProformaId':_0x33a614};return db[_0x0d8b('0x65')][_0x0d8b('0x42')](_0x19e097,{'transaction':_0x48025e})['then'](function(){return db['SAProductQuotation'][_0x0d8b('0x20')]({'ProformaId':_0x33a614},{'where':{'id':_0xafeeb0['id']},'transaction':_0x48025e});});}exports[_0x0d8b('0x66')]=function(_0x70e4b2,_0x435090,_0x2ab72b){if(_0x70e4b2[_0x0d8b('0x43')]['id']){delete _0x70e4b2[_0x0d8b('0x43')]['id'];}return db['sequelize'][_0x0d8b('0x48')](function(_0x5878c2){return db[_0x0d8b('0x67')][_0x0d8b('0x42')](_0x70e4b2[_0x0d8b('0x43')],{'transaction':_0x5878c2})[_0x0d8b('0x21')](function(_0x49f610){console[_0x0d8b('0x5c')]('result',_0x49f610);var _0x3a356b=_0x70e4b2[_0x0d8b('0x3f')]['id'];return db[_0x0d8b('0x38')][_0x0d8b('0x3b')]({'where':{'QuotationId':_0x3a356b,'productAsset':{'$ne':0x1},'ProformaId':{'$eq':null},'InvoiceId':{'$eq':null}},'raw':!![],'logging':console[_0x0d8b('0x5c')]})[_0x0d8b('0x21')](function(_0x3e927c){if(_0x3e927c[_0x0d8b('0x2b')]>0x0){var _0x266a69=[];for(var _0x44aa74=0x0;_0x44aa74<_0x3e927c['length'];_0x44aa74++){_0x266a69[_0x0d8b('0x59')](addProformaDetail(_0x3e927c[_0x44aa74],_0x49f610['id'],_0x5878c2));}return BPromise['all'](_0x266a69);}else{var _0x3e4121={'errors':[{'type':_0x0d8b('0x68'),'message':'No\x20product\x20to\x20assign\x20proforma.\x20Proforma\x20not\x20created!!'}]};throw _0x3e4121;}});});})[_0x0d8b('0x21')](function(){return _0x435090['sendStatus'](0xc8);})[_0x0d8b('0x3d')](function(_0x445a00){console[_0x0d8b('0x5c')](_0x0d8b('0x69'),_0x445a00);if(_0x445a00[_0x0d8b('0x23')]===_0x0d8b('0x6a')){var _0x445a00={'errors':[{'message':_0x0d8b('0x6b')}]};}_0x435090['status'](0x1f4)[_0x0d8b('0x5e')](_0x445a00);});};