private async Task <string> ConfirmedOrder() { try { string retval = string.Empty; ExchangeDocNo = string.Empty; if (string.IsNullOrEmpty(_signature64str)) { try { var signedImageStream = await CustomerSignaturePad.GetImageStreamAsync(SignatureImageFormat.Png); if (signedImageStream is MemoryStream) { var signatureMemoryStream = signedImageStream as MemoryStream; byte[] bytes = signatureMemoryStream.ToArray(); _signature64str = Convert.ToBase64String(bytes); } } catch (ArgumentException) { _signature64str = string.Empty; } } DataManager manager = new DataManager(); retval = await manager.SaveSQLite_SalesHeader(new SalesHeader { ID = head.ID, DocumentNo = head.DocumentNo, DocumentDate = head.DocumentDate, BillToCustomer = head.BillToCustomer, BillToName = head.BillToName, SellToCustomer = head.SellToCustomer, SellToName = head.SellToName, TotalAmount = head.TotalAmount, GSTAmount = GSTAmount, NetAmount = NetAmount, Status = "Released", PaymentMethod = string.Empty, StrSignature = _signature64str, DocumentType = head.DocumentType, Note = head.Note, Comment = CommentEntry.Text, IsVoid = isvoid, IsSync = "false", SyncDateTime = string.Empty, ExternalDocNo = head.ExternalDocNo }); if (retval == "Success") { if (App.gDocType == "SO") { if (!string.IsNullOrEmpty(ExchangeDocNo)) { ObservableCollection <SalesLine> lines = new ObservableCollection <SalesLine>(); lines = manager.GetSalesLinesbyDocNo(ExchangeDocNo); decimal new_amt = lines.Sum(x => x.LineAmount); retval = manager.UpdateSalesHeaderTotalAmount(new_amt, ExchangeDocNo, lines); } } else { ObservableCollection <SalesLine> lines = new ObservableCollection <SalesLine>(); lines = manager.GetSalesLinesbyDocNo(DocumentNo); foreach (SalesLine ln in lines) { VanItem ckitm = new VanItem(); ckitm = await manager.GetSQLite_VanItembyItemNo(ln.ItemNo); if (ckitm != null) { decimal vanqty = ckitm.ReturnQty + ln.Quantity; await manager.UpdateSQLite_VanItem(ln.ItemNo, vanqty); } else { Item itm = new Item(); itm = manager.GetSQLite_ItembyItemNo(ln.ItemNo); VanItem vitm = new VanItem() { ID = 0, ItemNo = ln.ItemNo, Description = ln.Description, BarCode = itm.BarCode, BaseUOM = ln.UnitofMeasurementCode, UnitPrice = itm.UnitPrice, Str64Img = itm.Str64Img, LoadQty = itm.LoadQty, SoldQty = itm.SoldQty, ReturnQty = ln.Quantity, BadQty = itm.BadQty, UnloadQty = itm.UnloadQty, Balance = itm.Balance }; await manager.SaveSQLite_VanItem(vitm); } } } } return(retval); } catch (Exception ex) { // UserDialogs.Instance.ShowError(ex.Message.ToString(), 3000); return(ex.Message.ToString()); } }
void ConfirmLoad() { try { string retmsg = string.Empty; DataManager manager = new DataManager(); RequestHeader recHeader = new RequestHeader(); List <RequestLine> reclines = new List <RequestLine>(); Device.BeginInvokeOnMainThread(() => UserDialogs.Instance.ShowLoading("Loading", MaskType.Black)); Task.Run(async() => { recHeader = await manager.GetSQLite_RequestHeadebyRequestNo(HDRequestNo); if (recHeader != null) { reclines.Clear(); reclines = recItems.Where(x => x.HeaderEntryNo == recHeader.EntryNo).ToList(); if (reclines != null) { if (reclines.Count > 0) { string retStatus = retmsg; foreach (RequestLine ln in reclines) { // Step 3 -> Update loaded items quantity Inventory //Get current load Qty for loop item decimal ivnLoadQty = await manager.GetSQLite_ItemLoadedQty(ln.ItemNo); ivnLoadQty = ivnLoadQty + ln.PickQty; retmsg = await manager.UpdateSQLite_LoadInventory(ln.ItemNo, ivnLoadQty); RequestLine line = new RequestLine() { ID = ln.ID, EntryNo = ln.EntryNo, HeaderEntryNo = ln.HeaderEntryNo, ItemNo = ln.ItemNo, ItemDesc = ln.ItemDesc, QtyperBag = ln.QtyperBag, NoofBags = ln.NoofBags, Quantity = ln.Quantity, PickQty = ln.PickQty, LoadQty = ln.PickQty, SoldQty = ln.SoldQty, UnloadQty = ln.UnloadQty, UomCode = ln.UomCode, VendorNo = ln.VendorNo, RequestNo = ln.RequestNo, UserID = ln.UserID, InHouse = ln.InHouse, IsSync = "loaded", SyncDateTime = string.Empty }; // Step 2 -> Update Request Line to mobile database string retval = await manager.SaveSQLite_RequestLine(line); VanItem ckitm = new VanItem(); ckitm = await manager.GetSQLite_VanItembyItemNo(ln.ItemNo); if (ckitm != null) { decimal vanqty = ckitm.LoadQty + ln.PickQty; retmsg = await manager.UpdateSQLite_VanItem(ln.ItemNo, vanqty); } else { Item itm = new Item(); itm = manager.GetSQLite_ItembyItemNo(ln.ItemNo); VanItem vitm = new VanItem() { ID = 0, ItemNo = itm.ItemNo, Description = itm.Description, BarCode = itm.BarCode, BaseUOM = ln.UomCode, UnitPrice = itm.UnitPrice, Str64Img = itm.Str64Img, LoadQty = ln.PickQty, SoldQty = 0, ReturnQty = 0, BadQty = 0, UnloadQty = 0, Balance = 0 }; retmsg = await manager.SaveSQLite_VanItem(vitm); } } manager = new DataManager(); string rethead = await manager.SaveSQLite_RequestHeader(new RequestHeader { ID = recHeader.ID, EntryNo = recHeader.EntryNo, SalesPersonCode = recHeader.SalesPersonCode, RequestNo = recHeader.RequestNo, RequestDate = recHeader.RequestDate, IsSync = recHeader.IsSync, SyncDateTime = recHeader.SyncDateTime, CurStatus = "loaded" }); retmsg = "Success"; } } else { retmsg = "No requested lines to load!"; } } else { retmsg = "No data to load!"; } }).ContinueWith(result => Device.BeginInvokeOnMainThread(() => { UserDialogs.Instance.HideLoading(); if (!string.IsNullOrEmpty(retmsg)) { if (retmsg == "Success") { UserDialogs.Instance.ShowSuccess(retmsg, 3000); Navigation.PushAsync(new MainPage(9)); } else { UserDialogs.Instance.ShowError(retmsg, 3000); } } })); } catch (OperationCanceledException ex) { Acr.UserDialogs.UserDialogs.Instance.HideLoading(); //IsLoading = false; UserDialogs.Instance.ShowError(ex.Message.ToString(), 3000); } catch (Exception ex) { UserDialogs.Instance.HideLoading(); //IsLoading = false; UserDialogs.Instance.ShowError(ex.Message.ToString(), 3000); } }