Esempio n. 1
0
        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());
            }
        }
Esempio n. 2
0
        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);
            }
        }