Эх сурвалжийг харах

实现同步Portfolio和PDF的数据准备。

Pen Li 9 жил өмнө
parent
commit
090c9518b5

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


+ 138 - 0
RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.m

@@ -248,6 +248,8 @@
     ret[@"contact"]=[self prepareContact:serial];
     ret[@"wishlist"]=[self prepareWishlist:serial];
     ret[@"order"]=[self prepareOrder:serial soid:arr_order];
+    ret[@"portfolio"] = [self preparePortfolio:serial];
+    ret[@"view_portfolio"] = [self preparePDF:serial];
     
     NSString* str= [RAUtils dict2string:ret];
     
@@ -10135,4 +10137,140 @@
     return [RAUtils dict2data:dic];
 }
 
++(NSMutableDictionary*) preparePortfolio:(NSString* ) serial
+{
+    
+    NSMutableDictionary* ret = [[NSMutableDictionary alloc] init];
+    
+    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
+    
+    NSString*  ver = [defaults stringForKey:@"OfflineVer"] ;
+    
+    
+    NSString* where=@"1=1";
+    
+    if (ver!=nil) {
+        
+        where=@"is_dirty=1";
+        
+    }
+    
+    NSString *sqlQuery =[NSString stringWithFormat:@"select _id,product_id,name,description,item_id,fashion_id,available_qty,percentage,percent,sheet_price,sheet_discount,img,line_note,is_delete,createtime,modifytime from offline_portfolio where %@",where];
+    
+    
+    [ret setValue:[NSNumber numberWithInt:AP_USER_NOT_AUTH ] forKey:@"result"];
+    
+    [iSalesDB jk_query:sqlQuery completion:^(sqlite3_stmt *stmt, NSMutableDictionary *container, long *count) {
+        
+        NSMutableDictionary *item = [NSMutableDictionary dictionary];
+        
+        NSInteger _id = sqlite3_column_int(stmt, 0);
+        NSInteger product_id = sqlite3_column_int(stmt, 1);
+        NSString *name = [self textAtColumn:2 statement:stmt];
+        NSString *desc = [self textAtColumn:3 statement:stmt];
+        NSInteger item_id = sqlite3_column_int(stmt, 4);
+        NSInteger fashion_id = sqlite3_column_int(stmt, 5);
+        NSInteger qty = sqlite3_column_int(stmt, 6);
+        NSInteger is_percent = sqlite3_column_int(stmt, 7);
+        double percent = sqlite3_column_double(stmt, 8);
+        double price = sqlite3_column_double(stmt, 9);
+        double discount = sqlite3_column_double(stmt, 10);
+        NSString *img = [self textAtColumn:11 statement:stmt];
+        NSString *line_note = [self textAtColumn:12 statement:stmt];
+        NSInteger is_delete = sqlite3_column_int(stmt, 13);
+        NSString *create_time = [self textAtColumn:14 statement:stmt];
+        NSString *modify_time = [self textAtColumn:15 statement:stmt];
+        
+        [item setValue:[NSNumber numberWithInteger:_id] forKey:@"_id"];
+        [item setValue:[NSNumber numberWithInteger:product_id] forKey:@"product_id"];
+        [item setValue:[NSNumber numberWithInteger:item_id] forKey:@"item_id"];
+        [item setValue:[NSNumber numberWithInteger:fashion_id] forKey:@"fashion_id"];
+        [item setValue:[NSNumber numberWithInteger:is_percent] forKey:@"percentage"];
+        [item setValue:[NSNumber numberWithInteger:is_delete] forKey:@"is_delete"];
+        [item setValue:[NSNumber numberWithInteger:qty] forKey:@"available_qty"];
+        
+        [item setValue:[NSNumber numberWithDouble:percent] forKey:@"percent"];
+        [item setValue:[NSNumber numberWithDouble:price] forKey:@"sheet_price"];
+        [item setValue:[NSNumber numberWithDouble:discount] forKey:@"sheet_discount"];
+        
+        [item setValue:name forKey:@"name"];
+        [item setValue:desc forKey:@"description"];
+        [item setValue:img forKey:@"img"];
+        [item setValue:line_note forKey:@"line_note"];
+        [item setValue:create_time forKey:@"createtime"];
+        [item setValue:modify_time forKey:@"modifytime"];
+        
+        
+        [ret setObject:item forKey:[NSString stringWithFormat:@"item_%ld",(*count)++]];
+        [ret setObject:[NSNumber numberWithInteger:RESULT_TRUE] forKey:@"result"];
+        [ret setObject:[NSNumber numberWithInteger:*count] forKey:@"count"];
+        
+    } failure:^(NSMutableDictionary *container, NSString *err_msg) {
+        
+        [ret setObject:[NSNumber numberWithInteger:RESULT_FALSE] forKey:@"result"];
+        
+    }];
+    
+    return ret;
+}
+
++(NSMutableDictionary*) preparePDF:(NSString* ) serial
+{
+    
+    NSMutableDictionary* ret = [[NSMutableDictionary alloc] init];
+    
+    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
+    
+    NSString*  ver = [defaults stringForKey:@"OfflineVer"] ;
+    
+    
+    NSString* where=@"1=1";
+    
+    if (ver!=nil) {
+        
+        where=@"is_dirty=1";
+        
+    }
+    
+    NSString *sqlQuery =[NSString stringWithFormat:@"select _id,tearsheets_id,pdf_path,create_user,tear_note,tear_name,model_info,createtime from offline_pdf where %@",where];
+    
+    
+    [ret setValue:[NSNumber numberWithInt:AP_USER_NOT_AUTH ] forKey:@"result"];
+    
+    [iSalesDB jk_query:sqlQuery completion:^(sqlite3_stmt *stmt, NSMutableDictionary *container, long *count) {
+        
+        NSMutableDictionary *item = [NSMutableDictionary dictionary];
+        
+        NSInteger _id = sqlite3_column_int(stmt, 0);
+        NSInteger tearsheets_id = sqlite3_column_int(stmt, 1);
+        NSString *pdf_path = [self textAtColumn:2 statement:stmt];
+        NSString *create_user = [self textAtColumn:3 statement:stmt];
+        NSString *tear_note = [self textAtColumn:4 statement:stmt];
+        NSString *tear_name = [self textAtColumn:5 statement:stmt];
+        NSString *model_info = [self textAtColumn:6 statement:stmt];
+        NSString *createtime = [self textAtColumn:7 statement:stmt];
+        
+        [item setObject:[NSNumber numberWithInteger:_id] forKey:@"_id"];
+        [item setObject:[NSNumber numberWithInteger:tearsheets_id] forKey:@"tearsheets_id"];
+        [item setObject:pdf_path forKey:@"pdf_path"];
+        [item setObject:create_user forKey:@"create_user"];
+        [item setObject:tear_note forKey:@"tear_note"];
+        [item setObject:tear_name forKey:@"tear_name"];
+        [item setObject:model_info forKey:@"model_info"];
+        [item setObject:createtime forKey:@"createtime"];
+
+
+        [ret setObject:item forKey:[NSString stringWithFormat:@"item_%ld",(*count)++]];
+        [ret setObject:[NSNumber numberWithInteger:RESULT_TRUE] forKey:@"result"];
+        [ret setObject:[NSNumber numberWithInteger:*count] forKey:@"count"];
+        
+    } failure:^(NSMutableDictionary *container, NSString *err_msg) {
+        
+        [ret setObject:[NSNumber numberWithInteger:RESULT_FALSE] forKey:@"result"];
+        
+    }];
+    
+    return ret;
+}
+
 @end

+ 5 - 0
RedAnt ERP Mobile/common/Functions/order/OrderListViewController.m

@@ -113,6 +113,11 @@
     [ref addTarget:self action:@selector(manually_refresh) forControlEvents:UIControlEventValueChanged];
     [self.table_order addSubview:ref];
     
+    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+    if(appDelegate.user_type != USER_ROLE_CUSTOMER) {
+        [self.mergeListButton removeFromSuperview];
+        self.mergeListButton = nil;
+    }
     
 //    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
 //    NSString *documents = [paths objectAtIndex:0];

+ 2 - 2
RedAnt ERP Mobile/common/data_provider/iSalesDB.m

@@ -722,9 +722,9 @@ void decryptfield (sqlite3_context *context, int argc, sqlite3_value **argv) {
     NSString* create_offline_salesrep=@"CREATE TABLE IF NOT EXISTS offline_salesrep ( _id INTEGER PRIMARY KEY, name text, code text,salesrep_id integer);";
     
     
-    NSString *create_offline_portfolio = @"CREATE TABLE IF NOT EXISTS offline_portfolio (_id integer PRIMARY KEY,product_id integer,name text,description tex,item_id integer,fashion_id integer,available_qty integer,percentage integer,percent double,sheet_price double,sheet_discount double,img text,line_note text,is_delete integer,createtime timestamp DEFAULT(datetime('now','localtime')),modifytime timestamp DEFAULT(datetime('now','localtime')));";
+    NSString *create_offline_portfolio = @"CREATE TABLE IF NOT EXISTS offline_portfolio (_id integer PRIMARY KEY,product_id integer,name text,description tex,item_id integer,fashion_id integer,available_qty integer,percentage integer,percent double,sheet_price double,sheet_discount double,img text,line_note text,is_delete integer,is_dirty integer,createtime timestamp DEFAULT(datetime('now','localtime')),modifytime timestamp DEFAULT(datetime('now','localtime')));";
     
-    NSString *create_offline_pdf = @"create table if not exists offline_pdf (_id integer primary key,tearsheets_id integer,pdf_path text,create_user text,tear_note text,tear_name text,model_info text,createtime timestamp default(datetime('now','localtime')));";
+    NSString *create_offline_pdf = @"create table if not exists offline_pdf (_id integer primary key,tearsheets_id integer,pdf_path text,create_user text,tear_note text,tear_name text,model_info text,is_dirty integer,createtime timestamp default(datetime('now','localtime')));";
     
     
     NSString* create_order_trigger=@"CREATE TRIGGER  if not exists offline_order_insert after insert on offline_order BEGIN select offline_dirty();  UPDATE offline_order SET modify_time= datetime('now', 'localtime') WHERE _id=new._id;END;CREATE TRIGGER  if not exists offline_order_update after update on offline_order BEGIN select offline_dirty();  UPDATE offline_order SET modify_time= datetime('now', 'localtime') WHERE _id=new._id;END;CREATE TRIGGER  if not exists offline_order_delete after delete on offline_order BEGIN select offline_dirty();  END;";

+ 2 - 0
RedAnt ERP Mobile/iSales-NPD/AppDelegate.m

@@ -1192,6 +1192,8 @@ void UncaughtExceptionHandler(NSException *exception) {
                     [iSalesDB execSql:@"delete from wishlist"];
                     [iSalesDB execSql:[NSString stringWithFormat:@"delete from offline_order where so_id in(%@)",so_id]];
                     [iSalesDB execSql:[NSString stringWithFormat:@"delete from offline_cart where so_no in(%@)",so_id]];
+                    [iSalesDB execSql:@"delete from offline_portfolio"];
+                    [iSalesDB execSql:@"delete from offline_pdf"];
                     
                     NSString* contactMap = json[@"contactMap"];
                     if(contactMap.length>0)