Ejemplo n.º 1
0
        public HttpResponseMessage UpdateReceivingReceiptItem(Entities.TrnReceivingReceiptItem objReceivingReceiptItem, String id, String RRId)
        {
            try
            {
                var currentUser = from d in db.MstUsers
                                  where d.UserId == User.Identity.GetUserId()
                                  select d;

                if (currentUser.Any())
                {
                    var currentUserId   = currentUser.FirstOrDefault().Id;
                    var currentBranchId = currentUser.FirstOrDefault().BranchId;

                    var userForms = from d in db.MstUserForms
                                    where d.UserId == currentUserId &&
                                    d.SysForm.FormName.Equals("ReceivingReceiptDetail")
                                    select d;

                    if (userForms.Any())
                    {
                        if (userForms.FirstOrDefault().CanEdit)
                        {
                            var receivingReceipt = from d in db.TrnReceivingReceipts
                                                   where d.Id == Convert.ToInt32(RRId)
                                                   select d;

                            if (receivingReceipt.Any())
                            {
                                if (!receivingReceipt.FirstOrDefault().IsLocked)
                                {
                                    var receivingReceiptItem = from d in db.TrnReceivingReceiptItems
                                                               where d.Id == Convert.ToInt32(id)
                                                               select d;

                                    if (receivingReceiptItem.Any())
                                    {
                                        var purchaseOrders = from d in db.TrnPurchaseOrders
                                                             where d.Id == Convert.ToInt32(objReceivingReceiptItem.POId) &&
                                                             d.BranchId == currentBranchId &&
                                                             d.IsLocked == true
                                                             select d;

                                        if (purchaseOrders.Any())
                                        {
                                            var item = from d in db.MstArticles
                                                       where d.Id == objReceivingReceiptItem.ItemId &&
                                                       d.ArticleTypeId == 1 &&
                                                       d.IsLocked == true
                                                       select d;

                                            if (item.Any())
                                            {
                                                var conversionUnit = from d in db.MstArticleUnits
                                                                     where d.ArticleId == objReceivingReceiptItem.ItemId &&
                                                                     d.UnitId == objReceivingReceiptItem.UnitId &&
                                                                     d.MstArticle.IsLocked == true
                                                                     select d;

                                                if (conversionUnit.Any())
                                                {
                                                    Decimal baseQuantity = objReceivingReceiptItem.Quantity * 1;
                                                    if (conversionUnit.FirstOrDefault().Multiplier > 0)
                                                    {
                                                        baseQuantity = objReceivingReceiptItem.Quantity * (1 / conversionUnit.FirstOrDefault().Multiplier);
                                                    }

                                                    Decimal amount   = objReceivingReceiptItem.Quantity * objReceivingReceiptItem.Cost;
                                                    Decimal baseCost = amount - objReceivingReceiptItem.VATAmount;
                                                    if (baseQuantity > 0)
                                                    {
                                                        baseCost = (amount - objReceivingReceiptItem.VATAmount) / baseQuantity;
                                                    }

                                                    var updateReceivingReceiptItem = receivingReceiptItem.FirstOrDefault();
                                                    updateReceivingReceiptItem.RRId           = Convert.ToInt32(RRId);
                                                    updateReceivingReceiptItem.POId           = objReceivingReceiptItem.POId;
                                                    updateReceivingReceiptItem.ItemId         = objReceivingReceiptItem.ItemId;
                                                    updateReceivingReceiptItem.Particulars    = objReceivingReceiptItem.Particulars;
                                                    updateReceivingReceiptItem.UnitId         = objReceivingReceiptItem.UnitId;
                                                    updateReceivingReceiptItem.Quantity       = objReceivingReceiptItem.Quantity;
                                                    updateReceivingReceiptItem.Cost           = objReceivingReceiptItem.Cost;
                                                    updateReceivingReceiptItem.Amount         = amount;
                                                    updateReceivingReceiptItem.VATId          = objReceivingReceiptItem.VATId;
                                                    updateReceivingReceiptItem.VATPercentage  = objReceivingReceiptItem.VATPercentage;
                                                    updateReceivingReceiptItem.VATAmount      = ComputeVATAmount(objReceivingReceiptItem.Quantity * objReceivingReceiptItem.Cost, objReceivingReceiptItem.VATPercentage, objReceivingReceiptItem.VATId);
                                                    updateReceivingReceiptItem.WTAXId         = objReceivingReceiptItem.WTAXId;
                                                    updateReceivingReceiptItem.WTAXPercentage = objReceivingReceiptItem.WTAXPercentage;
                                                    updateReceivingReceiptItem.WTAXAmount     = ComputeWTAXAmount(objReceivingReceiptItem.Quantity * objReceivingReceiptItem.Cost, objReceivingReceiptItem.VATPercentage, objReceivingReceiptItem.WTAXPercentage, objReceivingReceiptItem.WTAXId);
                                                    updateReceivingReceiptItem.BranchId       = objReceivingReceiptItem.BranchId;
                                                    updateReceivingReceiptItem.BaseUnitId     = item.FirstOrDefault().UnitId;
                                                    updateReceivingReceiptItem.BaseQuantity   = baseQuantity;
                                                    updateReceivingReceiptItem.BaseCost       = baseCost;

                                                    db.SubmitChanges();

                                                    Decimal receivingReceiptItemTotalAmount = 0;

                                                    if (receivingReceipt.FirstOrDefault().TrnReceivingReceiptItems.Any())
                                                    {
                                                        receivingReceiptItemTotalAmount = receivingReceipt.FirstOrDefault().TrnReceivingReceiptItems.Sum(d => d.Amount);
                                                    }

                                                    var updateReceivingReceiptAmount = receivingReceipt.FirstOrDefault();
                                                    updateReceivingReceiptAmount.Amount = receivingReceiptItemTotalAmount;
                                                    db.SubmitChanges();

                                                    return(Request.CreateResponse(HttpStatusCode.OK));
                                                }
                                                else
                                                {
                                                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "The selected item has no unit conversion."));
                                                }
                                            }
                                            else
                                            {
                                                return(Request.CreateResponse(HttpStatusCode.BadRequest, "The selected item was not found in the server."));
                                            }
                                        }
                                        else
                                        {
                                            return(Request.CreateResponse(HttpStatusCode.BadRequest, "There are no purchase order transactions in the current branch."));
                                        }
                                    }
                                    else
                                    {
                                        return(Request.CreateResponse(HttpStatusCode.NotFound, "This receiving receipt item detail is no longer exist in the server."));
                                    }
                                }
                                else
                                {
                                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "You cannot edit and update receiving receipt item if the current receiving receipt detail is locked."));
                                }
                            }
                            else
                            {
                                return(Request.CreateResponse(HttpStatusCode.NotFound, "These current receiving receipt details are not found in the server. Please add new receiving receipt first before proceeding."));
                            }
                        }
                        else
                        {
                            return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sorry. You have no rights to edit and update receiving receipt item in this receiving receipt detail page."));
                        }
                    }
                    else
                    {
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sorry. You have no access in this receiving receipt detail page."));
                    }
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "Theres no current user logged in."));
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Something's went wrong from the server."));
            }
        }
Ejemplo n.º 2
0
        public HttpResponseMessage AddReceivingReceiptItem(Entities.TrnReceivingReceiptItem objReceivingReceiptItem, String RRId)
        {
            try
            {
                var currentUser = from d in db.MstUsers
                                  where d.UserId == User.Identity.GetUserId()
                                  select d;

                if (currentUser.Any())
                {
                    var currentUserId   = currentUser.FirstOrDefault().Id;
                    var currentBranchId = currentUser.FirstOrDefault().BranchId;

                    var userForms = from d in db.MstUserForms
                                    where d.UserId == currentUserId &&
                                    d.SysForm.FormName.Equals("ReceivingReceiptDetail")
                                    select d;

                    if (userForms.Any())
                    {
                        if (userForms.FirstOrDefault().CanAdd)
                        {
                            var receivingReceipt = from d in db.TrnReceivingReceipts
                                                   where d.Id == Convert.ToInt32(RRId)
                                                   select d;

                            if (receivingReceipt.Any())
                            {
                                if (!receivingReceipt.FirstOrDefault().IsLocked)
                                {
                                    var purchaseOrders = from d in db.TrnPurchaseOrders
                                                         where d.Id == Convert.ToInt32(objReceivingReceiptItem.POId) &&
                                                         d.BranchId == currentBranchId &&
                                                         d.IsLocked == true
                                                         select d;

                                    if (purchaseOrders.Any())
                                    {
                                        var item = from d in db.MstArticles
                                                   where d.Id == objReceivingReceiptItem.ItemId &&
                                                   d.ArticleTypeId == 1 &&
                                                   d.IsLocked == true
                                                   select d;

                                        if (item.Any())
                                        {
                                            var conversionUnit = from d in db.MstArticleUnits
                                                                 where d.ArticleId == objReceivingReceiptItem.ItemId &&
                                                                 d.UnitId == objReceivingReceiptItem.UnitId &&
                                                                 d.MstArticle.IsLocked == true
                                                                 select d;

                                            if (conversionUnit.Any())
                                            {
                                                Decimal baseQuantity = objReceivingReceiptItem.Quantity * 1;
                                                if (conversionUnit.FirstOrDefault().Multiplier > 0)
                                                {
                                                    baseQuantity = objReceivingReceiptItem.Quantity * (1 / conversionUnit.FirstOrDefault().Multiplier);
                                                }

                                                Decimal amount     = objReceivingReceiptItem.Amount;
                                                Decimal VATAmount  = objReceivingReceiptItem.VATAmount;
                                                Decimal WTAXAmount = objReceivingReceiptItem.WTAXAmount;

                                                Decimal baseCost = 0;
                                                if (baseQuantity > 0)
                                                {
                                                    baseCost = (amount - VATAmount + WTAXAmount) / baseQuantity;
                                                }

                                                Data.TrnReceivingReceiptItem newReceivingReceiptItem = new Data.TrnReceivingReceiptItem
                                                {
                                                    RRId           = Convert.ToInt32(RRId),
                                                    POId           = objReceivingReceiptItem.POId,
                                                    ItemId         = objReceivingReceiptItem.ItemId,
                                                    Particulars    = objReceivingReceiptItem.Particulars,
                                                    UnitId         = objReceivingReceiptItem.UnitId,
                                                    Quantity       = objReceivingReceiptItem.Quantity,
                                                    Cost           = objReceivingReceiptItem.Cost,
                                                    Amount         = objReceivingReceiptItem.Amount,
                                                    VATId          = objReceivingReceiptItem.VATId,
                                                    VATPercentage  = objReceivingReceiptItem.VATPercentage,
                                                    VATAmount      = objReceivingReceiptItem.VATAmount,
                                                    WTAXId         = objReceivingReceiptItem.WTAXId,
                                                    WTAXPercentage = objReceivingReceiptItem.WTAXPercentage,
                                                    WTAXAmount     = objReceivingReceiptItem.WTAXAmount,
                                                    BranchId       = objReceivingReceiptItem.BranchId,
                                                    BaseUnitId     = item.FirstOrDefault().UnitId,
                                                    BaseQuantity   = baseQuantity,
                                                    BaseCost       = baseCost
                                                };

                                                db.TrnReceivingReceiptItems.InsertOnSubmit(newReceivingReceiptItem);
                                                db.SubmitChanges();

                                                Decimal receivingReceiptItemTotalAmount = 0;
                                                if (receivingReceipt.FirstOrDefault().TrnReceivingReceiptItems.Any())
                                                {
                                                    receivingReceiptItemTotalAmount = receivingReceipt.FirstOrDefault().TrnReceivingReceiptItems.Sum(d => d.Amount);
                                                }

                                                var updateReceivingReceiptAmount = receivingReceipt.FirstOrDefault();
                                                updateReceivingReceiptAmount.Amount = receivingReceiptItemTotalAmount;
                                                db.SubmitChanges();

                                                String newObject = auditTrail.GetObjectString(newReceivingReceiptItem);
                                                auditTrail.InsertAuditTrail(currentUser.FirstOrDefault().Id, GetType().Name, MethodBase.GetCurrentMethod().Name, "NA", newObject);

                                                return(Request.CreateResponse(HttpStatusCode.OK));
                                            }
                                            else
                                            {
                                                return(Request.CreateResponse(HttpStatusCode.BadRequest, "The selected item has no unit conversion."));
                                            }
                                        }
                                        else
                                        {
                                            return(Request.CreateResponse(HttpStatusCode.BadRequest, "The selected item was not found in the server."));
                                        }
                                    }
                                    else
                                    {
                                        return(Request.CreateResponse(HttpStatusCode.BadRequest, "There are no purchase order transactions in the current branch."));
                                    }
                                }
                                else
                                {
                                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "You cannot add new receiving receipt item if the current receiving receipt detail is locked."));
                                }
                            }
                            else
                            {
                                return(Request.CreateResponse(HttpStatusCode.NotFound, "These current receiving receipt details are not found in the server. Please add new receiving receipt first before proceeding."));
                            }
                        }
                        else
                        {
                            return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sorry. You have no rights to add new receiving receipt item in this receiving receipt detail page."));
                        }
                    }
                    else
                    {
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sorry. You have no access in this receiving receipt detail page."));
                    }
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "Theres no current user logged in."));
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Something's went wrong from the server."));
            }
        }