Преглед на файлове

lead module any bugs fixed

robert преди 8 години
родител
ревизия
916e2756a9

+ 19 - 6
www/js/controllers/configuration.controller.js

@@ -19,7 +19,9 @@ angular.module('odoo')
             database: 'odoo',
             username: 'admin',
             password: 'admin',
-            id: null
+            id: null,
+            user_name: null,
+            company_id: null
         });
 
         /**
@@ -31,12 +33,23 @@ angular.module('odoo')
             odooFactory.auth(function (id) {
                 $scope.configuration.id = id;
 
-                databaseFactory.initTables(function (result) {
-                    $scope.loading = false;
-                    $state.go('app.main');
-                }, function (err) {
+                odooFactory.read('res.users', [['id', '=', id]], function (user) {
+                    var data = user[0];
+
+                    $scope.configuration.user_name = data.name;
+                    $scope.configuration.company_id = data.company_id[0];
+
+                    databaseFactory.initTables(function (result) {
+                        $scope.loading = false;
+                        $state.go('app.main');
+                    }, function (err) {
+                        $scope.loading = false;
+                        console.log(err);
+                    });
+
+                }, function (readErr) {
                     $scope.loading = false;
-                    console.log(err);
+                    console.log(readErr);
                 });
 
             }, function (err) {

+ 15 - 3
www/js/controllers/lead.controller.js

@@ -89,7 +89,6 @@ angular.module('odoo')
          */
         $scope.getLeads = function (success, error) {
             sqlFactory.selectByConstraint('crm_lead', "type = 'lead' AND modified != 2", function (leads) {
-                console.log(leads);
                 $scope.leads = [];
 
                 for (var i = 0; i < leads.length; i++) {
@@ -115,14 +114,27 @@ angular.module('odoo')
          */
         $scope.save = function () {
             leadsStorageFactory.save($scope.lead, function (leadId) {
+                console.log($scope.lead);
+                
                 if (!$scope.lead.id) {
                     $scope.lead.id = leadId;
                     $scope.leads.push($scope.lead);
                 }
 
-                $scope.lead = {};
                 $scope.leadModal.hide();
-                console.log('Lead saved');
+                $scope.loading = true;
+                console.log($scope.lead);
+
+                leadsRemoteFactory.push($scope.lead.id, $scope.lead, function (response) {
+                    $scope.lead = {};
+                    $scope.loading = false;
+                    console.log('Lead saved');
+                }, function (pushErr) {
+                    $scope.lead = {};
+                    $scope.loading = false;
+                    console.log(pushErr);
+                });
+
             }, function (error) {
                 $ionicPopup.alert({ title: 'No se ha podido guardar la iniciativa', template: JSON.stringify(error) });
                 console.log(JSON.stringify(error));

+ 10 - 6
www/js/factories/database.factory.js

@@ -32,18 +32,24 @@ angular.module('odoo')
             for (var key in model) {
                 if (model.hasOwnProperty(key) && typeof model[key] == 'object') {
                     if (model[key].type == 'float') {
-                        statement += key + ' REAL DEFAULT 0,\n';
+                        statement += key + ' NUMERIC DEFAULT 0,\n';
                     }
 
                     if (model[key].type == 'char' || model[key].type == 'text' || model[key].type == 'datetime') {
                         statement += key + ' TEXT DEFAULT NULL,\n';
                     }
 
-                    if (model[key].type == 'integer' || model[key].type == 'selection' || model[key].type == 'boolean' || model[key].type == 'many2one' || model[key].type == 'many2many') {
-                        statement += key + ' INTEGER DEFAULT 0,\n';
+                    if (model[key].type == 'integer' || model[key].type == 'selection' || model[key].type == 'boolean' || model[key].type == 'many2one') {
+                        statement += key + ' INTEGER DEFAULT 0';
+
+                        if (key == 'id') {
+                            statement += ' PRIMARY KEY AUTOINCREMENT';
+                        }
+
+                        statement += ',\n';
                     }
 
-                    if (model[key].type == 'one2many') {
+                    if (model[key].type == 'one2many' || model[key].type == 'many2many') {
                         continue;
                     }
                 }
@@ -52,8 +58,6 @@ angular.module('odoo')
             statement += 'remote_id INTEGER DEFAULT 0,\n' +
                 'modified INTEGER DEFAULT 0,\n' +
                 'modified_date TEXT DEFAULT CURRENT_TIMESTAMP\n';
-            
-            console.log(statement);
 
             return statement + ');'
         }

+ 1 - 1
www/js/factories/odoo.factory.js

@@ -43,7 +43,7 @@ angular.module('odoo')
         /**
          *
          */
-        var create = function (model, data, success, error) {
+        var create = function (model, data, success, error) {          
             xmlrpc.callMethod(methodCallManager.call('execute_kw', configuration), [configuration.database, configuration.id, configuration.password, model, 'create', [data]]).then(function (response) {
                 if (!response || response['faultCode']) {
                     return error(response);

+ 107 - 105
www/js/factories/sales/lead.storage.factory.js

@@ -1,117 +1,119 @@
 angular.module('odoo')
 
-.factory('leadsStorageFactory', function () {
+    .factory('leadsStorageFactory', function (
+        $localStorage
+    ) {
 
-    /**
-     *
-     */
-    var save = function (data, success, error) {
-        var query = null;
+        var configuration = $localStorage;
 
-        if (data.id) {
-            query = squel.update()
-                .table('crm_lead')
-                .set('remote_id', data.remote_id)
-                .set('name', data.name)
-                .set('description', data.description)
-                .set('contact_name', data.contact_name)
-                .set('phone', data.phone)
-                .set('mobile', data.mobile)
-                .set('fax', data.fax)
-                .set('street', data.street)
-                .set('street2', data.street2)
-                .set('meeting_count', data.meeting_count)
-                .set('message_bounce', data.message_bounce)
-                .set('planned_cost', data.planned_cost)
-                .set('planned_revenue', data.planned_revenue)
-                .set('priority', data.priority)
-                .set('probability', data.probability)
-                .set('type', data.type)
-                .set('stage_id', typeof data.stage_id == 'object' ? data.stage_id[0] : data.stage_id)
-                .set('user_id', data.user_id)
-                .set('partner_id', data.partner_id)
-                .where('id', data.id)
-                .toParam();
-        } else {
-            query = squel.insert()
-                .into('crm_lead')
-                .set('remote_id', data.remote_id)
-                .set('modified', data.modified)
-                .set('name', data.name)
-                .set('description', data.description)
-                .set('contact_name', data.contact_name)
-                .set('phone', data.phone)
-                .set('mobile', data.mobile)
-                .set('fax', data.fax)
-                .set('street', data.street)
-                .set('street2', data.street2)
-                .set('meeting_count', data.meeting_count)
-                .set('message_bounce', data.message_bounce)
-                .set('planned_cost', data.planned_cost)
-                .set('planned_revenue', data.street)
-                .set('priority', data.priority)
-                .set('probability', data.probability)
-                .set('type', data.type)
-                .set('stage_id', typeof data.stage_id == 'object' ? data.stage_id[0] : data.stage_id)
-                .set('user_id', data.user_id)
-                .set('partner_id', data.partner_id)
-                .toParam();
-        }
-       
-        db.executeSql(query.text, query.values, function (result) {
-            console.log(result);
-            success(query.text.startsWith('INSERT') ? result.insertId : data.id);
-        }, function (err) {
-            console.log(err);
-            error(err);
-        });
-    }
+        /**
+         *
+         */
+        var save = function (data, success, error) {
+            var query = null;
 
-    /**
-     *
-     */
-    var remove = function (data, success, error) {
-        var query = null;
+            if (data.id) {
+                query = squel.update()
+                    .table('crm_lead')
+                    .set('remote_id', data.remote_id ? data.remote_id : 0)
+                    .set('modified', 1)
+                    .set('name', data.name)
+                    .set('description', data.description ? data.description : null)
+                    .set('contact_name', data.contact_name ? data.contact_name : null)
+                    .set('phone', data.phone ? data.phone : null)
+                    .set('mobile', data.mobile ? data.mobile : null)
+                    .set('fax', data.fax ? data.fax : null)
+                    .set('street', data.street ? data.street : null)
+                    .set('street2', data.street2 ? data.street2 : null)
+                    .set('priority', data.priority ? data.priority : 2)
+                    .set('probability', data.probability ? data.probability : 10)
+                    .set('type', data.type ? data.type : 'lead')
+                    .set('stage_id', angular.isArray(data.stage_id) ? data.stage_id[0] : 1)
+                    .set('partner_id', data.partner_id ? data.partner_id : 0)
+                    .where('id = ?', data.id)
+                    .toParam();
+            } else {
+                query = squel.insert()
+                    .into('crm_lead')
+                    .set('remote_id', data.remote_id ? data.remote_id : 0)
+                    .set('name', data.name)
+                    .set('description', data.description ? data.description : null)
+                    .set('contact_name', data.contact_name ? data.contact_name : null)
+                    .set('phone', data.phone ? data.phone : null)
+                    .set('mobile', data.mobile ? data.mobile : null)
+                    .set('fax', data.fax ? data.fax : null)
+                    .set('street', data.street ? data.street : null)
+                    .set('street2', data.street2 ? data.street2 : null)
+                    .set('meeting_count', data.meeting_count)
+                    .set('message_bounce', data.message_bounce)
+                    .set('planned_cost', data.planned_cost)
+                    .set('planned_revenue', data.planned_revenue)
+                    .set('priority', data.priority ? data.priority : '2')
+                    .set('probability', data.probability ? data.probability : 0)
+                    .set('type', data.type ? data.type : 'lead')
+                    .set('active', data.active ? data.active : 1)
+                    .set('company_currency', angular.isArray(data.company_currency) ? data.company_currency[0] : 0)
+                    .set('company_id', angular.isArray(data.company_id) ? data.company_id[0] : configuration.company_id)
+                    .set('create_uid', angular.isArray(data.create_uid) ? data.create_uid[0] : configuration.id)
+                    .set('stage_id', angular.isArray(data.stage_id) ? data.stage_id[0] : 1)
+                    .set('user_id', angular.isArray(data.user_id) ? data.user_id[0] : configuration.id)
+                    .set('user_login', data.user_login ? data.user_login : configuration.user)
+                    .set('partner_id', data.partner_id ? data.partner_id : 0)
+                    .toParam();
+            }
 
-        if (data.remote_id) {
-            query = squel.update()
-                .table('crm_lead')
-                .set('modified', 2)
-                .set('id', data.id);
-        } else {
-            query = squel.delete()
-                from('crm_lead')
-                    .where('id', data.id);
+            db.executeSql(query.text, query.values, function (result) {
+                success(query.text.startsWith('INSERT') ? result.insertId : data.id);
+            }, function (err) {
+                error(err);
+            });
         }
 
-        query = query.toParam();
+        /**
+         *
+         */
+        var remove = function (data, success, error) {
+            var query = null;
+
+            if (data.remote_id) {
+                query = squel.update()
+                    .table('crm_lead')
+                    .set('modified', 2)
+                    .set('id = ?', data.id)
+                    .toParam();
+            } else {
+                query = squel.delete()
+                    .from('crm_lead')
+                    .where('id = ?', data.id)
+                    .toParam();
+            }
 
-        db.executeSql(query.text, query.values, function (result) {
-            success(result.rowsAffected);
-        }, function(err) {
-            error(err);
-        });
-    }
+            db.executeSql(query.text, query.values, function (result) {
+                success(result.rowsAffected);
+            }, function (err) {
+                error(err);
+            });
+        }
 
-    /**
-     *
-     */
-    var removeAll = function (success, error) {
-        var query = squel.delete()
-            .from('crm_lead')
-            .where('type', 'lead')
-            .toParam();
+        /**
+         *
+         */
+        var removeAll = function (success, error) {
+            var query = squel.delete()
+                .from('crm_lead')
+                .where('type = ?', 'lead')
+                .toParam();
 
-        db.executeSql(query.text, query.values, function (result) {
-            success(result.rowsAffected);
-        }, function(err) {
-            error(err);
-        });
-    }
+            db.executeSql(query.text, query.values, function (result) {
+                success(result.rowsAffected)
+            }, function (err) {
+                error(err);
+            });
+        }
 
-    return {
-        save: save,
-        remove: remove,
-        removeAll: removeAll
-    }
-});
+        return {
+            save: save,
+            remove: remove,
+            removeAll: removeAll
+        }
+    });

+ 4 - 6
www/js/factories/sales/lead.sync.factory.js

@@ -9,7 +9,6 @@ angular.module('odoo')
         sqlFactory,
         asyncLoopFactory
     ) {
-
         /**
          *
          */
@@ -51,9 +50,9 @@ angular.module('odoo')
                         var remoteData = response[0];
 
                         var remoteDate = new Date(remoteData.__last_update);
-                        var localDate = new Date(data.modifiedDate);
+                        var localDate = new Date(data.modified_date);
 
-                        delete data.modifiedDate;
+                        delete data.modified_date;
 
                         if (localDate > remoteDate) {
 
@@ -79,7 +78,7 @@ angular.module('odoo')
 
             } else {
 
-                delete data.modifiedDate;
+                delete data.modified_date;
 
                 odooFactory.create('crm.lead', data, function (response) {
                     success(response);
@@ -125,6 +124,7 @@ angular.module('odoo')
                     push(null, data, function (response) {
                         loop.next();
                     }, function (pushErr) {
+                        console.log(pushErr);
                         loop.next();
                     });
 
@@ -145,8 +145,6 @@ angular.module('odoo')
                 asyncLoopFactory(updatedLeads.length, function (loop) {
                     var data = updatedLeads.item(loop.iteration());
 
-                    console.log(data);
-
                     push(data.remote_id, data, function (response) {
                         loop.next();
                     }, function (pushErr) {