Shinobidatagrid with sections crash when scrolled down and update the record


#1

i have a shinobidatagrid with sections and the app works fine unless you will scroll down and update the record at the bottom.

my code is not yet optimized but please take a look what i should do to handle the exact dataset even if its scrolled down.

        //

        //  OrderVerification.m

        //  TMS

        //

        //  Created by Ariel Marlon Javier on 4/10/13.

        //  Copyright © 2013 Procuro. All rights reserved.

        //

        #import “OrderVerification.h”

        #import <QuartzCore/QuartzCore.h>

        #import “GlobalFunctions.h”

        #import “GlobalObjects.h”

        #import “JSONKit.h”

        #import “SingleTemp.h”

        #import “OrderDetailProduct.h”

        #import “ProductGroupDataSource.h”

        #import “PIMMGlobals.h”

        #import “OrderGroup.h”

        #import “NumericCell.h”

        #import “QtyReceivedCell.h”

        #import “MyCheckBoxCell.h”

        @interfaceOrderVerification ()

        @end

        @implementation OrderVerification

        CGRect _realBounds;

        @synthesize btnReasonCodeChiller, btnReasonCodeDry, btnReasonCodeFreezer, btnStatusChiller, btnStatusDry, btnStatusFreezer, btnTempChiller, btnTempDry,btnTempFreezer;

        @synthesize txtQtyReceviedChiller, txtQtyReceviedDry, txtQtyReceviedFreezer, txtReasonCodeChiller, txtReasonCodeDry, txtReasonCodeFreezer, txtTempChiller, txtTempDry, txtTempFreezer;

        @synthesize  lblQtyOrderedChiller, lblQtyOrderedDry, lblQtyOrderedFreezer, lblQtyShippedChiller, lblQtyShippedDry, lblQtyShippedFreezer, lblShortPlusChiller,

        lblShortPlusDry, lblShortPlusFreezer;

        @synthesize keypad;

        @synthesize rcpop;

        @synthesize rc;

        @synthesize delivery;

        @synthesize src;

        @synthesize btnClose, btnCheck;

        @synthesize tmskeypad;

        NSString *reasonValue;

        @synthesize pop;

        NSString *src;

        NSArray *_data;

        NSArray *_sortedData;

        UIImage *btnTempImage;

        UIImage *btnReasonImage;

        UIImage *btnStatusImage;

        NSInteger rowQtyRcvd;

        NSString *groupNameOld;

        SDataGridCoord *_editingCell;

        NSTimer* tempTimer;

        BOOL tempProbeStatus;

        NSNumber *currentTempValue;

        NSMutableArray *_modifiedOrdered;

        @synthesize switchTemp;

        //

        //_editingCell

        BOOL tempStatus;

        iPimmOutboundDeliveryDataManager *ipimm;

        NSInteger rowRcvd;

        - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

        {

            self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

            if (self) {

                // Custom initialization

            }

            return self;

        }

        -(void)dismissTempKeypad:(NSString *)value

        {

            SDataGridTextCell *cell = (SDataGridTextCell*)[_shinobiDataGridvisibleCellAtCoordinate:_editingCell];

            

            

            OrderGroup *group=_sortedData[cell.coordinate.row.sectionIndex];

            

            OrderDetailProduct *order=group.groups[cell.coordinate.row.rowIndex];

            //    _modifiedOrdered =nil;

            

            if ([_editingCell.column.title isEqualToString:@“Temp”]) {

                order.Temp=value;

                

                

            }

           

            NSMutableDictionary *editedOrdered=[[NSMutableDictionaryalloc]init];

            [editedOrdered setObject:order.QuantityReceived forKey:@“QuantityReceived”];

            [editedOrdered setObject:order.ItemNo forKey:@“ItemNo”];

            [editedOrdered setObject:order.QuantityOrdered forKey:@“QuantityOrdered”];

            [editedOrdered setObject:order.QuanityShipped forKey:@“QuantityShipped”];

            [editedOrdered setObject:[NSString stringWithFormat:@"%@",order.Temp] forKey:@“Temperature”];

            [editedOrdered setObject:order.ReasonCode forKey:@“ReasonCode”];

            [editedOrdered setObject:order.Status forKey:@“Status”];

            [editedOrdered setObject:order.Location forKey:@“Location”];

            [editedOrdered setObject:order.GroupName forKey:@“Group”];

            [editedOrdered setObject:order.ProducDescription forKey:@“ProductDescription”];

            [editedOrdered setObject:order.BestBefore forKey:@“BestBefore”];

            [editedOrdered setObject:order.Unit forKey:@“Unit”];

            [editedOrdered setObject:order.UnitWeight forKey:@“UnitWeight”];

            [editedOrdered setObject:order.TotalWeight forKey:@“TotalWeight”];

            [editedOrdered setObject:order.ShortPlus forKey:@“ShortPlus”];//renamed as NET

            [_modifiedOrdered addObject:editedOrdered];

            

            NSLog(@“modified Ordered %@”, _modifiedOrdered);

            

            cell.backgroundColor=[UIColor clearColor];

            [_shinobiDataGrid reload];

            _editingCell=nil;

            

            [self.popdismissPopoverAnimated:YES];

            

        }

        -(void)dismissKeypad:(NSString *)value

        {

            

            

            

            // Get the cell that we were editing.

            SDataGridTextCell *cell = (SDataGridTextCell*)[_shinobiDataGridvisibleCellAtCoordinate:_editingCell];

            // Find its contents

            

            OrderGroup *group=_sortedData[cell.coordinate.row.sectionIndex];

            

            OrderDetailProduct *order=group.groups[cell.coordinate.row.rowIndex];

            

            if ([_editingCell.column.title isEqualToString:@“Qty Rcvd”]) {

                // cell.textField.text=value;

                order.QuantityReceived=value;

                

                

            }//i.[Qty Received] – [Qty Shipped]

            

            NSInteger rcvd=[order.QuantityReceived integerValue];

            NSInteger shipped=[order.QuanityShipped integerValue];

            

            NSInteger net=rcvd -shipped;

            order.ShortPlus=[NSString stringWithFormat:@"%d", net];

            

            NSString *unitWeight=[NSString stringWithFormat:@"%@",order.UnitWeight];

            NSString *strQRcvd=[NSString stringWithFormat:@"%@", order.QuantityReceived];

            CGFloat tWeight=[unitWeight floatValue]*[strQRcvd floatValue];

            order.TotalWeight=[NSString stringWithFormat:@"%.2f",tWeight];

            if (net==0) {

                order.ReasonCode=@"";

                order.Status=@“Pending”;

            }

            else

            {

                order.Status=@“Pending”;

            }

            NSMutableDictionary *editedOrdered=[[NSMutableDictionaryalloc]init];

            [editedOrdered setObject:order.QuantityReceived forKey:@“QuantityReceived”];

            [editedOrdered setObject:order.ItemNo forKey:@“ItemNo”];

            [editedOrdered setObject:order.QuantityOrdered forKey:@“QuantityOrdered”];

            [editedOrdered setObject:order.QuanityShipped forKey:@“QuantityShipped”];

            [editedOrdered setObject:[NSString stringWithFormat:@"%@",order.Temp] forKey:@“Temperature”];

            [editedOrdered setObject:order.ReasonCode forKey:@“ReasonCode”];

            [editedOrdered setObject:order.Status forKey:@“Status”];

            [editedOrdered setObject:order.Location forKey:@“Location”];

            [editedOrdered setObject:order.GroupName forKey:@“Group”];

            [editedOrdered setObject:order.ProducDescription forKey:@“ProductDescription”];

            [editedOrdered setObject:order.BestBefore forKey:@“BestBefore”];

            [editedOrdered setObject:order.Unit forKey:@“Unit”];

            [editedOrdered setObject:order.UnitWeight forKey:@“UnitWeight”];

            [editedOrdered setObject:order.TotalWeight forKey:@“TotalWeight”];

            [editedOrdered setObject:order.ShortPlus forKey:@“ShortPlus”];//renamed as NET

            [_modifiedOrdered addObject:editedOrdered];

            

            NSLog(@“modified Ordered %@”, _modifiedOrdered);

            cell.backgroundColor=[UIColor clearColor];

            [_shinobiDataGrid reload];

            

            _editingCell = nil;

            [self.popdismissPopoverAnimated:YES];

        }

        - (BOOL)shinobiDataGrid:(ShinobiDataGrid *)grid shouldBeginEditingCellAtCoordinate:(const SDataGridCoord *)coordinate {

            

            _editingCell=nil;

            _editingCell = (SDataGridCoord *)coordinate;

            

            

            

            SDataGridCell *cell = (SDataGridCell*)[grid visibleCellAtCoordinate:_editingCell];

            

            OrderGroup *group=_sortedData[cell.coordinate.row.sectionIndex];

            

            OrderDetailProduct *order=group.groups[cell.coordinate.row.rowIndex];

            

            NSLog(@“check values : %@”, order.ShortPlus);

            // Get the frame of the tapped cell

            // CGRect cellFrame = cell.frame;

            if ([_editingCell.column.title isEqualToString:@“Qty Rcvd”]) {

                if (self.pop) {

                    [self.pop dismissPopoverAnimated:YES];

                }

                UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@“MainStoryboard” bundle:nil];

                Keypad *controller = [storyBoard instantiateViewControllerWithIdentifier:@“Keypad”];

                controller.delegate=self;

                UIPopoverController* popover = [[UIPopoverController alloc] initWithContentViewController:controller];

                popover.delegate = self;

                popover.popoverContentSize = CGSizeMake(250,300);

                

                self.pop=popover;

                

                [popover presentPopoverFromRect:cell.boundsinView:cell permittedArrowDirections:UIPopoverArrowDirectionAnyanimated:YES];

                

                

            }

            if ([_editingCell.column.title isEqualToString:@“Reason Code”]) {

                if (self.pop) {

                    [self.pop dismissPopoverAnimated:YES];

                }

                order.ReasonCode=@"";

                

                NSInteger rcvd=[order.QuantityReceived integerValue];

                NSInteger shipped=[order.QuanityShipped integerValue];

                NSInteger net=rcvd -shipped;

                order.ShortPlus=[NSString stringWithFormat:@"%d", net];

                if (!net==0) {

                    

                    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@“MainStoryboard” bundle:nil];

                    ReasonCode *controller = [storyBoard instantiateViewControllerWithIdentifier:@“ReasonCode”];

                    controller.delegate=self;

                    

                    UIPopoverController* popover = [[UIPopoverController alloc] initWithContentViewController:controller];

                    popover.delegate = self;

                    popover.popoverContentSize = CGSizeMake(300,400);

                    

                    self.pop=popover;

                    [popover presentPopoverFromRect:cell.boundsinView:cell permittedArrowDirections:UIPopoverArrowDirectionAnyanimated:YES];

                    

                    

                }

                else

                {

                    

                }

                

                

                

                

                

            }

            if ([_editingCell.column.title isEqualToString:@“Temp”]) {

                

                

                management=[iPIMMTempManagementsharedInstance];

                iPIMMTempHelper=[[iPIMMTempCommonalloc]init];

                tempProbeStatus=NO;

                

                tempTimer = [NSTimerscheduledTimerWithTimeInterval: 1.0target: selfselector: @selector(checkTempProbe) userInfo: nilrepeats: YES];

                tempProbeStatus=[self checkTempProbe];

                if (tempProbeStatus==NO) {

                    if (self.pop) {

                        [self.pop dismissPopoverAnimated:YES];

                    }

                    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@“MainStoryboard” bundle:nil];

                    TMSTempKeypad *controller = [storyBoard instantiateViewControllerWithIdentifier:@“TMSTempKeypad”];

                    controller.delegate=self;

                    UIPopoverController* popover = [[UIPopoverController alloc] initWithContentViewController:controller];

                    popover.delegate = self;

                    popover.popoverContentSize = CGSizeMake(250,300);

                    

                    self.pop=popover;

                    [popover presentPopoverFromRect:cell.bounds inView:cell

                           permittedArrowDirections:UIPopoverArrowDirectionAnyanimated:YES];

                    

                    

                    

                }

                else

                {

                    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@“MainStoryboard” bundle:nil];

                    SingleTemp *controller = [storyBoard instantiateViewControllerWithIdentifier:@“SingleTemp”];

                    [self presentViewController:controller animated:YES completion:nil];

                }

                

                

            }

            

            

            if ([_editingCell.column.title isEqualToString:@“Status”]) {

                NSInteger *net=[order.ShortPlus integerValue];

                BOOL tempMode=NO;

                

                if ([globtempmode isEqualToString:@“1”]) {

                    if ([order.Temp length]<1) {

                        

                        tempMode=NO;

                        

                    }

                    else

                    {

                        tempMode=YES;

                        

                    }

                }

                else

                {

                    tempMode=YES;

                }

                if ((net !=0 && [order.ReasonCode length]<1) ||tempMode==NO) {

                    UIAlertView *alert = [[UIAlertView alloc]

                                          initWithTitle: @“Information”

                                          message: @“Please complete the row information.”

                                          delegate: nil

                                          cancelButtonTitle:@“OK”

                                          otherButtonTitles:nil];

                    [alert show];

                    order.Status=@“Pending”;

                    

                    

                }

                else

                {

                    order.Status=@“Done”;

                    NSMutableDictionary *editedOrdered=[[NSMutableDictionary alloc]init];

                   

                    [editedOrdered setObject:order.QuantityReceived forKey:@“QuantityReceived”];

                    [editedOrdered setObject:order.ItemNo forKey:@“ItemNo”];

                    [editedOrdered setObject:order.QuantityOrdered forKey:@“QuantityOrdered”];

                    [editedOrdered setObject:order.QuanityShipped forKey:@“QuantityShipped”];

                    [editedOrdered setObject:[NSString stringWithFormat:@"%@",order.Temp] forKey:@“Temperature”];

                    [editedOrdered setObject:order.ReasonCode forKey:@“ReasonCode”];

                    [editedOrdered setObject:order.Status forKey:@“Status”];

                    [editedOrdered setObject:order.Location forKey:@“Location”];

                    [editedOrdered setObject:order.GroupName forKey:@“Group”];

                    [editedOrdered setObject:order.ProducDescription forKey:@“ProductDescription”];

                    [editedOrdered setObject:order.BestBefore forKey:@“BestBefore”];

                    [editedOrdered setObject:order.Unit forKey:@“Unit”];

                    [editedOrdered setObject:order.UnitWeight forKey:@“UnitWeight”];

                    [editedOrdered setObject:order.TotalWeight forKey:@“TotalWeight”];

                    [editedOrdered setObject:order.ShortPlus forKey:@“ShortPlus”];

                    [_modifiedOrdered addObject:editedOrdered];

                    

                    

                }

                

                [self saveRowRecord];

               

                [_shinobiDataGridreloadRows:@[_editingCell.row]];

                

                

                

            }

            

            return NO;

            

        }

        -(void)saveRowRecord

        {

            for (OrderDetailProduct *orderedProducts  in _modifiedOrdered) {

                

                NSPredicate *predicate = [NSPredicate predicateWithFormat:@“ItemNo == %@”, [orderedProducts valueForKey:@“ItemNo”]];

                

                NSLog(@“predicate %@”, predicate);

                NSMutableDictionary *orderedDetils = [[[[globDeliveryDictionaryvalueForKey:@“StopProductInfo”] valueForKey:@“StopProductDetail”] filteredArrayUsingPredicate:predicate] objectAtIndex:0];

                NSLog(@“order details %@”, orderedProducts);

               // [orderedDetils setValue:[orderedProducts valueForKey:@“Group”] forKey:@“Group”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“ItemNo”] forKey:@“ItemNo”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“Location”] forKey:@“Location”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“ProducDescription”] forKey:@“ProducDescription”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“Temperature”] forKey:@“Temperature”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“Group”] forKey:@“Group”];

                

                [orderedDetils setValue:[orderedProducts valueForKey:@“BestBefore”] forKey:@“BestBefore”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“Unit”] forKey:@“Unit”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“QuantityOrdered”] forKey:@“QuantityOrdered”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“QuantityShipped”] forKey:@“QuantityShipped”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“TotalWeight”] forKey:@“TotalWeight”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“UnitWeight”] forKey:@“UnitWeight”];

                

                

                [orderedDetils setValue:[orderedProducts valueForKey:@“QuantityReceived”] forKey:@“QuantityReceived”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“ReasonCode”] forKey:@“ReasonCode”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“ShortPlus”] forKey:@“ShortPlus”];

                [orderedDetils setValue:[orderedProducts valueForKey:@“Status”] forKey:@“Status”];

                

                

                

            }

          

     

            NSString *strDeliveryJsonUpdate=[globDeliveryDictionary JSONString];

            

            NSLog(@“json string %@”, globDeliveryDictionary);

            [ipimm updateFormWithFormId:globDeliveryCurrentFormID FormBody:strDeliveryJsonUpdate Callback:^(PimmForm *pimmForm, NSError *err, int requestIdentifier) {

                

                

                if(err != Nil)

                {

                    NSLog(@“Error Domain:%@”, [err domain]);

                    NSLog(@“Error Code:%d”, [err code]);

                    NSLog(@“error code %@”, err.description);

                    NSLog(@“Error Description:%@”, [err localizedDescription]);

                    if([err code] == NSURLErrorNotConnectedToInternet ||

                       [err code] == NSURLErrorCannotConnectToHost ||

                       [err code] == NSURLErrorCannotFindHost ||

                       [err code] == NSURLErrorNetworkConnectionLost)

                    {

                        

                        

                        [ipimmaddorDeleteRequestFromPendingQueue:TRUEWithRequestIdentifier:requestIdentifier];

                    }

                }

                

                

                

            }];

            

        }

        -(void)shinobiDataGrid:(ShinobiDataGrid *)grid alterStyle:(SDataGridCellStyle *)styleToApply beforeApplyingToCellAtCoordinate:(SDataGridCoord *)coordinate {

        //    

        //    _editingCell = (SDataGridCoord *)coordinate;

        //    

        //    

        //    

        //    SDataGridCell *cell = (SDataGridCell*)[grid visibleCellAtCoordinate:_editingCell];

            

            OrderGroup *group=_sortedData[coordinate.row.sectionIndex];

            

            OrderDetailProduct *order=group.groups[coordinate.row.rowIndex];

            

            styleToApply.backgroundColor=[UIColor clearColor];

            

            if ([order.Status isEqualToString:@“Done”]) {

                         styleToApply.backgroundColor = [UIColor colorWithRed:252./255. green:225./255. blue:225./255. alpha:1];

               

            }

             

            

        }

        -(BOOL)checkTempProbe

        {

            

            currentTempValue  = [managementGetCurrentTemperature];

            NSDecimalNumber *roundedNumber;

            roundedNumber = [iPIMMTempHelperroundToSingleDecimalPoint:([iPIMMTempHelperConvertToFahrenheit:currentTempValue])];

            tempProbeStatus=NO;

            

            NSString *temp = [NSString stringWithFormat:@"%@",[roundedNumber stringValue]];

            if (([temp isEqualToString:@"-22222190"])||(([temp isEqualToString:@"-12345678.9"]))) {

                //tempe.text = @"–";

                tempProbeStatus=NO;

                

            } else {

                tempProbeStatus=YES;

                

            }

            roundedNumber=nil;

            

            returntempProbeStatus;

            

        }

        -(NSUInteger)shinobiDataGrid:(ShinobiDataGrid *)grid numberOfRowsInSection:(int)sectionIndex

        {

            OrderGroup *group=(OrderGroup *)_sortedData[sectionIndex];

            return group.groups.count;

        }

        - (void)shinobiDataGrid:(ShinobiDataGrid *)grid didReorderRow:(SDataGridRow *)rowSwitched withRow:(SDataGridRow *)rowSwitchedWith

        {

            // clone the sorted data into a mutable array

            NSMutableArray* sortedData = [[NSMutableArray alloc] initWithArray:_sortedData];

            

            // perform the switch

            [sortedData exchangeObjectAtIndex:rowSwitched.rowIndex withObjectAtIndex:rowSwitchedWith.rowIndex];

            

            // copy back to the sorted data property

            _sortedData = [[NSArray alloc] initWithArray:sortedData];

        }

        ///ReasonCode

        -(void)dismissPop:(NSString *)value

        {

            if ([value isEqualToString:@“NV”]) {

                [self.pop dismissPopoverAnimated:YES];

                

            }

            else

            {

                SDataGridTextCell *cell = (SDataGridTextCell*)[_shinobiDataGridvisibleCellAtCoordinate:_editingCell];

                // Find its contents

                

                OrderGroup *group=_sortedData[cell.coordinate.row.sectionIndex];

                

                

                OrderDetailProduct *order=group.groups[cell.coordinate.row.rowIndex];

                if ([_editingCell.column.title isEqualToString:@“Reason Code”]) {

                    cell.textField.text=value;

                    order.ReasonCode=value;

                    

                    

                }

                

                

                

                

                NSMutableDictionary *editedOrdered=[[NSMutableDictionary alloc]init];

                [editedOrdered setObject:order.QuantityReceived forKey:@“QuantityReceived”];

                [editedOrdered setObject:order.ItemNo forKey:@“ItemNo”];

                [editedOrdered setObject:order.QuantityOrdered forKey:@“QuantityOrdered”];

                [editedOrdered setObject:order.QuanityShipped forKey:@“QuantityShipped”];

                [editedOrdered setObject:[NSString stringWithFormat:@"%@",order.Temp] forKey:@“Temperature”];

                [editedOrdered setObject:order.ReasonCode forKey:@“ReasonCode”];

                [editedOrdered setObject:order.Status forKey:@“Status”];

                [editedOrdered setObject:order.Location forKey:@“Location”];

                [editedOrdered setObject:order.GroupName forKey:@“Group”];

                [editedOrdered setObject:order.ProducDescription forKey:@“ProductDescription”];

                [editedOrdered setObject:order.BestBefore forKey:@“BestBefore”];

                [editedOrdered setObject:order.Unit forKey:@“Unit”];

                [editedOrdered setObject:order.UnitWeight forKey:@“UnitWeight”];

                [editedOrdered setObject:order.TotalWeight forKey:@“TotalWeight”];

                [editedOrdered setObject:order.ShortPlus forKey:@“ShortPlus”];//renamed as NET

                [_modifiedOrdered addObject:editedOrdered];

                

                NSLog(@“modified Ordered %@”, _modifiedOrdered);

                cell.backgroundColor=[UIColor clearColor];

                

                

                [_shinobiDataGrid reload];

                

                _editingCell = nil;

                [self.pop dismissPopoverAnimated:YES];

            }

            

            

            

        }

        - (void)viewDidLoad

        {

            [super viewDidLoad];

            ipimm=[iPimmOutboundDeliveryDataManagergetOutboundDeliveryDataManager];

            _realBounds = self.view.bounds;

            [selfrenderOrderDetail];

            

            rowRcvd=0;

            rowQtyRcvd=0;

            btnTempImage=[UIImage imageNamed:@“temp_icon20.png”];

            //btnStatusImage=[UIImage imageNamed:@“d_Green_Check_Mark.png”];

            btnStatusImage=[UIImageimageNamed:@“d_Blank_Circle.png”];

            globDelReason=@“delivery”;

            groupNameOld=nil;

            

            _modifiedOrdered =[[NSMutableArray alloc]init];

            

            tempStatus=NO;

            

            

        }

        - (void)shinobiDataGrid:(ShinobiDataGrid *)grid prepareCellForDisplay:(SDataGridCell *)cell

        {

            

            SDataGridTextCell* textCell= (SDataGridTextCell*)cell;

            

            

            OrderGroup *group=_sortedData[cell.coordinate.row.sectionIndex];

            

            NSLog(@“group name %@”, group.groupName);

      

            OrderDetailProduct *order=group.groups [cell.coordinate.row.rowIndex];

            NSLog(@“orderr %@  %@  %@”, order.ProducDescription  , order.GroupName, order);

            textCell.textField.borderStyle=UITextBorderStyleNone;

            textCell.textField.backgroundColor=[UIColorclearColor];

                      

            MyCheckBoxCell *checkStatus=(MyCheckBoxCell *)[cell viewWithTag:102];

            if (![cell.coordinate.column.title isEqualToString:@“Status”] && checkStatus!=nil) {

                [checkStatus removeFromSuperview];

                

            }

            

            // determine which column this cell belongs to

            if ([cell.coordinate.column.title isEqualToString:@“Location”])

            {

                textCell.textField.text = order.Location;

            }

            if ([cell.coordinate.column.title isEqualToString:@“Item No”])

            {

                textCell.textField.text = order.ItemNo;

            }

            if ([cell.coordinate.column.title isEqualToString:@“Product”])

            {

                textCell.textField.text=order.ProducDescription;

                

            }

            if ([cell.coordinate.column.title isEqualToString:@“Temp”])

            {

                textCell.textField.borderStyle=UITextBorderStyleRoundedRect;

                textCell.textField.text=order.Temp;

                

            }

            if ([cell.coordinate.column.title isEqualToString:@“Unit”])

            {

                textCell.textField.text =order.Unit;

                

            }

            if ([cell.coordinate.column.title isEqualToString:@“Qty Ordered”])

            {

                textCell.textField.text =[NSString stringWithFormat:@"%@",order.QuantityOrdered];

                

            }

            if ([cell.coordinate.column.title isEqualToString:@“Qty Shipped”])

            {

                textCell.textField.text =[NSString stringWithFormat:@"%@", order.QuanityShipped];

                

            }

            if ([cell.coordinate.column.title isEqualToString:@“Weight”])

            {

                NSNumberFormatter *formatter=[NSNumberFormatternew];

                [formatter setNumberStyle:NSNumberFormatterDecimalStyle];

                float weightFloat=[[NSString stringWithFormat:@"%@",order.TotalWeight]floatValue];

                

                NSString *weightFormatted=[formatter stringFromNumber:[NSNumber numberWithFloat:weightFloat]];

                textCell.textField.text =weightFormatted;

                

            }

            if ([cell.coordinate.column.title isEqualToString:@“Qty Rcvd”])

                

            {

                textCell.textField.borderStyle=UITextBorderStyleRoundedRect;

                textCell.textField.text=[NSString stringWithFormat:@"%@",order.QuantityReceived];

                

                NSInteger rcvd=[order.QuantityReceived integerValue];

                NSInteger shipped=[order.QuanityShipped integerValue];

                NSInteger net=rcvd -shipped;

                order.ShortPlus=[NSString stringWithFormat:@"%d", net];

                

                

                

            }

            if ([cell.coordinate.column.title isEqualToString:@“Reason Code”])

            {

                textCell.textField.borderStyle=UITextBorderStyleRoundedRect;

                if ([order.ShortPlus intValue]!=0) {

                    textCell.textField.backgroundColor=[UIColor orangeColor];

                }

                else

                {

                    textCell.textField.enabled=NO;

                    textCell.textField.text=@"";

                }

                textCell.textField.text=order.ReasonCode;

                

            }

            if ([cell.coordinate.column.title isEqualToString:@“Net”])

            {

                NSNumber *received=order.QuantityReceived;

                NSNumber *shipped=order.QuanityShipped;

                NSNumber *result=@([received doubleValue]-[shipped doubleValue]);

                textCell.textField.text=[result stringValue];

                

                

            }

            if ([cell.coordinate.column.title isEqualToString:@“Status”])

            {

                if ([order.Status isEqualToString:@“Pending”]) {

                    textCell.textField.backgroundColor=[UIColor clearColor];

                    

                    

                }

                else

                {

                    textCell.textField.backgroundColor = [UIColor colorWithRed:252./255. green:225./255. blue:225./255. alpha:1];

                }

                

                textCell.textField.text=order.Status;

                textCell.textField.borderStyle=UITextBorderStyleBezel;

                

            }

            

        }

        -(void)renderOrderDetail

        {

            _shinobiDataGrid=[[ShinobiDataGrid alloc]initWithFrame:CGRectMake(15, 122, 970, 499)];

            SDataGridTheme *verticalLinesTheme =[SDataGridiOS7Theme new];

            

            

            verticalLinesTheme.hideVerticalGridlines = NO;

            [_shinobiDataGrid applyTheme:verticalLinesTheme];

            

            // Set the default font size.

            UIFont *font = [UIFont fontWithName:@“Helvetica” size:10.5f];

            UIFont *fontSelected = [UIFont fontWithName:@“Helvetica” size:11.0f];

            UIFont *fontSection=[UIFont fontWithName:@“Helvetica-Bold” size:11.0f];

            

            // Set the padding for the cell.

            UIEdgeInsets padding = UIEdgeInsetsMake(5, 5, 5, 5);

            

            // Create an alternating row style.

            SDataGridCellStyle* alternatingRowStyle = [[SDataGridCellStyle alloc] init];

            alternatingRowStyle.font = font;

            alternatingRowStyle.contentInset = padding;

            alternatingRowStyle.backgroundColor = [UIColor colorWithWhite:0.9f alpha:1.0f];

            

            // Create the selected row style.

            SDataGridCellStyle* selectedRowStyle = [[SDataGridCellStyle alloc] init];

            selectedRowStyle.font = fontSelected;

            

            selectedRowStyle.contentInset = padding;

            selectedRowStyle.backgroundColor = [UIColor colorWithWhite:.9f alpha:1.0f];

            

            selectedRowStyle.textColor = [UIColor orangeColor];

            

            

            // Create the header style.

            // Style the headers to have a dark background, and white text.

            SDataGridCellStyle* headerStyle = [[SDataGridCellStylealloc] init];

            headerStyle.font = fontSection;

            headerStyle.contentInset = padding;

            

            headerStyle.backgroundColor = [UIColor colorWithWhite:0.6f alpha:1.0f];

            headerStyle.textColor = [UIColor whiteColor];

            

            //[deliveryEquipment.layer setCornerRadius:10.f]

            [_shinobiDataGrid.layer setCornerRadius:4.f];

            // Set the row heights.

            _shinobiDataGrid.defaultHeaderRowHeight = @35;

            _shinobiDataGrid.defaultRowHeight = @35;

            

            // Set the cell styles.

            _shinobiDataGrid.defaultCellStyleForHeaderRow = headerStyle;

            _shinobiDataGrid.defaultCellStyleForSelectedRows = selectedRowStyle;

            _shinobiDataGrid.defaultCellStyleForAlternateRows = alternatingRowStyle;

            

            _shinobiDataGrid.defaultSectionHeaderStyle.font=fontSection;

            

            // _shinobiDataGrid.singleTapEventMask = SDataGridEventSelect;

            _shinobiDataGrid.singleTapEventMask = SDataGridEventEdit;

            

            

            // Create the style for the cell.

            SDataGridCellStyle* cellStyle;

            

            // Create the columns.

            SDataGridColumn* column;

            

            // *************************************

            // Location column

            // *************************************

            column = [[SDataGridColumn alloc] initWithTitle:@“Location”];

            column.editable = NO;

            column.width = @63;

            column.headerCellStyle.contentInset = padding;

            column.headerCellStyle.textAlignment = NSTextAlignmentCenter;

            

            cellStyle = [[SDataGridCellStyle alloc] init];

            cellStyle.font = font;

            cellStyle.contentInset = padding;

            cellStyle.textAlignment = NSTextAlignmentCenter;

            column.cellStyle = cellStyle;

            [_shinobiDataGrid addColumn:column];

            // *************************************

            // Location column

            // *************************************

            column = [[SDataGridColumn alloc] initWithTitle:@“Item No”];

            column.editable = NO;

            column.width = @60;

            column.headerCellStyle.contentInset = padding;

            column.headerCellStyle.textAlignment = NSTextAlignmentCenter;

            

            cellStyle = [[SDataGridCellStyle alloc] init];

            cellStyle.font = font;

            cellStyle.contentInset = padding;

            cellStyle.textAlignment = NSTextAlignmentCenter;

            column.cellStyle = cellStyle;

            [_shinobiDataGrid addColumn:column];

            

            // *************************************

            // Location column

            // *************************************

            column = [[SDataGridColumn alloc] initWithTitle:@“Product”];

            column.editable = NO;

            column.width = @175;

            column.headerCellStyle.contentInset = padding;

            column.headerCellStyle.textAlignment = NSTextAlignmentCenter;

            

            cellStyle = [[SDataGridCellStyle alloc] init];

            cellStyle.font = font;

            cellStyle.contentInset = padding;

            cellStyle.textAlignment = NSTextAlignmentCenter;

            column.cellStyle = cellStyle;

            [_shinobiDataGrid addColumn:column];

            

            

            column = [[SDataGridColumn alloc] initWithTitle:@“Temp”];

            column.editable = YES;

            column.width = @70;

            column.headerCellStyle.contentInset = padding;

            column.headerCellStyle.textAlignment = NSTextAlignmentCenter;

            

            cellStyle = [[SDataGridCellStyle alloc] init];

            cellStyle.font = font;

            cellStyle.contentInset = padding;

            cellStyle.textAlignment = NSTextAlignmentCenter;

            column.cellStyle = cellStyle;

            [_shinobiDataGrid addColumn:column];

            

            // *************************************

            // Location column

            // *************************************

            column = [[SDataGridColumn alloc] initWithTitle:@“Unit”];

            column.editable = NO;

            column.width = @70;

            column.headerCellStyle.contentInset = padding;

            column.headerCellStyle.textAlignment = NSTextAlignmentCenter;

            

            cellStyle = [[SDataGridCellStyle alloc] init];

            cellStyle.font = font;

            cellStyle.contentInset = padding;

            cellStyle.textAlignment = NSTextAlignmentCenter;

            column.cellStyle = cellStyle;

            [_shinobiDataGrid addColumn:column];

            

            // *************************************

            // Location column

            // *************************************

            column = [[SDataGridColumn alloc] initWithTitle:@“Qty Ordered”];

            column.editable = YES;

            column.width = @85;

            column.headerCellStyle.contentInset = padding;

            column.headerCellStyle.textAlignment = NSTextAlignmentCenter;

            

            cellStyle = [[SDataGridCellStyle alloc] init];

            cellStyle.font = font;

            cellStyle.contentInset = padding;

            cellStyle.textAlignment = NSTextAlignmentCenter;

            column.cellStyle = cellStyle;

            [_shinobiDataGrid addColumn:column];

            

            // *************************************

            // Location column

            // *************************************

            column = [[SDataGridColumn alloc] initWithTitle:@“Qty Shipped”];

            column.editable = NO;

            column.width = @83;

            column.headerCellStyle.contentInset = padding;

            column.headerCellStyle.textAlignment = NSTextAlignmentCenter;

            

            cellStyle = [[SDataGridCellStyle alloc] init];

            cellStyle.font = font;

            cellStyle.contentInset = padding;

            cellStyle.textAlignment = NSTextAlignmentCenter;

            column.cellStyle = cellStyle;

            [_shinobiDataGrid addColumn:column];

            

            // *************************************

            // Location column

            // *************************************

            column = [[SDataGridColumn alloc] initWithTitle:@“Weight”];

            column.editable = NO;

            column.width = @80;

            column.headerCellStyle.contentInset = padding;

            column.headerCellStyle.textAlignment = NSTextAlignmentCenter;

            

            cellStyle = [[SDataGridCellStyle alloc] init];

            cellStyle.font = font;

            cellStyle.contentInset = padding;

            cellStyle.textAlignment = NSTextAlignmentCenter;

            column.cellStyle = cellStyle;

            [_shinobiDataGrid addColumn:column];

            

            // *************************************

            // Location column

            // *************************************

            column = [[SDataGridColumn alloc] initWithTitle:@“Qty Rcvd”];

            column.editable = YES;

            column.width = @55;

            column.headerCellStyle.contentInset = padding;

            column.headerCellStyle.textAlignment = NSTextAlignmentCenter;

            // column.cellType=[QtyReceivedCell class];

            cellStyle = [[SDataGridCellStyle alloc] init];

            cellStyle.font = font;

            cellStyle.contentInset = padding;

            cellStyle.textAlignment = NSTextAlignmentCenter;

            column.cellStyle = cellStyle;

            [_shinobiDataGrid addColumn:column];

            

            // *************************************

            // Location column

            // *************************************

            column = [[SDataGridColumn alloc] initWithTitle:@“Reason Code”];

            column.editable = NO;

            column.width = @86;

            column.headerCellStyle.contentInset = padding;

            column.headerCellStyle.textAlignment = NSTextAlignmentCenter;

            

            cellStyle = [[SDataGridCellStyle alloc] init];

            cellStyle.font = font;

            cellStyle.contentInset = padding;

            cellStyle.textAlignment = NSTextAlignmentCenter;

            column.cellStyle = cellStyle;

            [_shinobiDataGrid addColumn:column];

            

            // *************************************

            // Location column

            // *************************************

            column = [[SDataGridColumn alloc] initWithTitle:@“Net”];

            column.editable = NO;

            column.width = @65;

            column.headerCellStyle.contentInset = padding;

            column.headerCellStyle.textAlignment = NSTextAlignmentCenter;

            

            cellStyle = [[SDataGridCellStyle alloc] init];

            cellStyle.font = font;

            cellStyle.contentInset = padding;

            cellStyle.textAlignment = NSTextAlignmentCenter;

            column.cellStyle = cellStyle;

            [_shinobiDataGrid addColumn:column];

            

            // *************************************

            // Location STATUS

            // *************************************

            column = [[SDataGridColumn alloc] initWithTitle:@“Status”];

            column.editable = NO;

            column.width = @65;

            column.headerCellStyle.contentInset = padding;

            column.headerCellStyle.textAlignment = NSTextAlignmentCenter;

            

            cellStyle = [[SDataGridCellStyle alloc] init];

            cellStyle.font = font;

            cellStyle.contentInset = padding;

            cellStyle.textAlignment = NSTextAlignmentCenter;

            column.cellStyle = cellStyle;

            [_shinobiDataGrid addColumn:column];

            

            _shinobiDataGrid.canReorderRows=NO;

            

            

            _shinobiDataGrid.delegate = self;

            

            

            // add to the view

            

            //

            _data=[selfcreateGroupProduct];

            _sortedData=[PIMMGlobalssortArray:_datasortBy:@“groupName”];

            _shinobiDataGrid.dataSource=self;

            //_sortedData = [NSArray arrayWithArray:_data];

            

            

            [self.view addSubview:_shinobiDataGrid];

            

        }

        -(NSUInteger )numberOfSectionsInShinobiDataGrid:(ShinobiDataGrid *)grid

        {

            return _sortedData.count;

        }

        -(NSString *)shinobiDataGrid:(ShinobiDataGrid *)grid titleForHeaderInSection:(NSInteger)section

        {

            OrderGroup *group=(OrderGroup *)_sortedData[section];

            

            return group.groupName;

        }

        -(NSArray *)createGroupProduct

        {

            NSMutableArray *groupProducts=[[NSMutableArray alloc]init];

            _data=[ProductGroupDataSourcegetOrderDetail:globDeliveryDictionary];

            

            NSMutableSet *products=[[NSMutableSet alloc]init];

            for (OrderDetailProduct *product in _data) {

                [products addObject:product.GroupName];

            }

            

            //create the groups

            

            for (NSString *groupName in products) {

                

                OrderGroup *ordergroup=[[OrderGroup alloc]init];

                ordergroup.groupName=groupName;

                

                NSPredicate *predicate=[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {

                    OrderDetailProduct *product=(OrderDetailProduct *)evaluatedObject;

                    return [product.GroupName isEqualToString:groupName];

                }];

                ordergroup.groups=[_data filteredArrayUsingPredicate:predicate];

                [groupProducts addObject:ordergroup];

            }

            return groupProducts;

            

        }

        -(void)reProcessGroupProduct

        {

            

            NSMutableArray *arrayOfProducts=[[NSMutableArray alloc]init];

            NSDictionary *stopGroupProductInfo=[[NSDictionary alloc]init];

            stopGroupProductInfo=[[globDeliveryDictionary objectForKey:@“StopProductInfo”]objectForKey:@“StopProductDetail”];

            

            

            NSInteger coolerCounter=0;

            NSInteger coolerRcvd=0;

            NSInteger coolerActualReceived=0;

            

            NSMutableArray *arrayLocationCooler=[[NSMutableArray alloc]init];

            CGFloat coolerWeight=0.0;

            BOOL cooler=NO;

            

            NSInteger freezerCounter=0;

            NSInteger freezerRcvd=0;

            NSInteger freezerActualRcvd=0;

            NSMutableArray *arrayLocationFreezer=[[NSMutableArray alloc]init];

            CGFloat freezerWeight=0.0;

            BOOL freezer=NO;

            

            NSInteger dryCounter=0;

            NSInteger dryRcvd=0;

            NSInteger dryActualRcvd=0;

            NSMutableArray *arrayLocationDry=[[NSMutableArray alloc]init];

            CGFloat dryWeight=0.0;

            BOOL dry=NO;

            

            NSInteger produceCounter=0;

            NSInteger produceRcvd=0;

            NSInteger produceActualRcvd=0;

            NSMutableArray *arrayLocationProduce=[[NSMutableArray alloc]init];

            CGFloat produceWeight=0.0;

            BOOL produce=NO;

            

            

            NSInteger unMonitoredCounter=0;

            NSInteger unMonitoredRcvd=0;

            NSInteger unMonitoredActualRcvd=0;

            NSMutableArray *arrayLocationunMonitored=[[NSMutableArray alloc]init];

            CGFloat unMonitoredWeight=0.0;

            BOOL unMonitored=NO;

            

            

            NSInteger totalLineItems=0;

            NSInteger totalUnits=0;

            NSInteger totalUnitsReceived=0;

            CGFloat totalWeight=0.0;

            NSInteger totalPallets=0;

            

            

            for (id x in stopGroupProductInfo ) {

                

                

                if ([[x valueForKey:@“Group”]isEqualToString:@“Un-Monitored”]) {

                    

                    

                    NSString *strLocation=[NSString stringWithFormat:@"%@",[x valueForKey:@“Location”]];

                    if (![strLocation isEqual:[NSNull null]]) {

                        [arrayLocationunMonitored addObject:strLocation];

                    }

                    

                    NSString *rcvd=[NSString stringWithFormat:@"%@",[x valueForKey:@“QuantityOrdered”]];

                    unMonitoredRcvd=unMonitoredRcvd+[rcvd integerValue];

                    

                    unMonitoredCounter=unMonitoredCounter+1;

                    

                  

                    

                    NSString *actualRcvd=[NSString stringWithFormat:@"%@",[x valueForKey:@“QuantityReceived”]];

                    unMonitoredActualRcvd=unMonitoredActualRcvd+[actualRcvd integerValue];

                    

                    

                    NSString *unitWeight=[NSString stringWithFormat:@"%@",[x valueForKey:@“UnitWeight”]];

                    CGFloat totalWeight=[unitWeight floatValue]*[actualRcvd floatValue];

                    NSString *strTotalWeight=[NSString stringWithFormat:@"%.2f", totalWeight];

                    [x setObject:strTotalWeight forKey:@“TotalWeight”];

                 

                    unMonitoredWeight=unMonitoredWeight+totalWeight;

                    

                    unMonitored=YES;

                }

                

                

                if ([[x valueForKey:@“Group”]isEqualToString:@“Chilled”]) {

                    

                    

                    NSString *strLocation=[NSString stringWithFormat:@"%@",[x valueForKey:@“Location”]];

                    if (![strLocation isEqual:[NSNull null]]) {

                        [arrayLocationCooler addObject:strLocation];

                    }

                    NSString *rcvd=[NSString stringWithFormat:@"%@",[x valueForKey:@“QuantityOrdered”]];

                    coolerRcvd=coolerRcvd+[rcvd integerValue];

                    

                    

                    

                    coolerCounter=coolerCounter+1;

                    

                    NSString *actualRcvd=[NSString stringWithFormat:@"%@",[x valueForKey:@“QuantityReceived”]];

                    coolerActualReceived=coolerActualReceived+[actualRcvd integerValue];

                    

                    

                    NSString *unitWeight=[NSString stringWithFormat:@"%@",[x valueForKey:@“UnitWeight”]];

                    CGFloat totalWeight=[unitWeight floatValue]*[actualRcvd floatValue];

                    NSString *strTotalWeight=[NSString stringWithFormat:@"%.2f", totalWeight];

                    [x setObject:strTotalWeight forKey:@“TotalWeight”];

                    

                   

                    coolerWeight=coolerWeight+totalWeight;

                    

                    cooler=YES;

                }

                

                if ([[x valueForKey:@“Group”]isEqualToString:@“Frozen”]) {

                    

                    

                    NSString *strLocation=[NSString stringWithFormat:@"%@",[x valueForKey:@“Location”]];

                    if (![strLocation isEqual:[NSNull null]]) {

                        [arrayLocationFreezer addObject:strLocation];

                    }

                    

                    NSString *rcvd=[NSString stringWithFormat:@"%@",[x valueForKey:@“QuantityOrdered”]];

                    freezerRcvd=freezerRcvd+[rcvd integerValue];

                    

                    freezerCounter=freezerCounter+1;

                    

                    NSString *actualRcvd=[NSString stringWithFormat:@"%@",[x valueForKey:@“QuantityReceived”]];

                    freezerActualRcvd=freezerActualRcvd+[actualRcvd integerValue];

                    

                    NSString *unitWeight=[NSString stringWithFormat:@"%@",[x valueForKey:@“UnitWeight”]];

                    CGFloat totalWeight=[unitWeight floatValue]*[actualRcvd floatValue];

                    NSString *strTotalWeight=[NSString stringWithFormat:@"%.2f", totalWeight];

                    [x setObject:strTotalWeight forKey:@“TotalWeight”];

                    

                            freezerWeight=freezerWeight+totalWeight;

                    

                    

                    

                    freezer=YES;

                    

                }

                

                

                if ([[x valueForKey:@“Group”]isEqualToString:@“Produce”]) {

                    produceCounter=produceCounter+1;

                    

                    NSString *strLocation=[NSString stringWithFormat:@"%@",[x valueForKey:@“Location”]];

                    if (![strLocation isEqual:[NSNull null]]) {

                        [arrayLocationProduce addObject:strLocation];

                    }

                    

                    NSString *rcvd=[NSString stringWithFormat:@"%@",[x valueForKey:@“QuantityOrdered”]];

                    produceRcvd=produceRcvd+[rcvd integerValue];

                    

                    

                    NSString *actualRcvd=[NSString stringWithFormat:@"%@",[x valueForKey:@“QuantityReceived”]];

                    produceActualRcvd=produceActualRcvd+[actualRcvd integerValue];

                    

                    NSString *unitWeight=[NSString stringWithFormat:@"%@",[x valueForKey:@“UnitWeight”]];

                    CGFloat totalWeight=[unitWeight floatValue]*[actualRcvd floatValue];

                    NSString *strTotalWeight=[NSString stringWithFormat:@"%.2f", totalWeight];

                    [x setObject:strTotalWeight forKey:@“TotalWeight”];

                   

                    produceWeight=produceWeight+totalWeight;

                    produce=YES;

                    

                }

                if ([[x valueForKey:@“Group”]isEqualToString:@“Dry”]||[[x valueForKey:@“Group”]isEqualToString:@“Ambient”]||[[x valueForKey:@“Group”]isEqualToString:@“Room Temperature”]) {

                    

                    NSString *strLocation=[NSString stringWithFormat:@"%@",[x valueForKey:@“Location”]];

                    if (![strLocation isEqual:[NSNull null]]) {

                        [arrayLocationDry addObject:strLocation];

                    }

                    

                    

                    dryCounter=dryCounter+1;

               

                    NSString *rcvd=[NSString stringWithFormat:@"%@",[x valueForKey:@“QuantityOrdered”]];

                    dryRcvd=dryRcvd+[rcvd integerValue];

                

                    

                    NSString *actualRcvd=[NSString stringWithFormat:@"%@",[x valueForKey:@“QuantityReceived”]];

                    dryActualRcvd=dryActualRcvd+[actualRcvd integerValue];

                    

                    NSString *unitWeight=[NSString stringWithFormat:@"%@",[x valueForKey:@“UnitWeight”]];

                    CGFloat totalWeight=[unitWeight floatValue]*[actualRcvd floatValue];

                    NSString *strTotalWeight=[NSString stringWithFormat:@"%.2f", totalWeight];

                    [x setObject:strTotalWeight forKey:@“TotalWeight”];

                    

                   

                    dryWeight=dryWeight+totalWeight;

                    dry=YES;

                    

                    

                }

                

                totalLineItems=coolerCounter+dryCounter+produceCounter+freezerCounter+unMonitoredCounter;

                totalUnits=coolerRcvd+dryRcvd+produceRcvd+freezerRcvd+unMonitoredRcvd;

                totalUnitsReceived=coolerActualReceived+dryActualRcvd+freezerActualRcvd+unMonitoredActualRcvd+produceActualRcvd;

                totalWeight=coolerWeight+dryWeight+produceWeight+freezerWeight+unMonitoredWeight;

            }

            

            if (unMonitored==YES) {

                

                NSMutableArray *unMonitoredLocation=[[NSMutableArray alloc]init];

                [unMonitoredLocation addObjectsFromArray:[[NSSet setWithArray:arrayLocationunMonitored]allObjects]];

                

                

                NSMutableDictionary *groupDict=[[NSMutableDictionaryalloc]init];

                [groupDict setValue:@“Un-Monitored” forKey:@“GroupName”];

                

                [groupDict setValue:[NSString stringWithFormat:@"%d",unMonitoredCounter]  forKey:@“LineItems”];

                

                [groupDict setValue:[NSString stringWithFormat:@"%d",unMonitoredRcvd]  forKey:@“TotalUnits”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",unMonitoredActualRcvd]  forKey:@“TotalUnitsReceived”];

                [groupDict setValue:@“NO”  forKey:@“TempTaken”];

                [groupDict setValue:[NSString stringWithFormat:@"%.2f",unMonitoredWeight]  forKey:@“TotalWeight”];

                if ([self checkGroupStatus:@“Un-Monitored”]) {

                    [groupDict setValue:@“YES”  forKey:@“Verified”];

                }

                else

                {

                    [groupDict setValue:@“NO”  forKey:@“Verified”];

                }

                [groupDict setValue:[NSString stringWithFormat:@"%d",[unMonitoredLocation count]] forKey:@“TotalPallets”];

                totalPallets=totalPallets+[unMonitoredLocation count];

                arrayLocationunMonitored=0;

                unMonitoredLocation=0;

                [arrayOfProducts addObject:groupDict];

                

                [[globDeliveryDictionary objectForKey:@“StopProductInfo”] setObject:arrayOfProducts forKey:@“Groups”];

                

            }

            

            

            if (cooler==YES) {

                

                NSMutableArray *coolerLocation=[[NSMutableArray alloc]init];

                [coolerLocation addObjectsFromArray:[[NSSet setWithArray:arrayLocationCooler]allObjects]];

                

                

                NSMutableDictionary *groupDict=[[NSMutableDictionaryalloc]init];

                [groupDict setValue:@“Chilled” forKey:@“GroupName”];

                

                [groupDict setValue:[NSString stringWithFormat:@"%d",coolerCounter]  forKey:@“LineItems”];

                

                [groupDict setValue:[NSString stringWithFormat:@"%d",coolerRcvd]  forKey:@“TotalUnits”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",coolerActualReceived]  forKey:@“TotalUnitsReceived”];

                

                [groupDict setValue:@“NO”  forKey:@“TempTaken”];

                [groupDict setValue:[NSString stringWithFormat:@"%.2f",coolerWeight]  forKey:@“TotalWeight”];

                if ([self checkGroupStatus:@“Chilled”]) {

                    [groupDict setValue:@“YES”  forKey:@“Verified”];

                }

                else

                {

                    [groupDict setValue:@“NO”  forKey:@“Verified”];

                }

                [groupDict setValue:[NSString stringWithFormat:@"%d",[coolerLocation count]] forKey:@“TotalPallets”];

                totalPallets=totalPallets+[coolerLocation count];

                arrayLocationCooler=0;

                coolerLocation=0;

                [arrayOfProducts addObject:groupDict];

                [[globDeliveryDictionary objectForKey:@“StopProductInfo”] setObject:arrayOfProducts forKey:@“Groups”];

                

            }

            if (freezer==YES) {

                NSMutableArray *freezerLocation=[[NSMutableArray alloc]init];

                [freezerLocation addObjectsFromArray:[[NSSet setWithArray:arrayLocationFreezer]allObjects]];

                

                

                

                NSMutableDictionary *groupDict=[[NSMutableDictionaryalloc]init];

                [groupDict setValue:@“Frozen” forKey:@“GroupName”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",freezerCounter]  forKey:@“LineItems”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",freezerRcvd]  forKey:@“TotalUnits”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",freezerActualRcvd]  forKey:@“TotalUnitsReceived”];

                [groupDict setValue:@“NO”  forKey:@“TempTaken”];

                [groupDict setValue:[NSString stringWithFormat:@"%.2f",freezerWeight]  forKey:@“TotalWeight”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",[freezerLocation count]] forKey:@“TotalPallets”];

                if ([self checkGroupStatus:@“Frozen”]) {

                    [groupDict setValue:@“YES”  forKey:@“Verified”];

                }

                else

                {

                    [groupDict setValue:@“NO”  forKey:@“Verified”];

                }

                totalPallets=totalPallets+[freezerLocation count];

                arrayLocationCooler=0;

                freezerLocation=0;

                

                [arrayOfProducts addObject:groupDict];

                [[globDeliveryDictionary objectForKey:@“StopProductInfo”] setObject:arrayOfProducts forKey:@“Groups”];

                

            }

            if (produce==YES)

            {

                

                NSMutableArray *produceLocation=[[NSMutableArray alloc]init];

                [produceLocation addObjectsFromArray:[[NSSet setWithArray:arrayLocationProduce]allObjects]];

                

                NSMutableDictionary *groupDict=[[NSMutableDictionaryalloc]init];

                [groupDict setValue:@“Produce” forKey:@“GroupName”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",produceCounter]  forKey:@“LineItems”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",produceRcvd]  forKey:@“TotalUnits”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",produceActualRcvd]  forKey:@“TotalUnitsReceived”];

                [groupDict setValue:@“NO”  forKey:@“TempTaken”];

                [groupDict setValue:[NSString stringWithFormat:@"%.2f",produceWeight]  forKey:@“TotalWeight”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",[produceLocation count]] forKey:@“TotalPallets”];

                if ([self checkGroupStatus:@“Produce”]) {

                    [groupDict setValue:@“YES”  forKey:@“Verified”];

                }

                else

                {

                    [groupDict setValue:@“NO”  forKey:@“Verified”];

                }

                totalPallets=totalPallets+[produceLocation count];

                produceLocation=0;

                arrayLocationProduce=0;

                [arrayOfProducts addObject:groupDict];

                [[globDeliveryDictionary objectForKey:@“StopProductInfo”] setObject:arrayOfProducts forKey:@“Groups”];

            }

            if (dry==YES)

            {

                NSMutableArray *dryLocation=[[NSMutableArray alloc]init];

                [dryLocation addObjectsFromArray:[[NSSet setWithArray:arrayLocationDry]allObjects]];

                

                NSMutableDictionary *groupDict=[[NSMutableDictionaryalloc]init];

                [groupDict setValue:@“Dry” forKey:@“GroupName”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",dryCounter]  forKey:@“LineItems”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",dryRcvd]  forKey:@“TotalUnits”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",dryActualRcvd]  forKey:@“TotalUnitsReceived”];

                [groupDict setValue:@“NO”  forKey:@“TempTaken”];

                [groupDict setValue:[NSString stringWithFormat:@"%.2f",dryWeight]  forKey:@“TotalWeight”];

                [groupDict setValue:[NSString stringWithFormat:@"%d",[dryLocation count]] forKey:@“TotalPallets”];

                [groupDict setValue:@“NO”  forKey:@“Verified”];

                if ([self checkGroupStatus:@“Dry”]) {

                    [groupDict setValue:@“YES”  forKey:@“Verified”];

                }

                else

                {

                    [groupDict setValue:@“NO”  forKey:@“Verified”]; 

                }

                    

                totalPallets=totalPallets+[dryLocation count];

                dryLocation=0;

                arrayLocationDry=0;

                [arrayOfProducts addObject:groupDict];

                [[globDeliveryDictionary objectForKey:@“StopProductInfo”] setObject:arrayOfProducts forKey:@“Groups”];

            }

            

            

            [[globDeliveryDictionaryobjectForKey:@“StopProductInfo”]setObject:[NSStringstringWithFormat:@"%d",totalLineItems] forKey:@“TotalLineItems”];

            [[globDeliveryDictionary objectForKey:@“StopProductInfo”]setObject:[NSString stringWithFormat:@"%d",totalUnitsReceived] forKey:@“TotalUnits”];

            [[globDeliveryDictionaryobjectForKey:@“StopProductInfo”]setObject:[NSStringstringWithFormat:@"%d",totalUnits] forKey:@“TotalUnitsReceived”];

            [[globDeliveryDictionaryobjectForKey:@“StopProductInfo”]setObject:[NSStringstringWithFormat:@"%d",totalPallets] forKey:@“TotalPallets”];

            [[globDeliveryDictionaryobjectForKey:@“StopProductInfo”]setObject:[NSStringstringWithFormat:@"%.2f",totalWeight] forKey:@“TotalWeight”];

            

            

            

            NSString *strDeliveryJsonUpdate=[globDeliveryDictionary JSONString];

            

            [ipimm updateFormWithFormId:globDeliveryCurrentFormID FormBody:strDeliveryJsonUpdate Callback:^(PimmForm *pimmForm, NSError *err, int requestIdentifier) {

                

                

                if(err != Nil)

                {

                    NSLog(@“Error Domain:%@”, [err domain]);

                    NSLog(@“Error Code:%d”, [err code]);

                    NSLog(@“error code %@”, err.description);

                    NSLog(@“Error Description:%@”, [err localizedDescription]);

                    if([err code] == NSURLErrorNotConnectedToInternet ||

                       [err code] == NSURLErrorCannotConnectToHost ||

                       [err code] == NSURLErrorCannotFindHost ||

                       [err code] == NSURLErrorNetworkConnectionLost)

                    {

                        

                        

                        [ipimmaddorDeleteRequestFromPendingQueue:TRUEWithRequestIdentifier:requestIdentifier];

                    }

                }

                

                

                

            }];

        }

-(BOOL)checkGroupStatus: (NSString *)groupType

        {

            

            NSMutableArray *arrayOfProducts=[[NSMutableArray alloc]init];

            NSDictionary *stopGroupProductInfoDetails=[[NSDictionary alloc]init];

            stopGroupProductInfoDetails=[[globDeliveryDictionary objectForKey:@“StopProductInfo”]objectForKey:@“StopProductDetail”];

            

            NSMutableArray *chilledArray=[[NSMutableArray alloc]init];

            for (int x =0; x< [stopGroupProductInfoDetails count]; x++) {

                if ([[[stopGroupProductInfoDetails valueForKey:@“Group”]objectAtIndex:x]isEqualToString:groupType]) {

                    NSString *strStatus=[[stopGroupProductInfoDetails valueForKey:@“Status”]objectAtIndex:x];

                    [chilledArray addObject:strStatus];

                }

            }

        if([chilledArray containsObject:@“Pending”])

        {

            return NO;

        }

        else

        {

            return YES;

        }

        

          

        

        }

        - (void)didReceiveMemoryWarning

        {

            [superdidReceiveMemoryWarning];

            // Dispose of any resources that can be recreated.

        }

        -(void)viewWillAppear:(BOOL)animated

        {

            self.view.superview.bounds = _realBounds;

        }

        -(IBAction)btnClose:(id)sender

        {

            

            [selfreProcessGroupProduct];

           // [self saveRowRecord];

            [[NSNotificationCenterdefaultCenter] postNotificationName:@"refreshTable"object: nil];

            [selfdismissViewControllerAnimated:YEScompletion:nil];

        }

        -(IBAction)btnExit:(id)sender

        {

            [selfdismissViewControllerAnimated:YEScompletion:nil];

        }

        -(IBAction)btnCheck:(id)sender

        {

               }

        @end