예제 #1
0
        private GenericValidator ValidateTransferNote(TransferNoteObject transferNote)
        {
            var gVal = new GenericValidator();

            if (transferNote == null)
            {
                gVal.Code  = -1;
                gVal.Error = message_Feedback.Fatal_Error;
                return(gVal);
            }

            if (transferNote.TotalAmount < 1)
            {
                gVal.Code  = -1;
                gVal.Error = message_Feedback.Derived_Total_Cost_Error;
                return(gVal);
            }

            if (!transferNote.TransferNoteItemObjects.Any())
            {
                gVal.Code  = -1;
                gVal.Error = "Please review the selected products and try again.";
                return(gVal);
            }

            gVal.Code = 5;
            return(gVal);
        }
예제 #2
0
        public ActionResult EditTransferNote(TransferNoteObject transferNote)
        {
            var gVal = new GenericValidator();

            try
            {
                var valStatus = ValidateTransferNote(transferNote);
                if (valStatus.Code < 1)
                {
                    gVal.Code  = 0;
                    gVal.Error = valStatus.Error;
                    return(Json(gVal, JsonRequestBehavior.AllowGet));
                }

                var userInfo = GetSignedOnUser();
                if (userInfo == null || userInfo.UserProfile.Id < 1)
                {
                    gVal.Code  = -1;
                    gVal.Error = "Your session has timed out.";
                    return(Json(gVal, JsonRequestBehavior.AllowGet));
                }

                var k = new TransferNoteServices().UpdateTransferNote(transferNote);
                if (k < 1)
                {
                    gVal.Error = message_Feedback.Update_Failure;
                    gVal.Code  = 0;
                    return(Json(gVal, JsonRequestBehavior.AllowGet));
                }

                gVal.Code          = k;
                gVal.ReferenceCode = transferNote.TransferNoteNumber;
                gVal.Error         = message_Feedback.Update_Success;
                return(Json(gVal, JsonRequestBehavior.AllowGet));
            }
            catch
            {
                gVal.Code  = -1;
                gVal.Error = message_Feedback.Process_Failed;
                return(Json(gVal, JsonRequestBehavior.AllowGet));
            }
        }
예제 #3
0
 public long UpdateTransferNote(TransferNoteObject transferNote)
 {
     return(_transferNoteRepository.UpdateTransferNote(transferNote));
 }
예제 #4
0
 public long AddTransferNote(TransferNoteObject transferNote, out string transferNoteNumber)
 {
     return(_transferNoteRepository.AddTransferNote(transferNote, out transferNoteNumber));
 }
예제 #5
0
        public ActionResult AddTransferNote(TransferNoteObject transferNote)
        {
            var gVal = new GenericValidator();

            try
            {
                var valStatus = ValidateTransferNote(transferNote);
                if (valStatus.Code < 1)
                {
                    gVal.Code  = -1;
                    gVal.Error = valStatus.Error;
                    return(Json(gVal, JsonRequestBehavior.AllowGet));
                }

                var userInfo = GetSignedOnUser();
                if (userInfo == null || userInfo.UserProfile.Id < 1)
                {
                    gVal.Code  = -1;
                    gVal.Error = "Your session has timed out.";
                    return(Json(gVal, JsonRequestBehavior.AllowGet));
                }

                if (!transferNote.TransferNoteItemObjects.Any())
                {
                    gVal.Code  = -1;
                    gVal.Error = message_Feedback.Sold_Item_List_Error;
                    return(Json(gVal, JsonRequestBehavior.AllowGet));
                }


                if (transferNote.TransferNoteItemObjects.Any(y => y.TotalQuantityRaised < 1 || y.Rate < 1 || y.TotalAmountRaised < 1))
                {
                    gVal.Code  = -1;
                    gVal.Error = "Please review the selected product(s) and try again";
                    return(Json(gVal, JsonRequestBehavior.AllowGet));
                }

                transferNote.Status            = (int)TransfereNoteStatus.Pending;
                transferNote.GeneratedByUserId = userInfo.UserProfile.Id;
                transferNote.DateGenerated     = DateTime.Now;
                var transferNoteNumber = "";

                var k = new TransferNoteServices().AddTransferNote(transferNote, out transferNoteNumber);
                if (k < 1)
                {
                    gVal.Error = message_Feedback.Insertion_Failure;
                    gVal.Code  = -1;
                    return(Json(gVal, JsonRequestBehavior.AllowGet));
                }

                gVal.Code          = k;
                gVal.Error         = message_Feedback.Insertion_Success;
                gVal.Date          = transferNote.DateGenerated.ToString("dd/MM/yyyy");
                gVal.ReferenceCode = transferNoteNumber;
                gVal.Time          = transferNote.DateGenerated.ToString("hh:mm:ss tt");
                return(Json(gVal, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                gVal.Code  = -1;
                gVal.Error = message_Feedback.Process_Failed;
                return(Json(gVal, JsonRequestBehavior.AllowGet));
            }
        }
예제 #6
0
        public long AddTransferNote(TransferNoteObject transferNote, out string transferNoteNumber)
        {
            long pId = 0;

            try
            {
                if (transferNote == null || transferNote.TransferNoteItemObjects == null || !transferNote.TransferNoteItemObjects.Any())
                {
                    transferNoteNumber = "";
                    return(-2);
                }

                using (var db = _db)
                {
                    var orderEntity = ModelCrossMapper.Map <TransferNoteObject, TransferNote>(transferNote);
                    if (orderEntity == null || orderEntity.GeneratedByUserId < 1)
                    {
                        transferNoteNumber = "";
                        return(-2);
                    }

                    var code           = DateTime.Now.Year + DateTime.Now.Month.ToString();
                    var similarBatches = db.TransferNotes.Where(u => u.TransferNoteNumber.Contains(code)).ToList();
                    if (similarBatches.Any())
                    {
                        var tempList = new List <float>();
                        similarBatches.ForEach(x =>
                        {
                            float t;
                            var sprs = float.TryParse(x.TransferNoteNumber, out t);
                            if (sprs && t > 0)
                            {
                                tempList.Add(t);
                            }
                        });

                        if (tempList.Any())
                        {
                            var recent = tempList.OrderByDescending(k => k).ToList()[0];
                            orderEntity.TransferNoteNumber = (recent + 1).ToString(CultureInfo.InvariantCulture);
                        }

                        else
                        {
                            orderEntity.TransferNoteNumber = code + "1";
                        }
                    }

                    else
                    {
                        orderEntity.TransferNoteNumber = code + "1";
                    }

                    transferNoteNumber = orderEntity.TransferNoteNumber;

                    var processeTransferNote = db.TransferNotes.Add(orderEntity);
                    db.SaveChanges();
                    pId = processeTransferNote.Id;

                    transferNote.TransferNoteItemObjects.ToList().ForEach(it =>
                    {
                        it.TransferNoteId = pId;

                        var stocks = db.StoreItemStocks.Where(i => i.StoreItemStockId == it.StoreItemStockId).ToList();
                        if (!stocks.Any())
                        {
                            return;
                        }

                        var stock = stocks[0];

                        var itemEntity = ModelCrossMapper.Map <TransferNoteItemObject, TransferNoteItem>(it);
                        if (itemEntity != null && itemEntity.TransferNoteId > 0)
                        {
                            db.TransferNoteItems.Add(itemEntity);
                            db.SaveChanges();

                            stock.QuantityInStock -= it.TotalQuantityRaised;
                            db.Entry(stock).State  = EntityState.Modified;
                            db.SaveChanges();
                        }
                    });

                    return(pId);
                }
            }

            catch (Exception e)
            {
                if (pId > 0)
                {
                    using (var db = _db)
                    {
                        var list = db.TransferNoteItems.Where(g => g.TransferNoteId == pId).ToList();
                        if (list.Any())
                        {
                            list.ForEach(d =>
                            {
                                db.TransferNoteItems.Remove(d);
                                db.SaveChanges();
                            });
                        }

                        var items = db.TransferNotes.Where(g => g.Id == pId).ToList();
                        if (items.Any())
                        {
                            var item = items[0];
                            db.TransferNotes.Remove(item);
                            db.SaveChanges();
                        }
                    }
                }

                ErrorLogger.LogError(e.StackTrace, e.Source, e.Message);
                transferNoteNumber = "";
                return(0);
            }
        }
예제 #7
0
        public long UpdateTransferNote(TransferNoteObject transferNote)
        {
            try
            {
                if (transferNote == null || transferNote.TransferNoteItemObjects == null || !transferNote.TransferNoteItemObjects.Any())
                {
                    return(-2);
                }

                using (var db = _db)
                {
                    var ius = db.TransferNoteItems.Where(t => t.TransferNoteId == transferNote.Id).ToList();
                    if (!ius.Any())
                    {
                        return(-2);
                    }

                    var orderEntities = db.TransferNotes.Where(t => t.Id == transferNote.Id).ToList();

                    if (!orderEntities.Any())
                    {
                        return(-2);
                    }

                    var orderEntity = orderEntities[0];

                    orderEntity.TotalAmount    = transferNote.TotalAmount;
                    orderEntity.TargetOutletId = transferNote.TargetOutletId;
                    orderEntity.SourceOutletId = transferNote.SourceOutletId;

                    var items = transferNote.TransferNoteItemObjects.ToList();

                    db.Entry(orderEntity).State = EntityState.Modified;
                    db.SaveChanges();

                    items.ForEach(it =>
                    {
                        if (it.Id < 1)
                        {
                            it.TransferNoteId = transferNote.Id;
                            var itemEntity    = ModelCrossMapper.Map <TransferNoteItemObject, TransferNoteItem>(it);
                            if (itemEntity != null && itemEntity.TransferNoteId > 0)
                            {
                                db.TransferNoteItems.Add(itemEntity);
                                db.SaveChanges();
                            }
                        }
                        else
                        {
                            var refItem = ius.Find(f => f.Id == it.Id);
                            if (refItem != null && refItem.Id > 0)
                            {
                                var stocks = db.StoreItemStocks.Where(i => i.StoreItemStockId == it.StoreItemStockId).ToList();
                                if (!stocks.Any())
                                {
                                    return;
                                }

                                var stock = stocks[0];

                                if (refItem.TotalQuantityRaised.Equals(it.TotalQuantityRaised))
                                {
                                    return;
                                }
                                stock.QuantityInStock += refItem.TotalQuantityRaised;
                                db.Entry(stock).State  = EntityState.Modified;
                                db.SaveChanges();

                                refItem.TotalQuantityTransfered = it.TotalQuantityTransfered;
                                refItem.TotalQuantityRaised     = it.TotalQuantityRaised;
                                refItem.TotalAmountRaised       = it.TotalAmountRaised;
                                refItem.TotalAmountTransfered   = it.TotalAmountTransfered;
                                refItem.Rate = it.Rate;

                                db.Entry(refItem).State = EntityState.Modified;
                                db.SaveChanges();

                                stock.QuantityInStock -= it.TotalQuantityRaised;
                                db.Entry(stock).State  = EntityState.Modified;
                                db.SaveChanges();
                            }
                        }
                    });

                    return(orderEntity.Id);
                }
            }
            catch (DbEntityValidationException e)
            {
                var str = "";
                foreach (var eve in e.EntityValidationErrors)
                {
                    str += string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                         eve.Entry.Entity.GetType().Name, eve.Entry.State) + "\n";
                    foreach (var ve in eve.ValidationErrors)
                    {
                        str += string.Format("- Property: \"{0}\", Error: \"{1}\"",
                                             ve.PropertyName, ve.ErrorMessage) + " \n";
                    }
                }
                ErrorLogger.LogError(e.StackTrace, e.Source, str);
                return(0);
            }
        }