Advertisement
Guest User

Untitled

a guest
Sep 4th, 2018
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const request = require('request');
  2. const odooObject = require('odoo-xmlrpc');
  3.  
  4. exports.CallClients = (req, res) => {
  5.   const  odoo = new odooObject({
  6.     url: 'https://erp.miclimo.com/xmlrpc/2/common',
  7.     port: 443,
  8.     db: 'odoo',
  9.     username: 'admin',
  10.     password: '0KymY1KoEOljxf1yq0v1'
  11.     });
  12.  
  13.   odoo.connect(function (err) {
  14.       if (err) { return console.log(err); }
  15.       console.log('Connected to Odoo server.');
  16.       var inParams = [];
  17.             //
  18.       inParams.push([['customer', '=', true],['x_tipo_factura', '=', 'boleta'],['x_rut', '!=', '14096578-2']]);
  19.       inParams.push(['customer', 'company_type','invoice_ids', 'x_rut','display_name', 'email', 'phone', 'address', 'city', 'x_comuna']); //fields
  20.         //  inParams.push(0); //offset
  21.         //  inParams.push(100); //limit
  22.       var params = [];
  23.       params.push(inParams);
  24.   // buscando los  datos de contactos y los ids de sus facturas
  25.   odoo.execute_kw('res.partner', 'search_read', params, function (err, value) {
  26.           if (err) { return console.log(err); }
  27.           console.log('Result: ', value);
  28.   res.send(value);
  29.       });
  30.   });
  31. };
  32.  
  33.  
  34. exports.CallInvoice = (req, res) => {
  35.   const url = "https://erp.miclimo.com/xmlrpc/2/common";
  36.   const  odoo = new odooObject({
  37.     url: 'https://erp.miclimo.com/xmlrpc/2/common',
  38.     port: 443,
  39.     db: 'odoo',
  40.     username: 'admin',
  41.     password: '0KymY1KoEOljxf1yq0v1'
  42.     });
  43.         console.log(req.body)
  44.         odoo.connect(function (err) {
  45.             if (err) { return console.log(err); }
  46.             console.log('Connected to Odoo server.');
  47.             var inParams = [];
  48.                 inParams.push([['id', 'in', req.body], ['date_invoice', '>=', '2018-07-01']]);
  49.                 inParams.push(['partner_id','invoice_line_ids','amount_untaxed','amount_tax','amount_total', 'date_invoice' ]);
  50.             //  inParams.push(0); //offset
  51.             //  inParams.push(100); //limit
  52.             var params = [];
  53.             params.push(inParams);
  54.                 // buscando los  datos de contactos y los ids de sus facturas
  55.                 odoo.execute_kw('account.invoice', 'search_read', params, function (err, value2) {
  56.                         if (err) { return console.log(err); }
  57.                                 console.log(value2)
  58.                               res.send(value2);
  59.  
  60.  
  61.                     });
  62.                 });
  63. };
  64.  
  65. exports.CallLineInvoice = (req, res) => {
  66.   const url = "https://erp.miclimo.com/xmlrpc/2/common";
  67.   const odoo = new odooObject({
  68.     url: 'https://erp.miclimo.com/xmlrpc/2/common',
  69.     port: 443,
  70.     db: 'odoo',
  71.     username: 'admin',
  72.     password: '0KymY1KoEOljxf1yq0v1'
  73.   });
  74.  
  75.   odoo.connect((err) => {
  76.       if (err) { return console.log(err); }
  77.       console.log('Connected to Odoo server.');
  78.       var inParams = [];
  79.             inParams.push([['id', 'in', req.body]]);
  80.             inParams.push(['product_id','discount','price_unit','quantity' ]); //fields
  81.       var params = [];
  82.       params.push(inParams);
  83.   // buscando los  datos de contactos y los ids de sus facturas
  84.                 odoo.execute_kw('account.invoice.line', 'search_read', params, function (err, value3) {
  85.           if (err) { return console.log(err); }
  86.                     console.log(value3)
  87.                     res.send(value3);
  88.     });
  89.   });
  90. };
  91. exports.SendBsale = (req, res) => {
  92.     //console.log(req.body)
  93.     request({
  94.         uri: 'https://api.bsale.cl/v1/documents.json',
  95.             json: true,
  96.         body: req.body,
  97.             headers: {
  98.              'access_token': 'c463944d4e5030f53e8da1e221a78fa5f35f2c93'
  99.           },
  100.         method: 'POST'
  101.       }, function (err, response, body) {
  102.             if (!err && response.statusCode == 200) {
  103.             console.log(body)
  104.         }else{
  105.                     console.log(err)
  106.                 }
  107.       });
  108. }
  109.  
  110. exports.Sync = (req, res) => {
  111.   const urlPost = 'https://api.miclimo.com/api/auth/oauth/token';
  112.   const bodyPost = {
  113.     email: 'miguel.delgado@engiefactory.com',
  114.     username: 'miguel.delgado@engiefactory.com',
  115.     password: 'miclimo123',
  116.     grant_type: 'password',
  117.     client_id: 'zrgpPyeWgmxa7JFF09yT',
  118.     client_secret: 'c0c28875-dd3b-4121-a7f3-48021be5f87a',
  119.   };
  120.   const headersPost = {
  121.     'Content-Type': 'application/json',
  122.   };
  123.   request.post(
  124.     {
  125.       url: urlPost, json: true, body: bodyPost, headers: headersPost,
  126.     },
  127.     (err, response, cuerpo) => {
  128.       if (!err && response.statusCode === 200) {
  129.        var meterId = req.params.meterId;
  130.        const accessToken = response.body.access_token;
  131.             request({
  132.               url: 'https://api.miclimo.com/api/meters',
  133.               headers: {
  134.                 Authorization: `Bearer ${accessToken}`,
  135.               },
  136.               rejectUnauthorized: false,
  137.             }, (err2, respuesta) => {
  138.  
  139.               req.getConnection(function(err, myConnection) {
  140.                 if (err2) {
  141.                   console.error(err2);
  142.                 } else {
  143.                   var jsonResult = JSON.parse(respuesta.body);
  144.                   for(var i = 0; i < jsonResult.length; i++) {
  145.  
  146.                     // meter values
  147.                     userid = jsonResult[i].userId;
  148.                     var metermongoid = jsonResult[i]._id;
  149.                     var deviceId = jsonResult[i].deviceId;
  150.                     var status =  jsonResult[i].status;
  151.                     var updatedAt = jsonResult[i].updatedAt;
  152.   //                  updatedAt = '2018-02-01 01:00:00';
  153.                     updatedAt = updatedAt.split('T');
  154.                     date = updatedAt[0];
  155.                     hora = updatedAt[1].split('.');
  156.                     var updatedAt = date+' '+hora[0];
  157.                     console.log(updatedAt);
  158.                     var xCoordinate = jsonResult[i].loc.coordinates[0];
  159.                     var yCoordinate = jsonResult[i].loc.coordinates[1];
  160.                     var lastTemp = jsonResult[i].lastState.temp;
  161.                     var lasthum = jsonResult[i].lastState.hum;
  162.                     var lastPow = jsonResult[i].lastState.pow;
  163.                     var isOn = jsonResult[i].isOn;
  164.                     var model = jsonResult[i].model;
  165.                     var brand = jsonResult[i].brand;
  166.                     var version = jsonResult[i].version;
  167.                     var label = jsonResult[i].label;
  168.                   //  var lastControlOn = jsonResult.lastControl.mode;
  169.                     var power = jsonResult[i].power;
  170.                     var plan = jsonResult[i].plan;
  171.                     var mac = 0;
  172.                     var crypto = 0;
  173.                     var userarray = [userid];
  174.                     var userarray = userarray.concat(jsonResult[i].users);
  175.             //        userarray.push(userid);
  176.                     lengthuserarray = userarray.length;
  177.                     console.log(userarray);
  178.             /////////      for(var i = 0; i < lengthuserarray; i++) {
  179.                     console.log('valor '+i);
  180.                     req.getConnection(function(err, myConnection) {
  181.                       if (err) throw err;
  182.                       /// INSERT METER
  183.                       var sql = "SELECT count(*) as id FROM meter WHERE mongoid = ?";
  184.                       myConnection.query(sql, metermongoid, function(err, rows, fields) {
  185.                         if (err) throw err;
  186.                         var insertmeter = rows[0].id;
  187.                         if (!insertmeter) {
  188.                             if (err) throw err;
  189.                             // if connection is successful
  190.                             var sql = "INSERT INTO meter (mongoid,deviceId,status,mac,crypto,updatedAt,xCoordinate,yCoordinate,lastTemp,lasthum,lastPow,isOn,model,brand,version,label,power,plan) VALUES ?";
  191.                             var values = [[metermongoid,deviceId,status,mac,crypto,updatedAt,xCoordinate,yCoordinate,lastTemp,lasthum,lastPow,isOn,model,brand,version,label,power,plan]];
  192.                             myConnection.query(sql, [values], function (err, result) {
  193.                               if (err) throw err;
  194.                               console.log("Meter inserted con el deviceId "+ deviceId);
  195.                               //  Update sync table, meter row
  196.                               var sql = 'UPDATE sync SET fecha = ? where tablename = ?';
  197.                               myConnection.query(sql, [updatedAt,'meter'], function(err, rows, fields) {
  198.                                 if (err) throw err;
  199.                                   console.log("Update sync table: meter");
  200.                               });
  201.                             });
  202.                         } else {
  203.                           console.log("Do update section");
  204.                         }
  205.  
  206.                       });
  207.                     });                    
  208.                       request({
  209.                         url: 'https://api.miclimo.com/api/users/'+userid,
  210.                         headers: {
  211.                           Authorization: `Bearer ${accessToken}`,
  212.                         },
  213.                         rejectUnauthorized: false,
  214.                       }, (err2, respuestauser) => {
  215.                         if (err2) {
  216.                           console.error(err2);
  217.                         } else {
  218.                           var jsonResult = JSON.parse(respuestauser.body);
  219.                           // user values
  220.                           usermongoid =  jsonResult._id;
  221.                           email = jsonResult.email;
  222.                           companyId = jsonResult.companyId;
  223.                           rol = jsonResult.role;
  224.  
  225.                           if (companyId == null) {
  226.                             isCompany = 0;
  227.                           }  else {
  228.                             isCompany = 1;
  229.                           }
  230.  
  231.                           req.getConnection(function(err, myConnection) {
  232.                             if (err) throw err;
  233.                             /// INSERT USER
  234.                             var sql = "SELECT count(*) as hasemail FROM user WHERE email = ?";
  235.                             myConnection.query(sql, email, function(err, rows, fields) {
  236.                               if (err) throw err;
  237.                               var hasemail = rows[0].hasemail;
  238.                               if (!hasemail) {
  239.                                   if (err) throw err;
  240.                                   // if connection is successful
  241.                                   var sql = "INSERT INTO user (mongoid,email,rol,isCompany) VALUES ?";
  242.                                   var values = [[usermongoid, email, rol, isCompany]];
  243.                                   myConnection.query(sql, [values], function (err, result) {
  244.                                     if (err) throw err;
  245.                                     console.log("User inserted");
  246.                                     //  Update sync table, user row
  247.                                     var sql = 'UPDATE sync SET fecha = ? where tablename = ?';
  248.                                     myConnection.query(sql, [updatedAt,'user'], function(err, rows, fields) {
  249.                                       if (err) throw err;
  250.                                         console.log("Update sync table");
  251.                                     });
  252.                                   });
  253.                               } else {
  254.                                    console.log("User exists");
  255.                               }
  256.                             });
  257.                             // INSERT CONTRACT
  258.                             var sql = 'SELECT count(*) as hascontract FROM contract WHERE deviceId = ? AND email = ?';
  259.                             myConnection.query(sql, [deviceId, email], function(err, rows, fields) {
  260.                               if (err) throw err;
  261.                               var hascontract = rows[0].hascontract;
  262.                               if (!hascontract) {
  263.                                   if (err) throw err;
  264.                                   // if connection is successful
  265.                                   var sql = "INSERT INTO contract (deviceId,email) VALUES ?";
  266.                                   var values = [[deviceId, email]];
  267.                                   myConnection.query(sql, [values], function (err, result) {
  268.                                     if (err) throw err;
  269.                                     console.log("Contract inserted");
  270.                                   });
  271.                               } else {
  272.                                    console.log("Contract exists");
  273.                               }
  274.                             }); // end contract
  275.                           }); // end connection
  276.                         } // end else
  277.                     });
  278.               //////   } // end foreachusers
  279.                 } // end for
  280.                   myConnection.query("SELECT * FROM sync ORDER BY fecha DESC", function (err, result, fields) {
  281.                     if (err) throw err;
  282.                       res.json(result);
  283.                   });
  284.                 }
  285.               });
  286.  
  287.  
  288.  
  289.             });
  290.           } else {
  291.             console.log(err);
  292.           }
  293.     }
  294.   );
  295. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement