Sfoglia il codice sorgente

160817

Change multiple table definition 
Modify offline_createorder func
Ray Zhang 9 anni fa
parent
commit
8bc0242a42

BIN
RedAnt ERP Mobile/RedAnt ERP Mobile.xcworkspace/xcuserdata/Ray.xcuserdatad/UserInterfaceState.xcuserstate


+ 173 - 45
RedAnt ERP Mobile/RedAnt ERP Mobile.xcworkspace/xcuserdata/Ray.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -132,12 +132,12 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/Functions/offline/OLDataProvider.m"
             filePath = "common/Functions/offline/OLDataProvider.m"
-            timestampString = "493012729.434586"
+            timestampString = "493030049.784214"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "3965"
-            endingLineNumber = "3965"
-            landmarkName = "+offline_category:"
+            startingLineNumber = "4070"
+            endingLineNumber = "4070"
+            landmarkName = "+offline_itemsearch:"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
@@ -228,11 +228,11 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/Functions/offline/OLDataProvider.m"
             filePath = "common/Functions/offline/OLDataProvider.m"
-            timestampString = "493012729.434586"
+            timestampString = "493030049.784214"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1268"
-            endingLineNumber = "1268"
+            startingLineNumber = "1302"
+            endingLineNumber = "1302"
             landmarkName = "+offline_createorder:"
             landmarkName = "+offline_createorder:"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
@@ -244,11 +244,11 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/Functions/offline/OLDataProvider.m"
             filePath = "common/Functions/offline/OLDataProvider.m"
-            timestampString = "493012729.434586"
+            timestampString = "493030049.784214"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1276"
-            endingLineNumber = "1276"
+            startingLineNumber = "1310"
+            endingLineNumber = "1310"
             landmarkName = "+offline_orderlist:"
             landmarkName = "+offline_orderlist:"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
@@ -260,12 +260,12 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/Functions/offline/OLDataProvider.m"
             filePath = "common/Functions/offline/OLDataProvider.m"
-            timestampString = "493012729.434586"
+            timestampString = "493030049.784214"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "2880"
-            endingLineNumber = "2880"
-            landmarkName = "+mutableDictionary:inDictionary:"
+            startingLineNumber = "2985"
+            endingLineNumber = "2985"
+            landmarkName = "+offline_contactlist:"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
@@ -276,11 +276,11 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/Functions/offline/OLDataProvider.m"
             filePath = "common/Functions/offline/OLDataProvider.m"
-            timestampString = "493012729.434586"
+            timestampString = "493030049.784214"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "3069"
-            endingLineNumber = "3069"
+            startingLineNumber = "3174"
+            endingLineNumber = "3174"
             landmarkName = "+offline_contactlist:"
             landmarkName = "+offline_contactlist:"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
@@ -292,12 +292,12 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/Functions/offline/OLDataProvider.m"
             filePath = "common/Functions/offline/OLDataProvider.m"
-            timestampString = "493012729.434586"
+            timestampString = "493030049.784214"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "3181"
-            endingLineNumber = "3181"
-            landmarkName = "+offline_contactlist:"
+            startingLineNumber = "3286"
+            endingLineNumber = "3286"
+            landmarkName = "+offline_createContact:"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
@@ -308,12 +308,12 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/Functions/offline/OLDataProvider.m"
             filePath = "common/Functions/offline/OLDataProvider.m"
-            timestampString = "493012729.434586"
+            timestampString = "493030049.784214"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "3170"
-            endingLineNumber = "3170"
-            landmarkName = "+offline_contactlist:"
+            startingLineNumber = "3275"
+            endingLineNumber = "3275"
+            landmarkName = "+offline_createContact:"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
@@ -324,12 +324,12 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/Functions/offline/OLDataProvider.m"
             filePath = "common/Functions/offline/OLDataProvider.m"
-            timestampString = "493012729.434586"
+            timestampString = "493030049.784214"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "3273"
-            endingLineNumber = "3273"
-            landmarkName = "+offline_contactlist:"
+            startingLineNumber = "3378"
+            endingLineNumber = "3378"
+            landmarkName = "+offline_saveContact:update:"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
@@ -340,12 +340,12 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/Functions/offline/OLDataProvider.m"
             filePath = "common/Functions/offline/OLDataProvider.m"
-            timestampString = "493012729.434586"
+            timestampString = "493030049.784214"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "3171"
-            endingLineNumber = "3171"
-            landmarkName = "+offline_contactlist:"
+            startingLineNumber = "3276"
+            endingLineNumber = "3276"
+            landmarkName = "+offline_createContact:"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
@@ -372,12 +372,12 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/Functions/offline/OLDataProvider.m"
             filePath = "common/Functions/offline/OLDataProvider.m"
-            timestampString = "493012729.434586"
+            timestampString = "493030049.784214"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1376"
-            endingLineNumber = "1376"
-            landmarkName = "+offline_orderdetail:"
+            startingLineNumber = "1458"
+            endingLineNumber = "1458"
+            landmarkName = "+offline_editorder:"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
@@ -388,19 +388,19 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/Functions/offline/OLDataProvider.m"
             filePath = "common/Functions/offline/OLDataProvider.m"
-            timestampString = "493012729.434586"
+            timestampString = "493030049.784214"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1472"
-            endingLineNumber = "1472"
-            landmarkName = "+offline_orderdetail:"
+            startingLineNumber = "1554"
+            endingLineNumber = "1554"
+            landmarkName = "+offline_login:"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
       <BreakpointProxy
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
          <BreakpointContent
-            shouldBeEnabled = "Yes"
+            shouldBeEnabled = "No"
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/Functions/order/OrderListViewController.m"
             filePath = "common/Functions/order/OrderListViewController.m"
@@ -420,14 +420,142 @@
             ignoreCount = "0"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             continueAfterRunningActions = "No"
             filePath = "common/data_provider/iSalesNetwork.m"
             filePath = "common/data_provider/iSalesNetwork.m"
-            timestampString = "493012063.129089"
+            timestampString = "493024853.93927"
             startingColumnNumber = "9223372036854775807"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "2977"
-            endingLineNumber = "2977"
+            startingLineNumber = "2979"
+            endingLineNumber = "2979"
             landmarkName = "+parse_authinfo:user:password:"
             landmarkName = "+parse_authinfo:user:password:"
             landmarkType = "5">
             landmarkType = "5">
          </BreakpointContent>
          </BreakpointContent>
       </BreakpointProxy>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "common/Functions/order/OrderListViewController.m"
+            timestampString = "493020365.935201"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "140"
+            endingLineNumber = "140"
+            landmarkName = "-loadfilter"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "common/Functions/offline/OLDataProvider.m"
+            timestampString = "493030049.784214"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "1676"
+            endingLineNumber = "1676"
+            landmarkName = "+offline_contactinfo:"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "common/Functions/offline/OLDataProvider.m"
+            timestampString = "493030049.784214"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "1452"
+            endingLineNumber = "1452"
+            landmarkName = "+offline_editorder:"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "common/Functions/offline/OLDataProvider.m"
+            timestampString = "493030049.784214"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "1695"
+            endingLineNumber = "1695"
+            landmarkName = "+offline_contactinfo:"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "common/Functions/order/OrderDetailViewController.m"
+            timestampString = "493025844.20872"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "637"
+            endingLineNumber = "637"
+            landmarkName = "-onOpenOrderClick:"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "iSales-NPD/AppDelegate.m"
+            timestampString = "493029888.736386"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "832"
+            endingLineNumber = "832"
+            landmarkName = "-check_offline:useInternalAddress:"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "iSales-NPD/AppDelegate.m"
+            timestampString = "493029892.678591"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "768"
+            endingLineNumber = "768"
+            landmarkName = "-check_offline:useInternalAddress:"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "common/Functions/offline/OLDataProvider.m"
+            timestampString = "493030021.032897"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "1278"
+            endingLineNumber = "1278"
+            landmarkName = "+offline_createorder:"
+            landmarkType = "5">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
    </Breakpoints>
 </Bucket>
 </Bucket>

+ 35 - 1
RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.m

@@ -1260,11 +1260,45 @@
     
     
     NSString* sql_neworder=[NSString stringWithFormat:@"insert into offline_order(so_id,status,customer_cid,customer_contact,customer_email,customer_fax,customer_phone,sales_rep,create_by,customer_contact) values('OFFLINE'||hex(randomblob(16)),0,'%@','%@','%@','%@','%@','%@','%@','%@')",customer_cid,customer_contact,customer_email,customer_fax,customer_phone,customer_sales_rep,create_by ,contact_name];
     NSString* sql_neworder=[NSString stringWithFormat:@"insert into offline_order(so_id,status,customer_cid,customer_contact,customer_email,customer_fax,customer_phone,sales_rep,create_by,customer_contact) values('OFFLINE'||hex(randomblob(16)),0,'%@','%@','%@','%@','%@','%@','%@','%@')",customer_cid,customer_contact,customer_email,customer_fax,customer_phone,customer_sales_rep,create_by ,contact_name];
     
     
-    int result =[iSalesDB execSql:sql_neworder ];
+       sqlite3 *db = [iSalesDB get_db];
+    
+    int result =[iSalesDB execSql:sql_neworder db:db];
     [ret setValue:[NSNumber numberWithInt:result] forKey:@"result"];
     [ret setValue:[NSNumber numberWithInt:result] forKey:@"result"];
     
     
+    
+    
     //insert into offline_order(so_id,status,contact_id,sales_rep,create_by,customer_contact) select 'OFFLINE'||hex(randomblob(16)),-1,contact_id,sales_rep,company_name from offline_contact where contact_id='99FURO0002'
     //insert into offline_order(so_id,status,contact_id,sales_rep,create_by,customer_contact) select 'OFFLINE'||hex(randomblob(16)),-1,contact_id,sales_rep,company_name from offline_contact where contact_id='99FURO0002'
     //soId
     //soId
+    int _id=[iSalesDB get_insertid:@"offline_order" db:db];
+    
+    
+ 
+    
+    
+    NSString *sqlQuery = [NSString stringWithFormat:@"select so_id from offline_order where _id=%d ",_id];
+    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 *soId = (char*)sqlite3_column_text(statement, 0);
+            if(soId==nil)
+                soId="";
+            NSString *nssoId = [[NSString alloc]initWithUTF8String:soId];
+            [ret setValue:nssoId forKey:@"soId"];
+            
+        }
+        sqlite3_finalize(statement);
+    }
+    
+    [iSalesDB close_db:db];
+    
     return [RAUtils dict2data:ret];
     return [RAUtils dict2data:ret];
     
     
 }
 }

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

@@ -29,6 +29,9 @@ typedef void(^queryBlock)(sqlite3_stmt *stmt,NSMutableDictionary *container,long
 
 
 + (int) get_recordid:(NSString*) tablename where:(NSString*) whereclause;
 + (int) get_recordid:(NSString*) tablename where:(NSString*) whereclause;
 + (int) get_recordid:(NSString*) tablename where:(NSString*) whereclause order:(NSString*) orderby;
 + (int) get_recordid:(NSString*) tablename where:(NSString*) whereclause order:(NSString*) orderby;
++ (int) get_insertid:(NSString*) tablename db:(sqlite3*)db;
+
+
 
 
 + (void) save_pdf: (NSString*) temp_path filename:(NSString*) filename;
 + (void) save_pdf: (NSString*) temp_path filename:(NSString*) filename;
 
 

+ 37 - 5
RedAnt ERP Mobile/common/data_provider/iSalesDB.m

@@ -635,7 +635,9 @@ void decryptfield (sqlite3_context *context, int argc, sqlite3_value **argv) {
     
     
    // [self execSql:@"PRAGMA journal_mode = WAL;" db:db];
    // [self execSql:@"PRAGMA journal_mode = WAL;" db:db];
     
     
-    NSString* create_model=@"CREATE TABLE IF NOT EXISTS model ( _id INTEGER, name VARCHAR(20,0), description VARCHAR(20,0), product_id INTEGER, color VARCHAR(20,0), legcolor VARCHAR(20,0), availability INTEGER, incoming_stock INTEGER, ETA DATE, demension VARCHAR(20,0), seat_height VARCHAR(20,0), material VARCHAR(20,0), box_dim VARCHAR(20,0), volume VARCHAR(20,0), weight VARCHAR(20,0), model_set VARCHAR(20,0), load_ability VARCHAR(20,0), default_category VARCHAR(20,0), category VARCHAR(100,0), fabric_content VARCHAR(20,0), assembling VARCHAR(20,0), made_in VARCHAR(20,0), special_remarks VARCHAR(20,0), stockUom integer, fashion VARCHAR(20,0), isnew integer, property_field VARCHAR(20,0), property_display VARCHAR(20,0), selector_field VARCHAR(20,0), selector_display VARCHAR(20,0), product_group VARCHAR(20,0), packaging VARCHAR(20,0), closeout integer ,best_seller integer,bundle_item text,alert VARCHAR(20,0),is_active integer,PRIMARY KEY(_id));";
+    NSString* create_model=@"CREATE TABLE IF NOT EXISTS model ( _id INTEGER, name VARCHAR(20,0), description VARCHAR(20,0), product_id INTEGER, color VARCHAR(20,0), legcolor VARCHAR(20,0), availability INTEGER, incoming_stock INTEGER, ETA DATE, demension VARCHAR(20,0), seat_height VARCHAR(20,0), material VARCHAR(20,0), box_dim VARCHAR(20,0), volume VARCHAR(20,0), weight VARCHAR(20,0), model_set VARCHAR(20,0), load_ability VARCHAR(20,0), default_category VARCHAR(20,0), category VARCHAR(100,0), fabric_content VARCHAR(20,0), assembling VARCHAR(20,0), made_in VARCHAR(20,0), special_remarks VARCHAR(20,0), stockUom integer, fashion VARCHAR(20,0), isnew integer, property_field VARCHAR(20,0), property_display VARCHAR(20,0), selector_field VARCHAR(20,0), selector_display VARCHAR(20,0), product_group VARCHAR(20,0), packaging VARCHAR(20,0), closeout integer ,best_seller integer,bundle_item text,alert VARCHAR(20,0),has_bundle integer,cuft double,weight1 double, carton integer,is_active integer,PRIMARY KEY(_id));";
+    
+    NSString* create_bundle=@"CREATE TABLE IF NOT EXISTS bundle ( _id INTEGER PRIMARY KEY, name text,  description text,product_id integer,unit_price double,qty integer,cuft double,weight double,carton integer, serial_no VARCHAR(40,0));";
     
     
     NSString* create_price=@"CREATE TABLE IF NOT EXISTS price ( _id INTEGER PRIMARY KEY, name text,  type integer,  order_by integer);";
     NSString* create_price=@"CREATE TABLE IF NOT EXISTS price ( _id INTEGER PRIMARY KEY, name text,  type integer,  order_by integer);";
     
     
@@ -646,18 +648,21 @@ void decryptfield (sqlite3_context *context, int argc, sqlite3_value **argv) {
     NSString* create_image=@"CREATE TABLE IF NOT EXISTS model_image ( _id INTEGER PRIMARY KEY, name VARCHAR(20), url text, type integer, product_id INTEGER, default_img integer,picture_id integer);";
     NSString* create_image=@"CREATE TABLE IF NOT EXISTS model_image ( _id INTEGER PRIMARY KEY, name VARCHAR(20), url text, type integer, product_id INTEGER, default_img integer,picture_id integer);";
     
     
     NSString* create_model_price=@"CREATE TABLE IF NOT EXISTS model_price ( _id INTEGER PRIMARY KEY, product_id INTEGER,price text , type integer, price_name text, expire_datetime datetime);";
     NSString* create_model_price=@"CREATE TABLE IF NOT EXISTS model_price ( _id INTEGER PRIMARY KEY, product_id INTEGER,price text , type integer, price_name text, expire_datetime datetime);";
+    
+    //NSString* create_model_ext=@"CREATE TABLE IF NOT EXISTS model_ext ( _id INTEGER PRIMARY KEY, product_id INTEGER,carton integer, cuft double, weight double;";
+    
     NSString* create_category=@"CREATE TABLE IF NOT EXISTS category ( _id INTEGER PRIMARY KEY, code VARCHAR(20),name VARCHAR(20));";
     NSString* create_category=@"CREATE TABLE IF NOT EXISTS category ( _id INTEGER PRIMARY KEY, code VARCHAR(20),name VARCHAR(20));";
     NSString* create_offline_setting=@"CREATE TABLE IF NOT EXISTS offline_setting ( _id INTEGER PRIMARY KEY, name VARCHAR(20),value VARCHAR(40));";
     NSString* create_offline_setting=@"CREATE TABLE IF NOT EXISTS offline_setting ( _id INTEGER PRIMARY KEY, name VARCHAR(20),value VARCHAR(40));";
     
     
     
     
     NSString* create_offline_login=@"CREATE TABLE IF NOT EXISTS offline_login ( _id INTEGER PRIMARY KEY, username VARCHAR(40),password VARCHAR(40), can_show_price integer ,can_see_price integer,contact_id VARCHAR(20),user_type integer,can_cancel_order integer,can_set_cart_price integer,can_create_portfolio integer, can_delete_order integer,can_submit_order integer,can_set_tearsheet_price integer,can_create_order integer, can_update_contact_info integer, mode VARCHAR(20), default_price text, price text, user_id integer,sales_code text);";
     NSString* create_offline_login=@"CREATE TABLE IF NOT EXISTS offline_login ( _id INTEGER PRIMARY KEY, username VARCHAR(40),password VARCHAR(40), can_show_price integer ,can_see_price integer,contact_id VARCHAR(20),user_type integer,can_cancel_order integer,can_set_cart_price integer,can_create_portfolio integer, can_delete_order integer,can_submit_order integer,can_set_tearsheet_price integer,can_create_order integer, can_update_contact_info integer, mode VARCHAR(20), default_price text, price text, user_id integer,sales_code text);";
     
     
-    NSString* create_offline_order=@"CREATE TABLE IF NOT EXISTS offline_order ( _id INTEGER PRIMARY KEY,so_id text, order_id text ,status integer, general_notes TEXT ,internal_notes text,signature  text,user_type integer,contact_id text,sales_rep TEXT,create_by TEXT, total_price float, erpOrderStatus integer, logist text, lift_gate integer, logistic_note text, paymentType text, credit_card_first_name text, credit_card_last_name text, credit_card_address1 text, credit_card_address2 text, credit_card_zipcode text, credit_card_type text, credit_card_number text, credit_card_security_code text, credit_card_expiration text,credit_card_city text, credit_card_state text,customer_cid text,customer_contact text,customer_email text,customer_phone text,customer_fax text,receive_cid text,receive_name text,receive_ext text,receive_contact text, receive_phone text,receive_fax text,receive_email text,sender_cid text,sender_name text,sender_ext text,sender_contact text, sender_phone text,sender_fax text,sender_email text,shipping_billto_cid text,shipping_billto_name text,shipping_billto_ext text,shipping_billto_contact text, shipping_billto_phone text,shipping_billto_fax text,shipping_billto_email text,billing_cid text,billing_name text,billing_ext text,billing_contact text, billing_phone text,billing_fax text,billing_email text,returnto_cid text,returnto_name text,returnto_ext text,returnto_contact text, returnto_phone text,returnto_fax text,returnto_email text, must_call int,poNumber text,comments text,comments_ext text,paymentsAndCredits float,shipping float,lift_gate_value float,handling_fee_value float,totalPrice float,TotalCuft float,TotalWeight float,TotalCarton float,sign_picpath text,sync_data text,create_time TIMESTAMP default (datetime('now', 'localtime')));";
+    NSString* create_offline_order=@"CREATE TABLE IF NOT EXISTS offline_order ( _id INTEGER PRIMARY KEY,so_id text, order_id text ,status integer, general_notes TEXT ,internal_notes text,signature  text,user_type integer,contact_id text,sales_rep TEXT,create_by TEXT, total_price float, erpOrderStatus integer, logist text, lift_gate integer, logistic_note text, paymentType text, credit_card_first_name text, credit_card_last_name text, credit_card_address1 text, credit_card_address2 text, credit_card_zipcode text, credit_card_type text, credit_card_number text, credit_card_security_code text, credit_card_expiration text,credit_card_city text, credit_card_state text,customer_cid text,customer_contact text,customer_email text,customer_phone text,customer_fax text,receive_cid text,receive_name text,receive_ext text,receive_contact text, receive_phone text,receive_fax text,receive_email text,sender_cid text,sender_name text,sender_ext text,sender_contact text, sender_phone text,sender_fax text,sender_email text,shipping_billto_cid text,shipping_billto_name text,shipping_billto_ext text,shipping_billto_contact text, shipping_billto_phone text,shipping_billto_fax text,shipping_billto_email text,billing_cid text,billing_name text,billing_ext text,billing_contact text, billing_phone text,billing_fax text,billing_email text,returnto_cid text,returnto_name text,returnto_ext text,returnto_contact text, returnto_phone text,returnto_fax text,returnto_email text, must_call int,poNumber text,comments text,comments_ext text,paymentsAndCredits float,shipping float,lift_gate_value float,handling_fee_value float,totalPrice float,TotalCuft float,TotalWeight float,TotalCarton float,sign_picpath text,type integer,sync_data text,create_time TIMESTAMP default (datetime('now', 'localtime')));";
     
     
     
     
     
     
     
     
-    NSString* create_offline_cart=@"CREATE TABLE IF NOT EXISTS offline_cart ( _id INTEGER PRIMARY KEY, product_id INTEGER,price float , discount float , so_no VARCHAR(40), item_count integer,line_note text,bundle_item integer);";
+    NSString* create_offline_cart=@"CREATE TABLE IF NOT EXISTS offline_cart ( _id INTEGER PRIMARY KEY, product_id INTEGER,price float , discount float , so_no VARCHAR(40), item_count integer,line_note text,bundle_item text,type integer);";
     NSString* create_offline_wish=@"CREATE TABLE IF NOT EXISTS offline_wishlist ( _id INTEGER PRIMARY KEY, product_id INTEGER);";
     NSString* create_offline_wish=@"CREATE TABLE IF NOT EXISTS offline_wishlist ( _id INTEGER PRIMARY KEY, product_id INTEGER);";
     
     
     
     
@@ -707,6 +712,7 @@ void decryptfield (sqlite3_context *context, int argc, sqlite3_value **argv) {
         [self execSql:create_offline_state db:db];
         [self execSql:create_offline_state db:db];
         [self execSql:create_offline_zipcode db:db];
         [self execSql:create_offline_zipcode db:db];
         [self execSql:create_offline_salesrep db:db];
         [self execSql:create_offline_salesrep db:db];
+        [self execSql:create_bundle db:db];
         
         
         
         
     }
     }
@@ -898,8 +904,34 @@ void decryptfield (sqlite3_context *context, int argc, sqlite3_value **argv) {
     return ret;
     return ret;
     
     
 }
 }
-
-
++ (int) get_insertid:(NSString*) tablename db:(sqlite3*)db
+{
+ //   sqlite3 *db = [self get_db];
+    
+    int ret = -1;
+    NSString *sqlQuery = [NSString stringWithFormat:@"select last_insert_rowid() from %@ ",tablename];
+    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);
+    }
+ //   [iSalesDB close_db:db];
+    return ret;
+    
+}
 + (int) get_recordid:(sqlite3*)db table:(NSString*) tablename where:(NSString*) whereclause
 + (int) get_recordid:(sqlite3*)db table:(NSString*) tablename where:(NSString*) whereclause
 {
 {
     //    [iSalesDB execSql: [NSString stringWithFormat: @"update fields_info set abandon = 1 where user ='%@'",user] db:db];
     //    [iSalesDB execSql: [NSString stringWithFormat: @"update fields_info set abandon = 1 where user ='%@'",user] db:db];

+ 215 - 213
RedAnt ERP Mobile/common/data_provider/iSalesNetwork.m

@@ -126,222 +126,222 @@
     
     
 repeat:
 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"])
+        
+        //    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++)
         {
         {
-            //添加分界线,换行
-            [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]);
+            //得到当前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 = nil;
-    
-    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]);
-        
+        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"];
         
         
-        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
+        //声明结束符:--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]];
         
         
-        //     NSString * moreinfo = error.description ;
+        //设置HTTPHeader中Content-Type的值
+        NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];
+        //设置HTTPHeader
+        [request setValue:content forHTTPHeaderField:@"Content-Type"];
         
         
-        NSString* err_msg = [error localizedDescription];
+        // 关闭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"];
         
         
         
         
-        //-----------------retry 3 times for error code -1005------------------------
-        if(error.code==-1005&&retry<3)
-        {
-            retry++;
-            goto repeat;
-            
-        }
-        //-----------------end retry 3 times for error code -1005------------------------
+        NSHTTPURLResponse* urlResponse = nil;
         
         
-        NSDictionary* error_json = [RAUtils error_dict:error];
-        [ret setObject:error_json forKey:@"err_obj"];
-        NSString* resp_msg= nil;
+        NSError *error = 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 *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
         
         
         
         
-        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 code:RESULT_NET_ERROR];
-        }
-        return jsonData;
+        DebugLog(@"url: %@",url);
         
         
-    }
-    else
-    {
-        NSMutableString *str = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
-        
-        DebugLog(@"data string: %@",str);
-        NSError *error1 = nil;
-        
-        NSMutableDictionary* jsobj = [[NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:&error1] mutableCopy];
+        DebugLog(@"response: %@",[NSHTTPURLResponse localizedStringForStatusCode:urlResponse.statusCode]);
         
         
-        if(jsobj==nil)// 服务器返回不是json
-        {
+        if (responseData==nil) {
             
             
-            jsobj=[[NSMutableDictionary alloc] init];
-            [jsobj setValue:@"1" forKey:@"result"];
+            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 code:RESULT_NET_ERROR];
+            }
+            return jsonData;
             
             
         }
         }
-        
-        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]&&![url isEqualToString:URL_DOWNLOAD_OFFLINE]/*&&result!=-3*/&&result!=2)
+        else
         {
         {
-            [iSalesNetwork err_log:[RAUtils base64en:[RAUtils dict2string:params]] result:[RAUtils base64en:str] module:url code:result];
+            NSMutableString *str = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
+            
+            DebugLog(@"data string: %@",str);
+            NSError *error1 = nil;
+            
+            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]&&![url isEqualToString:URL_DOWNLOAD_OFFLINE]/*&&result!=-3*/&&result!=2)
+            {
+                [iSalesNetwork err_log:[RAUtils base64en:[RAUtils dict2string:params]] result:[RAUtils base64en:str] module:url code:result];
+            }
+            NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsobj
+                                                               options:0
+                                                                 error:nil];
+            return jsonData;
+            
         }
         }
-        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsobj
-                                                           options:0
-                                                             error:nil];
-        return jsonData;
-        
+        return responseData;
     }
     }
-    return responseData;
-}
 }
 }
 
 
 
 
@@ -788,18 +788,20 @@ repeat:
     [params setValue:order_code forKey:@"orderCode"];
     [params setValue:order_code forKey:@"orderCode"];
     //    [params setValue:sourceid forKey:@"sourceid"];
     //    [params setValue:sourceid forKey:@"sourceid"];
     //    [params setValue:editor forKey:@"editor"];
     //    [params setValue:editor forKey:@"editor"];
+    
+    NSData* json=nil;
     if(appDelegate.offline_mode)
     if(appDelegate.offline_mode)
     {
     {
-        return [OLDataProvider offline_notimpl];
+        json=[OLDataProvider offline_editorder:params];
+        
     }
     }
-    if(appDelegate.offline_mode)
+    else
     {
     {
-        return [OLDataProvider offline_notimpl];
+        if(![self IsNetworkAvailable])
+            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+        
+        json=[self get_json:URL_OPEN_ORDER parameters:params];
     }
     }
-    if(![self IsNetworkAvailable])
-        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
-    
-    NSData* json=[self get_json:URL_OPEN_ORDER parameters:params];
     if(json!=nil)
     if(json!=nil)
     {
     {
         NSError *error=nil;
         NSError *error=nil;
@@ -1100,7 +1102,7 @@ repeat:
         
         
         json=[self get_json:URL_CUSTOMER_UPDATE parameters:params];
         json=[self get_json:URL_CUSTOMER_UPDATE parameters:params];
     }
     }
-
+    
     if(json!=nil)
     if(json!=nil)
     {
     {
         NSError *error=nil;
         NSError *error=nil;
@@ -1155,7 +1157,7 @@ repeat:
         
         
         json=[self get_json:URL_CUSTOMER_SAVE parameters:params];
         json=[self get_json:URL_CUSTOMER_SAVE parameters:params];
     }
     }
-
+    
     if(json!=nil)
     if(json!=nil)
     {
     {
         NSError *error=nil;
         NSError *error=nil;
@@ -1267,9 +1269,9 @@ repeat:
     }
     }
     else
     else
     {
     {
-    if(![self IsNetworkAvailable])
-        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
-    
+        if(![self IsNetworkAvailable])
+            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+        
         json =[self get_json:request_url parameters:params];
         json =[self get_json:request_url parameters:params];
     }
     }
     if(json!=nil)
     if(json!=nil)
@@ -1558,10 +1560,10 @@ repeat:
     }
     }
     else
     else
     {
     {
-    if(![self IsNetworkAvailable])
-        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
-    
-    json=[self get_json:URL_ORDER_DETAIL parameters:params];
+        if(![self IsNetworkAvailable])
+            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+        
+        json=[self get_json:URL_ORDER_DETAIL parameters:params];
     }
     }
     if(json==nil)
     if(json==nil)
         return nil;
         return nil;