Ray Zhang 10 年 前
コミット
ca4cf946e5

+ 31 - 0
RedAnt ERP Mobile/common/data_provider/iSalesDB.h

@@ -0,0 +1,31 @@
+//
+//  iSalesDB.h
+//  RedAnt ERP Mobile
+//
+//  Created by Ray on 14-6-24.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "const.h"
+#import <sqlite3.h>  
+#import "config.h"
+@interface iSalesDB : NSObject
++ (BOOL) initializeDb;
++(void)execSql:(NSString *)sql db:(sqlite3 *)db;
++(void)execSql:(NSString *)sql;
++ (sqlite3*) get_db;
++ (int) get_recordid:(sqlite3*)db table:(NSString*) tablename where:(NSString*) whereclause order:(NSString*) orderby;
++ (int) get_recordid:(sqlite3*)db table:(NSString*) tablename where:(NSString*) whereclause;
+
++ (int) get_recordid:(NSString*) tablename where:(NSString*) whereclause;
++ (int) get_recordid:(NSString*) tablename where:(NSString*) whereclause order:(NSString*) orderby;
+
++ (void) save_pdf: (NSString*) temp_path filename:(NSString*) filename;
+
++ (NSData*) load_cached_img:(NSString*) filename;
++ (void) cache_img: (NSData*) imgData :(NSString*) name;
+
+
++ (NSDictionary*) search_pdf:(int) offset limit:(int)limit keywords:(NSString*) keywords;
+@end

+ 398 - 0
RedAnt ERP Mobile/common/data_provider/iSalesDB.m

@@ -0,0 +1,398 @@
+//
+//  iSalesDB.m
+//  RedAnt ERP Mobile
+//
+//  Created by Ray on 14-6-24.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "iSalesDB.h"
+#import "AppDelegate.h"
+@implementation iSalesDB
+
++ (sqlite3*) get_db
+{
+    sqlite3* db = nil;
+    
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
+    NSString *documents = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];//[paths objectAtIndex:0];
+    NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];
+    
+    if (sqlite3_open([database_path UTF8String], &db) != SQLITE_OK) {
+        
+        DebugLog(@"sqlite3_open failed. msg:%s",sqlite3_errmsg(db));
+        sqlite3_close(db);
+    }
+    return db;
+    
+}
++ (NSString* )   sqliteEscape :(NSString*) keyWord
+{
+    
+    
+    keyWord = [keyWord stringByReplacingOccurrencesOfString:@"/" withString:@"//"];
+    
+    keyWord = [keyWord stringByReplacingOccurrencesOfString:@"'" withString:@"''"];
+    keyWord = [keyWord stringByReplacingOccurrencesOfString:@"[" withString:@"/["];
+    keyWord = [keyWord stringByReplacingOccurrencesOfString:@"]" withString:@"/]"];
+    keyWord = [keyWord stringByReplacingOccurrencesOfString:@"%" withString:@"/%"];
+    keyWord = [keyWord stringByReplacingOccurrencesOfString:@"&" withString:@"/&"];
+    keyWord = [keyWord stringByReplacingOccurrencesOfString:@"_" withString:@"/_"];
+    keyWord = [keyWord stringByReplacingOccurrencesOfString:@"(" withString:@"/("];
+    keyWord = [keyWord stringByReplacingOccurrencesOfString:@")" withString:@"/)"];
+
+    
+    return keyWord;
+}
++ (void) save_pdf: (NSString*) temp_path filename:(NSString*) filename
+{
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    if(appDelegate.bEnable_Cache==false)
+        return ;
+    if(temp_path==nil)
+        return;
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
+    NSString *cachefolder = [paths objectAtIndex:0];
+    NSString *pdf_cache = [cachefolder stringByAppendingPathComponent:@"pdf_cache"];
+    NSFileManager* fileManager = [NSFileManager defaultManager];
+    BOOL bdir=YES;
+    if(!  [fileManager fileExistsAtPath:pdf_cache isDirectory:&bdir])
+    {
+        
+        NSError *error = [[NSError alloc] init];
+        bool bsuccess=[fileManager createDirectoryAtPath:pdf_cache withIntermediateDirectories:YES attributes:nil error:&error];
+        
+        if(!bsuccess)
+            DebugLog(@"Create cache folder failed");
+        
+        //        if(bsuccess)
+        //        {
+        //            sqlite3 *db = [self get_db];
+        //
+        //            [self execSql:[NSString stringWithFormat:@"insert into img_cache(name) values('%@')",name] db:db];
+        //            sqlite3_close(db);
+        //        }
+    }
+    NSString *save_path = [pdf_cache stringByAppendingPathComponent:filename];
+    
+      NSError *error = [[NSError alloc] init];
+    
+    bool bsuccess=[fileManager copyItemAtPath:temp_path toPath:save_path error:&error];
+    
+   
+    
+    if(bsuccess)
+        DebugLog(@"PDF SAVE SUCCESS,%@",filename);
+    else
+        DebugLog(@"PDF SAVE FAILED,%@",filename);
+  
+}
++ (void) cache_img: (NSData*) imgData :(NSString*) name
+{
+    
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    if(appDelegate.bEnable_Cache==false)
+        return ;
+    if(imgData==nil)
+        return;
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
+    NSString *cachefolder = [paths objectAtIndex:0];
+    NSString *img_cache = [cachefolder stringByAppendingPathComponent:@"img_cache"];
+    NSFileManager* fileManager = [NSFileManager defaultManager];
+    BOOL bdir=YES;
+    if(!  [fileManager fileExistsAtPath:img_cache isDirectory:&bdir])
+    {
+        
+        NSError *error = [[NSError alloc] init];
+        bool bsuccess=[fileManager createDirectoryAtPath:img_cache withIntermediateDirectories:YES attributes:nil error:&error];
+        
+        if(!bsuccess)
+                        DebugLog(@"Create cache folder failed");
+        
+//        if(bsuccess)
+//        {
+//            sqlite3 *db = [self get_db];
+//            
+//            [self execSql:[NSString stringWithFormat:@"insert into img_cache(name) values('%@')",name] db:db];
+//            sqlite3_close(db);
+//        }
+    }
+    NSString *filePath = [img_cache stringByAppendingPathComponent:name];
+    bool bsuccess=[imgData writeToFile:filePath atomically:YES];
+    
+    if(bsuccess)
+        DebugLog(@"IMG CACHE SUCCESS,%@",name);
+    else
+        DebugLog(@"IMG CACHE FAILED,%@",name);
+    
+}
++ (NSData*) load_cached_img:(NSString*) filename
+{
+    
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    if(appDelegate.bEnable_Cache==false)
+        return nil;
+    
+    
+    NSData* data = nil;
+    
+    
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
+    NSString *cachefolder = [paths objectAtIndex:0];
+    NSString *img_cache = [cachefolder stringByAppendingPathComponent:@"img_cache"];
+    NSString *filePath = [img_cache stringByAppendingPathComponent:filename];
+    
+    NSFileManager* fileManager = [NSFileManager defaultManager];
+    if(  [fileManager fileExistsAtPath:filePath ])
+    {
+        data = [NSData dataWithContentsOfFile: filePath];
+    }
+    
+    //    NSString* sqliteQuery = [NSString stringWithFormat:@"SELECT img FROM img_cache WHERE name = '%@'", filename];
+    //    sqlite3_stmt* statement;
+    
+    //    sqlite3 *db = [self get_db];
+    //
+    ////    if( sqlite3_prepare_v2(db, [sqliteQuery UTF8String], -1, &statement, NULL) == SQLITE_OK )
+    ////    {
+    ////        if( sqlite3_step(statement) == SQLITE_ROW )
+    ////        {
+    ////            int length = sqlite3_column_bytes(statement, 0);
+    ////            data       = [NSData dataWithBytes:sqlite3_column_blob(statement, 0) length:length];
+    ////        }
+    ////    }
+    //
+    //    // Finalize and close database.
+    //    sqlite3_finalize(statement);
+    
+    
+   // sqlite3_close(db);
+    return data;
+    
+}
++ (BOOL) initializeDb {
+    DebugLog (@"initializeDB");
+    
+ //   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
+    NSString *documents = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];//[paths objectAtIndex:0];
+    NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];
+    
+    
+    // move db file from document to cache ;
+ //   NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+    NSString *documentFolderPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] ;//[searchPaths objectAtIndex: 0];
+    NSString* dbFilePath = [documentFolderPath stringByAppendingPathComponent:DBNAME];
+    if ([[NSFileManager defaultManager] fileExistsAtPath: dbFilePath])
+    {
+        [[NSFileManager defaultManager] moveItemAtPath:dbFilePath toPath:database_path error:nil];
+        
+    }
+    // end move;
+    
+    
+    
+    
+    
+    
+    if (true)//! [[NSFileManager defaultManager] fileExistsAtPath: database_path])
+    {
+        sqlite3 *db = [self get_db];
+        
+        NSString* create_model=@"CREATE TABLE IF NOT EXISTS model ( _id INTEGER PRIMARY KEY, name VARCHAR(20), description VARCHAR(20), product_id INTEGER, color VARCHAR(20), legcolor VARCHAR(20) ,availability INTEGER,  incoming_stock INTEGER , demension VARCHAR(20), seat_height VARCHAR(20), meterial VARCHAR(20), box_dim VARCHAR(20), volume VARCHAR(20), weight VARCHAR(20), model_set VARCHAR(20), load_ability VARCHAR(20),default_category VARCHAR(20), fabric_content VARCHAR(20), assembling VARCHAR(20), made_in VARCHAR(20), special_remarks VARCHAR(20));";
+        
+        
+        
+        NSString* create_image=@"CREATE TABLE IF NOT EXISTS model_image ( _id INTEGER PRIMARY KEY, name VARCHAR(20), url VARCHAR(256));";
+        
+        NSString* create_image_price=@"CREATE TABLE IF NOT EXISTS model_price ( _id INTEGER PRIMARY KEY, product_id INTEGER,price float , type integer);";
+        NSString* create_category=@"CREATE TABLE IF NOT EXISTS category ( _id INTEGER PRIMARY KEY, code VARCHAR(20),name VARCHAR(20));";
+        NSString* create_model_category=@"CREATE TABLE IF NOT EXISTS model_category ( _id INTEGER PRIMARY KEY, product_id INTEGER,code VARCHAR(20));";
+        
+        //        CREATE TABLE users (_id integer PRIMARY KEY,name varchar(20),pass varchar(20));
+        //        [self execSql:create_actions_info db:db];
+        //        [self execSql:create_fields_info db:db];
+        //        [self execSql:create_search_history db:db];
+        //        [self execSql:create_push_message db:db];
+        //        [self execSql:create_favorites db:db];
+        //        [self execSql:create_history db:db];
+        //        [self execSql:create_location db:db];
+        [self execSql:create_model db:db];
+        
+        [self execSql:create_image db:db];
+        
+        [self execSql:create_image_price db:db];
+        [self execSql:create_category db:db];
+        [self execSql:create_model_category db:db];
+        
+        //        if( ![self checkForField:@"search_history" field:@"level" db:db])
+        //        {
+        //            NSString* alter_search_history = @"ALTER TABLE search_history ADD level INTEGER";
+        //            [self execSql:alter_search_history db:db];
+        //        }
+        //        NSTimeInterval time=[[NSDate date] timeIntervalSince1970];
+        //        double t = time-2592000;      //NSTimeInterval返回的是double类型
+        //        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
+        //        [formatter setDateFormat:@"yyyy-MM-dd"];
+        //
+        //        NSString*timestr=[formatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:t]];
+        //
+        //    //    [self execSql:[NSString stringWithFormat:@"delete from search_history where h_time<%@",timestr ] db:db];
+        //        [self execSql:@"delete from search_history where julianday('now', 'localtime')-julianday(h_time, 'localtime')>30" db:db];
+        int ret=sqlite3_close(db);
+        //        int aaa = 0;
+    }
+    return YES;
+    
+    
+    DebugLog (@"bottom of initializeDb");
+}
++(void)execSql:(NSString *)sql db:(sqlite3 *)db
+{
+    char *err;
+    if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
+        
+        DebugLog(@"sqlite3_exec failed msg:%s",sqlite3_errmsg(db));
+        DebugLog(@"sqlite3_exec failed sql:%@",sql);
+       // sqlite3_close(db);
+        
+    }
+}
++ (NSDictionary*) search_pdf:(int) offset limit:(int)limit keywords:(NSString*) keywords
+{
+    sqlite3 *db = [self get_db];
+    NSMutableDictionary* json = [[NSMutableDictionary alloc] init];
+    [json setValue:@"1" forKey:@"result"];
+    NSString *sqlQuery =nil;
+    if(keywords.length>0)
+    sqlQuery=[NSString stringWithFormat: @"SELECT _id,name,file_name,send_to,create_params,c_id,c_name,o_id,pdf_type,create_time FROM pdf_cache where  lower(name) like '%%%@%%' order by create_time desc limit %d offset %d",keywords,limit,offset];
+    
+    else
+        sqlQuery=[NSString stringWithFormat: @"SELECT _id,name,file_name,send_to,create_params,c_id,c_name,o_id,pdf_type,create_time FROM pdf_cache order by create_time desc limit %d offset %d",limit,offset];
+    
+   sqlite3_stmt * statement;
+    int count = 0;
+    if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK)
+    {
+        while (sqlite3_step(statement) == SQLITE_ROW) {
+            
+            int _id = sqlite3_column_int(statement, 0);
+            
+            char *name = (char*)sqlite3_column_text(statement, 1);
+            NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];
+            
+            char *file_name = (char*)sqlite3_column_text(statement, 2);
+            NSString *nsFileNameStr = [[NSString alloc]initWithUTF8String:file_name];
+            
+            
+            char *type = (char*)sqlite3_column_text(statement, 8);
+            NSString *nsTypeStr = [[NSString alloc]initWithUTF8String:type];
+            
+            char *create_time = (char*)sqlite3_column_text(statement, 9);
+            NSString *nsTimeStr = [[NSString alloc]initWithUTF8String:create_time];
+            
+            
+            
+            
+            NSMutableDictionary* item = [[NSMutableDictionary alloc] init];
+            
+            [item setValue:[NSString stringWithFormat:@"%d",_id] forKey:@"_id"];
+            [item setValue:nsNameStr forKey:@"name"];
+            [item setValue:nsTimeStr forKey:@"create_time"];
+            [item setValue:nsTypeStr forKey:@"type"];
+            [item setValue:nsFileNameStr forKey:@"file_name"];
+            
+            [json setObject:item forKey:[NSString stringWithFormat:@"item_%d",count]];
+            count++;
+            
+        }
+        [json setValue:[NSString stringWithFormat:@"%d",count] forKey:@"count"];
+         [json setValue:@"2" forKey:@"result"];
+    }
+    
+    sqlite3_close(db);
+    return json;
+}
++(void)execSql:(NSString *)sql
+{
+    
+            sqlite3 *db = [self get_db];
+    [self execSql:sql db:db];
+    
+    sqlite3_close(db);
+}
++ (int) get_recordid:(NSString*) tablename where:(NSString*) whereclause
+{
+    
+    //    [ApexMobileDB execSql: [NSString stringWithFormat: @"update fields_info set abandon = 1 where user ='%@'",user] db:db];
+    return [self get_recordid:tablename where:whereclause order:@"_id"];
+}
++ (int) get_recordid:(NSString*) tablename where:(NSString*) whereclause order:(NSString*) orderby
+{
+    sqlite3 *db = [self get_db];
+    
+    int ret = -1;
+    NSString *sqlQuery = [NSString stringWithFormat:@"select _id from %@ where %@ orderby %@",tablename,whereclause,orderby];
+    sqlite3_stmt * statement;
+    
+    if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK)
+    {
+        if (sqlite3_step(statement) == SQLITE_ROW)
+        {
+            //            char *name = (char*)sqlite3_column_text(statement, 1);
+            //            NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];
+            
+            ret = sqlite3_column_int(statement, 0);
+            
+            //            char *address = (char*)sqlite3_column_text(statement, 3);
+            //            NSString *nsAddressStr = [[NSString alloc]initWithUTF8String:address];
+            
+            
+        }
+        sqlite3_finalize(statement);
+    }
+    sqlite3_close(db);
+    return ret;
+    
+}
+
+
++ (int) get_recordid:(sqlite3*)db table:(NSString*) tablename where:(NSString*) whereclause
+{
+    //    [ApexMobileDB execSql: [NSString stringWithFormat: @"update fields_info set abandon = 1 where user ='%@'",user] db:db];
+    return [self get_recordid:db table:tablename where:whereclause order:@"_id"];
+}
+
+
++ (int) get_recordid:(sqlite3*)db table:(NSString*) tablename where:(NSString*) whereclause order:(NSString*) orderby
+{
+    int ret = -1;
+    NSString *sqlQuery = [NSString stringWithFormat:@"select _id from %@ where %@ orderby %@",tablename,whereclause,orderby];
+    sqlite3_stmt * statement;
+    
+    if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK)
+    {
+        if (sqlite3_step(statement) == SQLITE_ROW)
+        {
+            //            char *name = (char*)sqlite3_column_text(statement, 1);
+            //            NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];
+            
+            ret = sqlite3_column_int(statement, 0);
+            
+            //            char *address = (char*)sqlite3_column_text(statement, 3);
+            //            NSString *nsAddressStr = [[NSString alloc]initWithUTF8String:address];
+            
+            
+        }
+        sqlite3_finalize(statement);
+    }
+    return ret;
+    
+}
+
+
+@end

+ 108 - 0
RedAnt ERP Mobile/common/data_provider/iSalesNetwork.h

@@ -0,0 +1,108 @@
+//
+//  iSalesNetwork.h
+//  RedAnt ERP Mobile
+//
+//  Created by Ray on 14-6-20.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "const.h"
+#import "config.h"
+#import "AppDelegate.h"
+#import "Reachability.h"
+#import "iSalesDB.h"
+#import "RAUtils.h"
+@interface iSalesNetwork : NSObject
++(void) LoadImage:(NSString*) url into:(UIImageView*) container;
++(NSDictionary*) portfolio_remove:(NSString* ) item_ids;
++(NSDictionary*)request_Portfolio;
+
++(NSDictionary*) add_toPortfolio:(NSString* ) item_id;
++(NSData*)get_json : (NSString*) url parameters:(NSMutableDictionary *) params;
++(int)Authorize : (NSString*) user password:(NSString*) password ;
++(NSDictionary*)logout;
++(NSDictionary*)request_Cagegory;
++(NSDictionary*)load_HomePage: (int) price_template customid:(int) customid;
++(NSDictionary*)retrieve_password: (NSString*) user email:(NSString*) email;
+
+
+
+
+//+(NSDictionary*)Search: (NSString*) category customid:(int) customid price_template:(int) price_template sort:(int) sort_by filter:(NSString*) filter keyword:(NSString*) keyword;
++(NSDictionary*)Category: (NSString*) category customid:(int) customid price_template:(int) price_template sort:(int) sort_by filter:(NSString*) filter keyword:(NSString*) keyword offset:(long) offset limit:(long) limit;
+
++(bool) IsNetworkAvailable;
++(int)parse_authinfo : (NSData *) json user:(NSString*) user password:(NSString*) password;
+
+
+
++(NSDictionary*)request_ItemDetail: (NSString* ) item_id model_name:(NSString*) model_name category_id:(NSString*) category_id use_name :(bool) use_name;
+
++(NSDictionary*) cart_incresement:(NSString*) cart_id increse:(bool) increse;
++(NSDictionary*) cart_setQTY:(NSString*) cart_id value:(int) value;
++(NSDictionary*) cart_setPrice:(NSString*) cart_id price:(float) price discount:(float) discount;
++(NSDictionary*) cart_setFree:(NSString*) cart_id isfree:(bool) isfree;
+
++(NSDictionary*) add_toCart:(NSString* ) item_id count:(int) count;
++(NSDictionary*) add_toCart_byName:(NSString* ) model_name;
++(NSDictionary*) add_toWatchList:(NSString* ) item_id;
++(NSDictionary*)request_Cart;
++(NSDictionary*)request_WatchList;
++(NSDictionary*) portfolio_setPrice:(NSString*) watchlist_id price:(float) price discount:(float) discount;
+
+
++(NSDictionary*) cart_remove:(NSString* ) item_ids;
++(NSDictionary*) cart_check:(NSString* ) item_ids;
++(NSDictionary*) watchlist_remove:(NSString* ) item_ids;
+
++(NSDictionary*) move_wish2cart:(NSString* ) item_ids;
++(NSDictionary*) move_cart2wish:(NSString* ) item_ids;
+
++(NSDictionary*)request_OrderList:(int ) offset limit :(int)limit keywords :(NSString* ) keywords status:(NSString*) status_code;
++(NSDictionary*)request_OrderDetail:(NSString* ) orderid;
++(NSDictionary*)commit_Order:(NSString*) order_code;// saved:(bool) saved;
++(NSDictionary*)update_OrderCustomer:(NSString*) order_code customerinfo:(NSMutableDictionary*)info;
++(NSDictionary*)saveandcommit_Order:(NSMutableDictionary*)params;
++(NSDictionary*) new_Order;
++(NSDictionary*)open_Order:(NSString*) order_code;
++(NSDictionary*)release_Order:(NSString*) order_code;
++(NSDictionary*)save_Order:(NSMutableDictionary*)params;
++(NSDictionary*)delete_Order:(NSString*) order_id;
++(NSDictionary*)cancel_Order:(NSString*) order_id;
+
++(NSDictionary*)request_CustomerInfo:(NSString* ) contactid;
++(NSDictionary*)update_customer_img: (NSString*) contactid img_url:(NSString*) url;
++(NSDictionary*) new_Customer;
++(NSDictionary*)save_Customer:(NSMutableDictionary*)params;
+
+
++(NSDictionary*)create_Address:(NSMutableDictionary*)params;
++(NSDictionary*)request_ContactList:(int) offset limit:(int)limit keywords:(NSString*) keywords type:(NSString*) contact_type adv_search:(NSDictionary*)upparams;
+
+
++(NSDictionary*)Search:(long ) offset limit :(long)limit keywords :(NSString*) keywords;
++(NSDictionary*)ItemSearch:(long ) offset limit :(long)limit covertype:(NSString* ) covertype ctgid:(NSString*)ctgid modelname:(NSString*) modelname modeldescrip:(NSString*)modeldescrip alert:(NSString*)alert available:(NSString*)available;
+
++(NSDictionary*)request_Editor:(NSString*) request_url params:(NSMutableDictionary*)params;
+
++(NSString*)DataTOjsonString:(id)object;
+
+
++(NSDictionary*)request_PDFList:(int ) offset limit:(int)limit keywords:(NSString* ) keywords;
++(NSDictionary*)request_TearSheet:(NSString*) request_url ;
++(NSDictionary*)save_TearSheet:(NSString*) path name:(NSString*)name delete:(NSString* )ids;
++(NSDictionary*)direct_save_TearSheet:(NSString*) request_url name:(NSString*)name delete:(NSString* )ids;
+
+
+//+(NSDictionary*)category_LoadMore: (NSString*) category customid:(int) customid price_template:(int) price_template sort:(int) sort_by filter:(NSString*) filter keyword:(NSString*) keyword offset:(int)offset;
+//+(NSData*)fake_json:(NSString*) url;
+//+(NSDictionary*)request_ItemDetail: (NSString* ) item_id category_id:(NSString*) category_id price_template:(int) price_template customid:(int) customid;
+
+//+(NSDictionary*)request_OrderInfo:(NSString*) orderid;
+//+(NSDictionary*)request_Editor:(NSString*) sourceid editor:(NSString*)editor;
+
+
+//+(NSString *)flattenHTML:(NSString *)html trimWhiteSpace:(BOOL)trim;
+
+@end

+ 2282 - 0
RedAnt ERP Mobile/common/data_provider/iSalesNetwork.m

@@ -0,0 +1,2282 @@
+//
+//  iSalesNetwork.m
+//  RedAnt ERP Mobile
+//
+//  Created by Ray on 14-6-20.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "iSalesNetwork.h"
+#import "RAUtils.h"
+
+@implementation iSalesNetwork
+
+
++(void) LoadImage:(NSString*) url into:(UIImageView*) container
+{
+    
+    DebugLog(@"LoadImage:(NSString*) url in:(UIImageView*) container");
+    
+    NSString* file_name=[url lastPathComponent];
+    NSData* img_data = [iSalesDB load_cached_img:file_name];
+    if(img_data==nil)
+        
+    {
+        DebugLog(@"IMG NOT CACHED %@",file_name);
+        img_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
+        [iSalesDB cache_img:img_data :file_name ];
+        
+        //load from internet;
+    }
+    
+    
+    
+    if(img_data!=nil)
+    {
+        UIImage * img =[UIImage imageWithData:img_data];
+        
+        if(img==nil)
+            DebugLog(@"UIIMAGE IS NIL! %@",file_name);
+        else
+            container.image =img;
+        
+    }
+    else
+    {
+        DebugLog(@"IMG DOWNLOAD FAILED! %@",file_name);
+    }
+}
+//+(NSData*)fake_json:(NSString*) url
+//{
+//    NSString* jsonfile = nil;
+//    if([url isEqualToString:URL_UPDATE_AUTH])
+//    {
+//        jsonfile=@"login";
+//
+//    }
+//    else if([url isEqualToString:URL_REQUEST_CATMENU])
+//    {
+//        jsonfile=@"categorymenu";
+//    }
+//    else if([url isEqualToString:URL_LOAD_HOME])
+//    {
+//        jsonfile=@"homepage";
+//    }
+//    else if([url isEqualToString:URL_SEARCH])
+//    {
+//        jsonfile=@"search";
+//    }
+//    else if([url isEqualToString:URL_CATEGORY_LOADMORE])
+//    {
+//        jsonfile=@"category_more";
+//    }else if([url isEqualToString:URL_ITEM_DETAIL])
+//    {
+//        jsonfile=@"detail";
+//    }else if([url isEqualToString:URL_CART])
+//    {
+//        jsonfile=@"cart";
+//    }else if([url isEqualToString:URL_ORDER_LIST])
+//    {
+//        jsonfile=@"orderlist";
+//    }
+////    else if([url isEqualToString:URL_ORDER_INFO])
+////    {
+////        jsonfile=@"orderinfo";
+////    }
+////    else if([url isEqualToString:URL_ORDER_INFO])
+////    {
+////        jsonfile=@"orderinfo2label";
+////    }
+//    
+//    
+//    
+//    NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:jsonfile ofType:@"json" ]];
+//    NSMutableString *result = [[NSMutableString alloc] initWithData:json encoding:NSUTF8StringEncoding];
+//    
+//    DebugLog(@"result: \n%@",result);
+//    return json;
+//}
++(NSData*)get_json : (NSString*) url parameters:(NSMutableDictionary *) params //delegate:(id < NSURLConnectionDelegate >)delegate
+{
+    int retry = 0;
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    
+    if(appDelegate.ipad_perm!=nil)
+        [params setValue:appDelegate.ipad_perm forKey:@"ipad_perm"];
+    
+    [params setValue:appDelegate.build forKey:@"app_ver"];
+    UIDevice * dev = [UIDevice currentDevice];
+    NSUUID* uuid =dev.identifierForVendor;
+    [params setValue:uuid.UUIDString forKey:@"idfv"];
+    
+repeat:{
+    
+//    return [self fake_json:url];
+    
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    //分界线的标识符
+    NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";
+    //根据url初始化request
+    NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]
+                                                           cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
+                                                       timeoutInterval:JSON_TIMEOUT];
+    //分界线 --AaB03x
+    NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];
+    //结束符 AaB03x--
+    NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];
+    //要上传的图片
+    //    UIImage *image=[params objectForKey:@"pic"];
+    //得到图片的data
+    //    NSData* data = UIImagePNGRepresentation(image);
+    //http body的字符串
+    NSMutableString *body=[[NSMutableString alloc]init];
+    
+    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    //     [params setValue:@"handset_login" forKey:@"action"];
+    //    [headers setValue:[NSString stringWithFormat:@"%d",dataLength] forKey:@"Content-Length"];
+    
+    //    [params setValue:appDelegate.sessionid forKey:@"sessionid"];
+    //   [params setValue:password forKey:@"password"];
+    //    [params setValue:[NSString stringWithFormat:@"%d",ver]  forKey:@"auth_ver"];
+    
+    
+    
+    //    [headers setValue:headQuerlString forKey:@"param"];
+    
+    //参数的集合的所有key的集合
+    NSArray *keys= [params allKeys];
+    DebugLog(@"================parms==================");
+    //遍历keys
+    for(int i=0;i<[keys count];i++)
+    {
+        //得到当前key
+        NSString *key=[keys objectAtIndex:i];
+        //如果key不是pic,说明value是字符类型,比如name:Boris
+        if(![key isEqualToString:@"pic"])
+        {
+            //添加分界线,换行
+            [body appendFormat:@"%@\r\n",MPboundary];
+            //添加字段名称,换2行
+            [body appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",key];
+            //添加字段的值
+            [body appendFormat:@"%@\r\n",[params objectForKey:key]];
+            DebugLog(@"parameter: key=%@   value=%@",key,[params objectForKey:key]);
+        }
+    }
+    DebugLog(@"================parms==================");
+    ////添加分界线,换行
+    [body appendFormat:@"%@\r\n",MPboundary];
+    //声明pic字段,文件名为boris.png
+    [body appendFormat:@"Content-Disposition: form-data; name=\"pic\"; filename=\"boris.png\"\r\n"];
+    //声明上传文件的格式
+    [body appendFormat:@"Content-Type: image/png\r\n\r\n"];
+    
+    //声明结束符:--AaB03x--
+    NSString *end=[[NSString alloc]initWithFormat:@"\r\n%@",endMPboundary];
+    //声明myRequestData,用来放入http body
+    NSMutableData *myRequestData=[NSMutableData data];
+    //将body字符串转化为UTF8格式的二进制
+    [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];
+    //将image的data加入
+    //    [myRequestData appendData:data];
+    //加入结束符--AaB03x--
+    [myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];
+    
+    //设置HTTPHeader中Content-Type的值
+    NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];
+    //设置HTTPHeader
+    [request setValue:content forHTTPHeaderField:@"Content-Type"];
+    
+    // 关闭keep alive
+        [request setValue:@"close" forHTTPHeaderField:@"Connection"];
+    //设置Content-Length
+    [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[myRequestData length]] forHTTPHeaderField:@"Content-Length"];
+    //设置http body
+    [request setHTTPBody:myRequestData];
+    //http method
+    [request setHTTPMethod:@"POST"];
+    
+    
+    NSHTTPURLResponse* urlResponse = nil;
+    
+    NSError *error = [[NSError alloc] init];
+    
+    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
+    
+    
+    DebugLog(@"url: %@",url);
+    
+    DebugLog(@"response: %@",[NSHTTPURLResponse localizedStringForStatusCode:urlResponse.statusCode]);
+    
+    if (responseData==nil) {
+        
+        DebugLog(@"response error:%@", [error localizedDescription]);
+        
+        
+        NSMutableDictionary* ret = [[NSMutableDictionary alloc] init];
+//#define RESULT_FALSE 0
+//#define RESULT_TRUE		 2
+//#define RESULT_NET_ERROR			 -3
+//#define RESULT_NET_NOTAVAILABLE		  -4
+//#define RESULT_ERROR				 -5
+//#define RESULT_LOCALFILE_ERROR			 -7
+//#define RESULT_USERAUTH_ERROR			 -9
+//#define RESULT_UPDATE_USERAUTH_ERROR	 -11
+//#define RESULT_SESSION_EXPIRED			  -13
+//#define RESULT_VER_LOW
+        
+   //     NSString * moreinfo = error.description ;
+        
+        NSString* err_msg = [error localizedDescription];
+        
+        
+        //-----------------retry 3 times for error code -1005------------------------
+        if(error.code==-1005&&retry<3)
+        {
+            retry++;
+            goto repeat;
+            
+        }
+        //-----------------end retry 3 times for error code -1005------------------------
+        
+        NSDictionary* error_json = [RAUtils error_dict:error];
+        [ret setObject:error_json forKey:@"err_obj"];
+        NSString* resp_msg= nil;
+        
+        if(err_msg.length==0)
+        {
+            err_msg =[NSHTTPURLResponse localizedStringForStatusCode:urlResponse.statusCode];
+            resp_msg = err_msg;
+        }
+        [ret setValue:[NSString stringWithFormat:@"%d",RESULT_NET_ERROR] forKey:@"result"];
+        [ret setValue:err_msg forKey:@"err_msg"];
+        [ret setValue:resp_msg forKey:@"resp_msg"];
+        [ret setValue:[NSString stringWithFormat:@"%ld",(long)urlResponse.statusCode] forKey:@"resp_code"];
+        
+        
+        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:ret
+                                                           options:0
+                                                             error:nil];
+        if(![url isEqualToString:URL_ERR_LOG])
+        {
+            [iSalesNetwork err_log:[RAUtils base64en:[RAUtils dict2string:params]] result:[RAUtils base64en:[RAUtils dict2string:ret]] module:url];
+        }
+        return jsonData;
+        
+    }
+    else
+    {
+        NSMutableString *str = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
+        
+        DebugLog(@"data string: %@",str);
+        NSError *error1 = [[NSError alloc] init];
+        
+       NSMutableDictionary* jsobj = [[NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:&error1] mutableCopy];
+        
+        if(jsobj==nil)// 服务器返回不是json
+        {
+            
+            jsobj=[[NSMutableDictionary alloc] init];
+            [jsobj setValue:@"1" forKey:@"result"];
+            
+        }
+        
+        int result=[[jsobj valueForKey:@"result"] intValue];
+        UIApplication * app = [UIApplication sharedApplication];
+        AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+        NSString* mode =[jsobj valueForKey:@"mode"];
+        [appDelegate SetMode:mode];
+        switch (result) {
+            case 0:
+                [jsobj setValue:MSG_USERAUTH_ERROR forKey:@"err_msg"];
+                break;
+            case 1:
+                [jsobj setValue:MSG_ERROR forKey:@"err_msg"];
+                break;
+            case 2:
+                [jsobj setValue:MSG_SUCCESS forKey:@"err_msg"];
+                break;
+            case 8:
+                [jsobj setValue:[jsobj valueForKey:@"msg"] forKey:@"err_msg"];
+                break;
+            case 9:
+                [jsobj setValue:[jsobj valueForKey:@"msg"] forKey:@"err_msg"];
+                break;
+            default:
+                [jsobj setValue:MSG_ERROR forKey:@"err_msg"];
+                break;
+        }
+
+        
+        if([appDelegate.build intValue]< [[jsobj valueForKey:@"min_ver"]intValue])
+        {
+            [jsobj setValue:@"9" forKey:@"result"];
+            [jsobj setValue:MSG_VER_LOW forKey:@"err_msg"];
+        }
+        
+        if(![url isEqualToString:URL_ERR_LOG]&&result!=2)
+        {
+            [iSalesNetwork err_log:[RAUtils base64en:[RAUtils dict2string:params]] result:[RAUtils base64en:str] module:url];
+        }
+        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsobj
+                                                           options:0
+                                                             error:nil];
+        return jsonData;
+        
+    }
+    return responseData;
+}
+}
+
+
++(NSString*)DataTOjsonString:(id)object
+{
+    NSString *jsonString = nil;
+    NSError *error;
+    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object
+                                                       options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
+                                                         error:&error];
+    if (! jsonData) {
+        NSLog(@"Got an error: %@", error);
+    } else {
+        jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
+    }
+    return jsonString;
+}
+//+(NSDictionary*)request_Editor:(NSString*) sourceid editor:(NSString*)editor
+//{
+//    
+//}
++(NSDictionary*) portfolio_remove:(NSString* ) item_ids
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    [params setValue:item_ids forKey:@"portfolioId"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_PORTFOLIO_REMOVE parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        
+        
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        
+        if (result==2)
+        {
+            
+
+                appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+            
+            [appDelegate update_count_mark];
+        }
+        return jsobj;
+    }
+    else
+        return nil;
+}
++(NSDictionary*) watchlist_remove:(NSString* ) item_ids
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    [params setValue:item_ids forKey:@"collectId"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_WATCHLIST_REMOVE parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        
+        if (result==2)
+        {
+            
+            //appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+            appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
+            //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+            
+            [appDelegate update_count_mark];
+        }
+        return jsobj;
+    }
+    else
+        return nil;
+}
++(NSDictionary*) move_cart2wish:(NSString* ) item_ids
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+    [params setValue:item_ids forKey:@"cartItemId"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_CART2WISH parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        
+        if (result==2)
+        {
+            
+            //appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+            appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
+            //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+            
+            [appDelegate update_count_mark];
+        }
+        return jsobj;
+    }
+    else
+        return nil;
+}
++(NSDictionary*) move_wish2cart:(NSString* ) item_ids
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+    [params setValue:item_ids forKey:@"collectId"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_WISH2CART parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        
+        if (result==2)
+        {
+            
+            //appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+                appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
+            //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+            
+            [appDelegate update_count_mark];
+        }
+        return jsobj;
+    }
+    else
+        return nil;
+}
+
++(NSDictionary*) cart_remove:(NSString* ) item_ids
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+        NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+        [params setValue:item_ids forKey:@"cartItemId"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_CART_REMOVE parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        
+        if (result==2)
+        {
+            
+            appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+
+            
+            [appDelegate update_count_mark];
+        }
+        return jsobj;
+    }
+    else
+        return nil;
+}
+
+
++(NSDictionary*) cart_check:(NSString* ) item_ids
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    [params setValue:item_ids forKey:@"cartItemId"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_CART_CHECK parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        return jsobj;
+    }
+    else
+        return nil;
+}
+
++(NSDictionary*)create_Address:(NSMutableDictionary*)params
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    //    [params setValue:sourceid forKey:@"sourceid"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_ADDRESS_SAVE parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        return jsobj;
+    }
+    else
+        return nil;
+    
+}
+
++(NSDictionary*)commit_Order:(NSString*) order_code //saved:(bool) saved
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+        NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+//    NSString* ssaved = @"false";
+//     if(saved)
+//         ssaved=@"true";
+    [params setValue:@"true" forKey:@"saved"];
+    [params setValue:order_code forKey:@"orderCode"];
+    //    [params setValue:sourceid forKey:@"sourceid"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_COMMIT_ORDER parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        return jsobj;
+    }
+    else
+        return nil;
+    
+}
++(NSDictionary*)open_Order:(NSString*) order_code
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    //    if(appDelegate.contact_id!=nil)
+    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:order_code forKey:@"orderCode"];
+    //    [params setValue:sourceid forKey:@"sourceid"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_OPEN_ORDER parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        
+        if (result==2)
+        {
+            
+            appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+            //appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
+            //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+            
+            [appDelegate update_count_mark];
+        }
+        
+        return jsobj;
+    }
+    else
+        return nil;
+}
+
++(NSDictionary*)delete_Order:(NSString*) order_id
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    //    if(appDelegate.contact_id!=nil)
+    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:order_id forKey:@"orderId"];
+    //    [params setValue:sourceid forKey:@"sourceid"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_DELETE_ORDER parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        
+        
+        return jsobj;
+    }
+    else
+        return nil;
+}
+
++(NSDictionary*)cancel_Order:(NSString*) order_id
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    //    if(appDelegate.contact_id!=nil)
+    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:order_id forKey:@"orderId"];
+    //    [params setValue:sourceid forKey:@"sourceid"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_CANCEL_ORDER parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        
+        
+        return jsobj;
+    }
+    else
+        return nil;
+}
++(NSDictionary*)release_Order:(NSString*) order_code
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    //    if(appDelegate.contact_id!=nil)
+    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:order_code forKey:@"orderCode"];
+    //    [params setValue:sourceid forKey:@"sourceid"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_RELEASE_ORDER parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        if([[jsobj valueForKey:@"result"]intValue]==2)
+        {    [appDelegate SetSo:nil];
+
+            
+            appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+            //appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
+            //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+            
+            [appDelegate update_count_mark];
+        }
+        return jsobj;
+    }
+    else
+        return nil;
+}
++(NSDictionary*)update_OrderCustomer:(NSString*) order_code customerinfo:(NSMutableDictionary*)info
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [info setValue:appDelegate.user forKey:@"user"];
+//    if(appDelegate.contact_id!=nil)
+//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [info setValue:appDelegate.password forKey:@"password"];
+    
+    [info setValue:order_code forKey:@"orderCode"];
+    //    [params setValue:sourceid forKey:@"sourceid"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_UPDATE_ORDERCUSTOMER parameters:info];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        return jsobj;
+    }
+    else
+        return nil;
+}
++(NSDictionary*)saveandcommit_Order:(NSMutableDictionary*)params
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+    
+//    NSDictionary* customerinfo= appDelegate.customerInfo;
+//    
+//    NSArray* keys=[customerinfo allKeys];
+//    for(int i=0;i<keys.count;i++)
+//    {
+//        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
+//    }
+//    
+    //    [params setValue:sourceid forKey:@"sourceid"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_COMMIT_ORDER parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        if([[jsobj valueForKey:@"result"]intValue]==2)
+            [appDelegate SetSo:nil];
+        
+        
+        return jsobj;
+    }
+    else
+        return nil;
+    
+}
+
++(NSDictionary*)save_Customer:(NSMutableDictionary*)params
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    //    if(![appDelegate.order_customer_id isEqualToString: appDelegate.contact_id]&& appDelegate.order_customer_id!=nil)
+    //        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
+    //    else
+    
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+        if(appDelegate.password!=nil)
+            [params setValue:appDelegate.password forKey:@"password"];
+    
+       //    NSDictionary* customerinfo=nil;
+    
+    //    if(![[appDelegate.customerInfo valueForKey:@"customer_cid" ] isEqualToString: [appDelegate.customerInfo valueForKey:@"customer_cid" ]]&& appDelegate.order_customer_id!=nil)
+    //        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
+    //    else
+    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    //
+    //    appDelegate.customerInfo;
+    
+    //    NSArray* keys=[customerinfo allKeys];
+    //    for(int i=0;i<keys.count;i++)
+    //    {
+    //        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
+    //    }
+    
+    //    [params setValue:sourceid forKey:@"sourceid"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_CUSTOMER_SAVE parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        return jsobj;
+    }
+    else
+        return nil;
+    
+}
+
++(NSDictionary*)save_Order:(NSMutableDictionary*)params
+{
+    if(![self IsNetworkAvailable])
+         return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    //    if(![appDelegate.order_customer_id isEqualToString: appDelegate.contact_id]&& appDelegate.order_customer_id!=nil)
+    //        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
+    //    else
+    
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+    
+//    NSDictionary* customerinfo=nil;
+    
+//    if(![[appDelegate.customerInfo valueForKey:@"customer_cid" ] isEqualToString: [appDelegate.customerInfo valueForKey:@"customer_cid" ]]&& appDelegate.order_customer_id!=nil)
+//        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
+//    else
+//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+//    
+//    appDelegate.customerInfo;
+    
+//    NSArray* keys=[customerinfo allKeys];
+//    for(int i=0;i<keys.count;i++)
+//    {
+//        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
+//    }
+    
+    //    [params setValue:sourceid forKey:@"sourceid"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_SAVE_ORDER parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        return jsobj;
+    }
+    else
+        return nil;
+    
+}
++(NSDictionary*)request_Editor:(NSString*) request_url params:(NSMutableDictionary*)params
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    
+    
+//    if(![appDelegate.order_customer_id isEqualToString: appDelegate.contact_id]&& appDelegate.order_customer_id!=nil)
+//        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
+//    else
+    
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+//    [params setValue:sourceid forKey:@"sourceid"];
+//    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:request_url parameters:params];
+    if(json!=nil)
+    {
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+    }
+    else
+        return nil;
+}
+//+(NSDictionary*)request_OrderInfo:(NSString*) orderid
+//{
+//    if(![self IsNetworkAvailable])
+//        return nil;
+//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//    if(appDelegate.user!=nil)
+//        [params setValue:appDelegate.user forKey:@"user"];
+//    if(appDelegate.password!=nil)
+//        [params setValue:appDelegate.password forKey:@"password"];
+//    [params setValue:orderid forKey:@"orderid"];
+//    NSData* json=[self get_json:URL_ORDER_INFO parameters:params];
+//    NSError *error=nil;
+//    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+//    return jsobj;
+//}
++(NSDictionary*)request_OrderList:(int ) offset limit :(int)limit keywords :(NSString* ) keywords status:(NSString*) status_code
+{
+    
+
+    
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+     [params setValue:[NSString stringWithFormat:@"%d",offset ] forKey:@"offset"];
+    [params setValue:[NSString stringWithFormat:@"%d",limit ] forKey:@"limit"];
+     [params setValue:keywords forKey:@"keyWord"];
+    [params setValue:status_code forKey:@"orderStatus"];
+    NSData* json=[self get_json:URL_ORDER_LIST parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
+
+
++(NSDictionary*)request_PDFList:(int ) offset limit:(int)limit keywords:(NSString* ) keywords
+{
+    
+
+    
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    //    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
+    //    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
+    //    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
+    //    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
+    //    [params setValue:filter forKey:@"filter"];
+    [params setValue:keywords forKey:@"keyWord"];
+    
+    [params setValue:[NSString stringWithFormat:@"%d",limit]  forKey:@"limit"];
+    [params setValue:[NSString stringWithFormat:@"%d",offset]  forKey:@"offset"];
+    NSData* json=[self get_json:URL_DM_LIST parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+    
+}
++(NSDictionary*)direct_save_TearSheet:(NSString*) request_url name:(NSString*)name delete:(NSString* )ids
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:request_url forKey:@"pdfUrl"];
+    [params setValue:name forKey:@"pdfName"];
+    [params setValue:ids forKey:@"itemIds"];
+    
+    NSData* json=[self get_json:URL_REQUEST_DM parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
++(NSDictionary*)request_TearSheet:(NSString*) request_url
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:request_url forKey:@"pdfUrl"];
+
+    
+    NSData* json=[self get_json:URL_REQUEST_DM parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
++(NSDictionary*)save_TearSheet:(NSString*) path name:(NSString*)name delete:(NSString* )ids
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:path forKey:@"pdfPath"];
+    [params setValue:name forKey:@"pdfName"];
+    [params setValue:ids forKey:@"itemIds"];
+    
+    NSData* json=[self get_json:URL_SAVE_DM parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
++(NSDictionary*)err_log:(NSString*) up_params result:(NSString*)result module:(NSString*) module //device:(NSString*) device
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+
+    [params setValue:up_params forKey:@"upparam"];
+  
+        [params setValue:result forKey:@"result"];
+    [params setValue:module forKey:@"interfac"];
+    
+    [params setValue:[RAUtils base64en:[RAUtils dict2string: [RAUtils device_info]]] forKey:@"device"];
+    
+    
+//     [params setValue:module forKey:@"module"];
+
+  //  [[UIDevice currentDevice]  name];
+
+    
+    NSData* json=[self get_json:URL_ERR_LOG parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
+
+
++(NSDictionary*)request_ContactList:(int) offset limit:(int)limit keywords:(NSString*) keywords type:(NSString*) contact_type adv_search:(NSDictionary*)upparams
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    
+    if(upparams!=nil)
+        params = [upparams mutableCopy];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    
+    if(![appDelegate.order_customer_id isEqualToString: appDelegate.contact_id]&& appDelegate.order_customer_id!=nil)
+        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
+    else
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:[NSString stringWithFormat:@"%d",offset ] forKey:@"offset"];
+    [params setValue:[NSString stringWithFormat:@"%d",limit ] forKey:@"limit"];
+    [params setValue:contact_type forKey:@"contactType"];
+    [params setValue:keywords forKey:@"keyword"];
+    
+    NSString* url=nil;
+    if([contact_type isEqualToString:@"Sales_Order_Ship_To"])
+        url=URL_SHIPTO_LIST;
+    else
+        url=URL_CONTACT_LIST;
+    NSData* json=[self get_json:url parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
++(NSDictionary*)request_OrderDetail:(NSString* ) orderid
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:orderid forKey:@"orderId"];
+//    [params setValue:[NSString stringWithFormat:@"%d",limit ] forKey:@"limit"];
+    NSData* json=[self get_json:URL_ORDER_DETAIL parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
++(NSDictionary*) add_toCart:(NSString* ) item_id count:(int) count
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+    [params setValue:item_id forKey:@"product_id"];
+    [params setValue:[NSString stringWithFormat:@"%d",count]  forKey:@"count"];
+    
+    
+    NSDictionary* customerinfo= appDelegate.customerInfo;
+    
+    NSArray* keys=[customerinfo allKeys];
+    for(int i=0;i<keys.count;i++)
+    {
+        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
+    }
+    
+    NSData* json=[self get_json:URL_ADD_TO_CART parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    
+    
+    
+    int result = [[jsobj valueForKey:@"result"] intValue];
+    
+    if (result==2)
+    {
+    
+    appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+//    appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
+//    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+    
+    [appDelegate update_count_mark];
+    }
+    
+    return jsobj;
+}
+
++(NSDictionary*) add_toCart_byName:(NSString* ) model_name
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+    [params setValue:model_name forKey:@"product_name"];
+    [params setValue:[NSString stringWithFormat:@"%d",-1]  forKey:@"count"];
+    
+    
+    NSDictionary* customerinfo= appDelegate.customerInfo;
+    
+    NSArray* keys=[customerinfo allKeys];
+    for(int i=0;i<keys.count;i++)
+    {
+        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
+    }
+    
+    NSData* json=[self get_json:URL_ADD_TO_CART parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    
+    
+    
+    int result = [[jsobj valueForKey:@"result"] intValue];
+    
+    if (result==2||result==8)
+    {
+        
+        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+        //    appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
+        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+        
+        [appDelegate update_count_mark];
+    }
+    
+    return jsobj;
+}
+
++(NSDictionary*) new_Customer
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+//    if(appDelegate.contact_id!=nil)
+//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+//    if(appDelegate.order_code!=nil)
+//        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+    
+    
+    NSDictionary* customerinfo= appDelegate.customerInfo;
+    
+    NSArray* keys=[customerinfo allKeys];
+    for(int i=0;i<keys.count;i++)
+    {
+        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
+    }
+    
+    NSData* json=[self get_json:URL_CUSTOMER_EDIT parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
++(NSDictionary*) new_Order
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+    
+    
+    NSDictionary* customerinfo= appDelegate.customerInfo;
+    
+    NSArray* keys=[customerinfo allKeys];
+    for(int i=0;i<keys.count;i++)
+    {
+        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
+    }
+    
+    NSData* json=[self get_json:URL_NEW_ORDER parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    int result = [[jsobj valueForKey:@"result"] intValue];
+    
+    if (result==2)
+    {
+        
+        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+        //appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
+        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+        
+        [appDelegate update_count_mark];
+    }
+    
+    [appDelegate SetSo:[jsobj valueForKey:@"soId"]];
+    return jsobj;
+}
++(NSDictionary*) add_toPortfolio:(NSString* ) item_id
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:item_id forKey:@"product_id"];
+    
+    NSData* json=[self get_json:URL_ADD_TO_PORTFOLIO parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    int result = [[jsobj valueForKey:@"result"] intValue];
+    
+    if (result==2)
+    {
+        
+//        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+        //    appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
+            appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+        
+        [appDelegate update_count_mark];
+    }
+    return jsobj;
+}
++(NSDictionary*) add_toWatchList:(NSString* ) item_id
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:item_id forKey:@"product_id"];
+    
+    NSData* json=[self get_json:URL_ADD_TO_WATCHLIST parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    int result = [[jsobj valueForKey:@"result"] intValue];
+    
+    if (result==2)
+    {
+        
+        //appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+            appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
+        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+        
+        [appDelegate update_count_mark];
+    }
+    return jsobj;
+}
++(NSDictionary*) cart_setPrice:(NSString*) cart_id price:(float) price discount:(float) discount
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:cart_id forKey:@"cartitem_id"];
+    
+    
+    [params setValue:[NSString stringWithFormat:@"%f",price] forKey:@"price"];
+    
+    [params setValue:[NSString stringWithFormat:@"%f",discount] forKey:@"discount"];
+    
+    
+    NSData* json=[self get_json:URL_CART_SET_PRICE parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
+
++(NSDictionary*) portfolio_setPrice:(NSString*) watchlist_id price:(float) price discount:(float) discount
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:watchlist_id forKey:@"item_id"];
+    
+    
+    [params setValue:[NSString stringWithFormat:@"%f",price] forKey:@"price"];
+    
+    [params setValue:[NSString stringWithFormat:@"%f",discount] forKey:@"discount"];
+    
+    
+    NSData* json=[self get_json:URL_PORTFOLIO_SET_PRICE parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
++(NSDictionary*) cart_setFree:(NSString*) cart_id isfree:(bool) isfree
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:cart_id forKey:@"cartitem_id"];
+    
+    
+    
+    NSString* free=nil;
+    
+    if(isfree)
+        free=@"true";
+    else
+        free=@"false";
+    
+    [params setValue:free forKey:@"free_giveaway"];
+    
+    
+    NSData* json=[self get_json:URL_CART_SET_PRICE parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
++(NSDictionary*) cart_setQTY:(NSString*) cart_id value:(int) value
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:cart_id forKey:@"cartitem_id"];
+    
+    
+        [params setValue:[NSString stringWithFormat:@"%d",value] forKey:@"inputInt"];
+    
+    
+    
+    
+    NSData* json=[self get_json:URL_CART_INCRESEMENT parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+    
+}
++(NSDictionary*) cart_incresement:(NSString*) cart_id increse:(bool) increse
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:cart_id forKey:@"cartitem_id"];
+    
+    if(increse)
+         [params setValue:@"1" forKey:@"incrementType"];
+    else
+        [params setValue:@"0" forKey:@"incrementType"];
+    
+    
+
+    
+    NSData* json=[self get_json:URL_CART_INCRESEMENT parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
+
++(NSDictionary*)request_Cart
+{
+    
+    NSLog(@"iSalesNetwork::request_Cart");
+
+    
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+//    if(appDelegate.contact_id!=nil)
+//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+    
+    NSData* json=[self get_json:URL_CART parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    int result = [[jsobj valueForKey:@"result"] intValue];
+    
+    if (result==2)
+    {
+        
+                appDelegate.cart_count = [[jsobj valueForKey:@"count"] intValue];
+        //appDelegate.wish_count =[[jsobj valueForKey:@"count"] intValue];
+        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+        
+        [appDelegate update_count_mark];
+    }
+    return jsobj;
+}
++(NSDictionary*)request_Portfolio
+{
+    
+
+
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:[NSString stringWithFormat:@"%d",0 ] forKey:@"offset"];
+    [params setValue:[NSString stringWithFormat:@"%d",9999 ] forKey:@"limit"];
+    NSData* json=[self get_json:URL_PORTFOLIO parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    int result = [[jsobj valueForKey:@"result"] intValue];
+    
+    if (result==2)
+    {
+        
+        //        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+        //appDelegate.wish_count =[[jsobj valueForKey:@"count"] intValue];
+            appDelegate.port_count =[[jsobj valueForKey:@"count"] intValue];
+        
+        [appDelegate update_count_mark];
+    }
+    return jsobj;
+}
++(NSDictionary*)request_WatchList
+{
+
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:[NSString stringWithFormat:@"%d",0 ] forKey:@"offset"];
+    [params setValue:[NSString stringWithFormat:@"%d",9999 ] forKey:@"limit"];
+    NSData* json=[self get_json:URL_WATCHLIST parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    int result = [[jsobj valueForKey:@"result"] intValue];
+    
+    if (result==2)
+    {
+        
+//        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+        appDelegate.wish_count =[[jsobj valueForKey:@"count"] intValue];
+        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+        
+        [appDelegate update_count_mark];
+    }
+    return jsobj;
+}
++(NSDictionary*)request_ItemDetail: (NSString* ) item_id model_name:(NSString*) model_name category_id:(NSString*) category_id use_name :(bool) use_name
+{
+
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+    [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+    [params setValue:appDelegate.password forKey:@"password"];
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+//    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
+//    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
+    if(use_name)
+        [params setValue:model_name  forKey:@"product_name"];
+    else
+    [params setValue:item_id  forKey:@"product_id"];
+    
+    
+    [params setValue:category_id  forKey:@"category"];
+    
+    NSData* json=[self get_json:URL_ITEM_DETAIL parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
+//+(NSDictionary*)category_LoadMore: (NSString*) category customid:(int) customid price_template:(int) price_template sort:(int) sort_by filter:(NSString*) filter keyword:(NSString*) keyword offset:(int)offset
+//{
+//    if(![self IsNetworkAvailable])
+//        return nil;
+//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//    if(appDelegate.user!=nil)
+//        [params setValue:appDelegate.user forKey:@"user"];
+//    if(appDelegate.contact_id!=nil)
+//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+//    if(appDelegate.password!=nil)
+//        [params setValue:appDelegate.password forKey:@"password"];
+//    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
+//    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
+//    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
+//    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
+//    [params setValue:[NSString stringWithFormat:@"%d",offset]  forKey:@"offset"];
+//    [params setValue:filter forKey:@"filter"];
+//    [params setValue:keyword forKey:@"keyword"];
+//    
+//    
+//    NSData* json=[self get_json:URL_CATEGORY_LOADMORE parameters:params];
+//    if(json==nil)
+//        return nil;
+//    NSError *error=nil;
+//    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+//    return jsobj;
+//    
+//}
++(NSDictionary*)Category: (NSString*) category customid:(int) customid price_template:(int) price_template sort:(int) sort_by filter:(NSString*) filter keyword:(NSString*) keyword  offset:(long) offset limit:(long) limit
+{
+
+    
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
+    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
+    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
+    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
+       [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
+       [params setValue:[NSString stringWithFormat:@"%ld",limit]  forKey:@"limit"];
+    [params setValue:[NSString stringWithFormat:@"%ld",offset]  forKey:@"offset"];
+    [params setValue:filter forKey:@"filter"];
+    [params setValue:keyword forKey:@"keyword"];
+    
+    
+    NSData* json=[self get_json:URL_CATEGORY parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+    
+}
+
++(NSDictionary*)Search:(long ) offset limit :(long)limit keywords :(NSString*) keywords
+{
+    
+    
+
+    
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+//    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
+//    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
+//    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
+//    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
+//    [params setValue:filter forKey:@"filter"];
+    [params setValue:keywords forKey:@"keyword"];
+    
+    [params setValue:[NSString stringWithFormat:@"%ld",limit]  forKey:@"limit"];
+    [params setValue:[NSString stringWithFormat:@"%ld",offset]  forKey:@"offset"];
+    NSData* json=[self get_json:URL_SEARCH parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
+
++(NSDictionary*)ItemSearch:(long ) offset limit :(long)limit covertype:(NSString* ) covertype ctgid:(NSString*)ctgid modelname:(NSString*) modelname modeldescrip:(NSString*)modeldescrip alert:(NSString*)alert available:(NSString*)available
+{
+    
+    // for debug
+    //    return [RAUtils error_json:RESULT_NET_ERROR err_msg:nil];
+    //return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    if(appDelegate.order_code!=nil)
+        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+    //    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
+    //    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
+    //    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
+    //    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
+    //    [params setValue:filter forKey:@"filter"];
+    [params setValue:covertype forKey:@"covertype"];
+    [params setValue:ctgid forKey:@"ctgId"];
+    [params setValue:modelname forKey:@"modelName"];
+    [params setValue:modeldescrip forKey:@"modelDescription"];
+    [params setValue:alert forKey:@"alert"];
+    [params setValue:available forKey:@"available"];
+    
+    [params setValue:[NSString stringWithFormat:@"%ld",limit]  forKey:@"limit"];
+    [params setValue:[NSString stringWithFormat:@"%ld",offset]  forKey:@"offset"];
+    NSData* json=[self get_json:URL_ITEM_SEARCH parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
+
+//+(NSDictionary*)Search: (NSString*) category customid:(int) customid price_template:(int) price_template sort:(int) sort_by filter:(NSString*) filter keyword:(NSString*) keyword
+//{
+//    if(![self IsNetworkAvailable])
+//    return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//    if(appDelegate.user!=nil)
+//    [params setValue:appDelegate.user forKey:@"user"];
+//    if(appDelegate.contact_id!=nil)
+//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+//    if(appDelegate.password!=nil)
+//    [params setValue:appDelegate.password forKey:@"password"];
+//    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
+//    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
+//    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
+//    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
+//    [params setValue:filter forKey:@"filter"];
+//    [params setValue:keyword forKey:@"keyword"];
+//    
+//    
+//    NSData* json=[self get_json:URL_SEARCH parameters:params];
+//    if(json==nil)
+//        return nil;
+//    NSError *error=nil;
+//    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+//    return jsobj;
+//}
+
++(NSDictionary*)retrieve_password: (NSString*) user email:(NSString*) email
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    
+    
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//    if(appDelegate.user!=nil)
+//        [params setValue:appDelegate.user forKey:@"user"];
+//    if(appDelegate.contact_id!=nil)
+//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+//    if(appDelegate.password!=nil)
+//        [params setValue:appDelegate.password forKey:@"password"];
+    [params setValue:user  forKey:@"username"];
+    [params setValue:email  forKey:@"email"];
+    
+    NSData* json=[self get_json:URL_RETRIEVE_PASS parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
++(NSDictionary*)load_HomePage:(int) price_template customid:(int) customid
+{
+    
+
+    
+    
+    if(![self IsNetworkAvailable])
+    return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    
+    
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+    [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+    [params setValue:appDelegate.password forKey:@"password"];
+    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
+    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
+    
+    NSData* json=[self get_json:URL_LOAD_HOME parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
+
++(NSDictionary*)logout
+{
+
+    if(![self IsNetworkAvailable])
+    {
+        NSLog(@"NET ERR");
+        
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+        //        return nil;
+    }
+    
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+
+    
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+
+    
+    NSData* json=[self get_json:URL_LOGOUT parameters:params];
+    //if(json==nil)
+    
+    
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    int result = [[jsobj valueForKey:@"result"] intValue];
+    
+    if (result==2)
+    {
+        
+        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
+        appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
+            appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
+        
+        [appDelegate update_count_mark];
+        
+        
+        appDelegate.can_show_price =false;
+        appDelegate.can_see_price =false;
+        appDelegate.can_create_portfolio =false;
+        appDelegate.can_create_order =false;
+        
+        
+        appDelegate.can_cancel_order =false;
+        appDelegate.can_set_cart_price =false;
+        appDelegate.can_delete_order =false;
+        appDelegate.can_submit_order =false;
+        appDelegate.can_set_tearsheet_price =false;
+        
+        
+        appDelegate.ipad_perm =nil ;
+        
+        [appDelegate SetSo:nil];
+        
+    }
+    return jsobj;
+}
++(NSDictionary*)request_Cagegory
+{
+   // NSLog(@"@@@@@@@@@@@@@@@@@@@LOADING CATEGORY MENU");
+    
+
+    if(![self IsNetworkAvailable])
+    {
+        NSLog(@"NET ERR");
+        
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+//        return nil;
+    }
+    NSData* json=[self get_json:URL_REQUEST_CATMENU parameters:nil];
+    //if(json==nil)
+    
+    
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
++(int)Authorize : (NSString*) user password:(NSString*) password{
+    if(![self IsNetworkAvailable])
+        return RESULT_NET_NOTAVAILABLE;
+    //    if(![ApexMobileNetwork IsHostAvailable:URL_UPDATE_AUTH])
+    //        return RESULT_NET_ERROR;
+    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
+    long ver =[defaults integerForKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
+    
+    
+    
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.duid !=nil)
+        [params setValue:appDelegate.duid forKey:@"udid"];
+    [params setValue:@"handset_login" forKey:@"action"];
+    //    [headers setValue:[NSString stringWithFormat:@"%d",dataLength] forKey:@"Content-Length"];
+    
+    [params setValue:user forKey:@"user"];
+    [params setValue:password forKey:@"password"];
+    [params setValue:[NSString stringWithFormat:@"%ld",ver]  forKey:@"auth_ver"];
+#ifdef TEST
+    [params setValue:@"true" forKey:@"is_debug"];
+#else
+    [params setValue:@"false" forKey:@"is_debug"];
+#endif
+    NSData* json=[self get_json:URL_UPDATE_AUTH parameters:params];
+    if(json==nil)
+        return RESULT_NET_ERROR;
+    
+
+    int ret = [self parse_authinfo:json user:user password:password];
+    DebugLog(@"parse_authinfo return %d ",ret);
+    
+    
+    return ret;
+    
+    
+}
++(NSDictionary*)update_customer_img: (NSString*) contactid img_url:(NSString*) url
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    
+    
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    //    if(appDelegate.contact_id!=nil)
+    
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    [params setValue:contactid forKey:@"contactId"];
+    [params setValue:url forKey:@"business_card"];
+    NSData* json=[self get_json:URL_UPDATE_CUSTOMER_BCARD parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
+
++(NSDictionary*)request_CustomerInfo:(NSString* ) contactid
+{
+    if(![self IsNetworkAvailable])
+         return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    
+    
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+//    if(appDelegate.contact_id!=nil)
+    
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+     [params setValue:contactid forKey:@"contactId"];
+    NSData* json=[self get_json:URL_CUSTOMER_INFO parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+    
+}
++(int)parse_authinfo : (NSData *) json user:(NSString*) user password:(NSString*) password
+{
+    DebugLog(@"parse_authinfo");
+    NSError *error=nil;
+    
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    if(jsobj)
+    {
+        
+        UIApplication * app = [UIApplication sharedApplication];
+        AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+        int result = [[jsobj valueForKey:@"result"] intValue];
+        
+        if (result<0)
+            return result;
+        if(result!=AP_USER_AUTH&& result!=9)
+        {
+            
+            
+            DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
+            [appDelegate Logout];
+            return RESULT_FALSE;
+            
+        }
+        NSDictionary* objheader = [jsobj objectForKey:@"header"];
+        
+        NSString* required_ver=[jsobj objectForKey:@"min_ver"] ;
+        user=[objheader objectForKey:@"username"] ;
+        DebugLog(@"required_ver=%@ ",required_ver);
+//        NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];
+//        NSString* versionNum =[infoDict valueForKey:@"CFBundleVersion"];
+//        versionNum = [NSString stringWithFormat:@"A%@",versionNum];
+        int ibadge = [[objheader valueForKey:@"badge"] intValue];
+        
+        //        if([ibadge isEqual:[NSNull null]])
+        //            strbadge=@"0";
+        //        if(ibadge==nil)
+        //            ibadge=@"0";
+        //        if([strbadge isEqualToString:@"null"])
+        //            strbadge=@"0";
+        app.applicationIconBadgeNumber = ibadge;//[strbadge intValue];
+        
+      //  BOOL bigger = [appDelegate.build compare:required_ver] ;
+        if([appDelegate.build intValue]<[required_ver intValue])
+            return RESULT_VER_LOW;
+        //        appDelegate.sessionid = [objheader valueForKey:@"sessionid"];
+        appDelegate.user = user;
+        appDelegate.password = password;
+        appDelegate.user_type = [[objheader valueForKey:@"user_type"] intValue];
+        appDelegate.user_icon =[objheader valueForKey:@"user_img"] ;
+        appDelegate.bLogin = true;
+
+        
+        
+        
+        if(appDelegate.user_type==USER_ROLE_CUSTOMER)
+        {
+            appDelegate.customerInfo = [objheader objectForKeyedSubscript:@"customerInfo"];
+            appDelegate.contact_id = [objheader valueForKey:@"customer_cid"];
+            appDelegate.order_code =[objheader valueForKey:@"orderCode"];
+        }
+        NSString* mode =[jsobj valueForKey:@"mode"] ;
+        [appDelegate SetMode:mode];
+        
+        
+        appDelegate.cart_count = [[objheader valueForKey:@"cart_count"] intValue];
+        appDelegate.wish_count =[[objheader valueForKey:@"wish_count"] intValue];
+        appDelegate.port_count =[[objheader valueForKey:@"portfolio_count"] intValue];
+        
+        [appDelegate update_count_mark];
+        
+        
+        
+         appDelegate.can_show_price =[[objheader valueForKey:@"can_show_price"] boolValue];
+         appDelegate.can_see_price =[[objheader valueForKey:@"can_see_price"] boolValue];
+         appDelegate.can_create_portfolio =[[objheader valueForKey:@"can_create_portfolio"] boolValue];
+         appDelegate.can_create_order =[[objheader valueForKey:@"can_create_order"] boolValue];
+        
+        appDelegate.can_cancel_order =[[objheader valueForKey:@"can_cancel_order"] boolValue];
+        appDelegate.can_set_cart_price =[[objheader valueForKey:@"can_set_cart_price"] boolValue];
+        appDelegate.can_delete_order =[[objheader valueForKey:@"can_delete_order"] boolValue];
+        appDelegate.can_submit_order =[[objheader valueForKey:@"can_submit_order"] boolValue];
+        appDelegate.can_set_tearsheet_price =[[objheader valueForKey:@"can_set_tearsheet_price"] boolValue];
+        
+        
+        
+
+        
+        appDelegate.ipad_perm =[objheader valueForKey:@"ipad_perm"] ;
+        
+
+        //        DebugLog(@"sessionid=%@ ",appDelegate.sessionid);
+        //        if ([[objheader valueForKey:@"update"] boolValue]==false)
+        //        {
+        //            // no update on the server;
+        //            return RESULT_TRUE;
+        //        }
+        //        int Auth_InfoVer = [[objheader valueForKey:@"ver"] intValue];
+        //        NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
+        //        [defaults removeObjectForKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
+        //       [defaults setInteger:Auth_InfoVer forKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
+        //        [defaults synchronize];
+        //
+        //        NSDictionary* objfuncs = [jsobj objectForKey:@"functions"];
+        //        NSArray* keys= [objfuncs allKeys];
+        
+        
+        /*
+         
+         db.setTransactionSuccessful();
+         db.endTransaction();
+         */
+        return RESULT_TRUE;
+        
+    }
+    //    NSDictionary *weatherInfo = [jsobj objectForKey:@"weatherinfo"];
+    //    txtView.text = [NSString stringWithFormat:@"今天是 %@  %@  %@  的天气状况是:%@  %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];
+    //      DebugLog(@"weatherInfo字典里面的内容为--》%@", weatherDic );
+    
+    
+    
+    return RESULT_USERAUTH_ERROR;
+}
+
++(bool) IsNetworkAvailable
+{
+    
+    if (([Reachability reachabilityForInternetConnection].currentReachabilityStatus == NotReachable) &&
+        ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == NotReachable))
+        return false;
+    return true;
+}
+//+(NSString *)flattenHTML:(NSString *)html trimWhiteSpace:(BOOL)trim
+//{
+//    NSScanner *theScanner = [NSScanner scannerWithString:html];
+//    NSString *text = nil;
+//    
+//    while ([theScanner isAtEnd] == NO) {
+//        // find start of tag
+//        [theScanner scanUpToString:@"<" intoString:NULL] ;
+//        // find end of tag
+//        [theScanner scanUpToString:@">" intoString:&text] ;
+//        // replace the found tag with a space
+//        //(you can filter multi-spaces out later if you wish)
+//        html = [html stringByReplacingOccurrencesOfString:
+//                [ NSString stringWithFormat:@"%@>", text]
+//                                               withString:@""];
+//    }
+//    
+//    return trim ? [html stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] : html;
+//}
+//
+//+(NSString *)flattenURL:(NSString *)url trimWhiteSpace:(BOOL)trim
+//{
+//    NSScanner *theScanner = [NSScanner scannerWithString:url];
+//    NSString *text = nil;
+//    
+//    while ([theScanner isAtEnd] == NO) {
+//        // find start of tag
+//        [theScanner scanUpToString:@"/" intoString:NULL] ;
+//        // find end of tag
+//        [theScanner scanUpToString:@"/" intoString:&text] ;
+//        // replace the found tag with a space
+//        //(you can filter multi-spaces out later if you wish)
+//        url = [url stringByReplacingOccurrencesOfString:
+//                [ NSString stringWithFormat:@"%@", text]
+//                                               withString:@""];
+//    }
+//    
+//    return trim ? [url stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] : url;
+//}
+@end