コード例 #1
0
        public async Task <string> CreateInvTransfer(int?FromWhId, int?ToWhId, List <InvTransfer> InvTrans)
        {
            InvTransferHeader NewHeader = new InvTransferHeader
            {
                FromWhId        = FromWhId,
                ToWhId          = ToWhId,
                TransferStatus  = SD.Approved,
                CreatedById     = GetLoggedInUserId(),
                CreatedDateTime = DateTime.Now
            };

            _db.InvTransferHeader.Add(NewHeader);
            await _db.SaveChangesAsync();

            int ProdId;

            foreach (var InvTr in InvTrans)
            {
                ProdId = _db.ProdInfo.FirstOrDefault(pro => pro.ProdCode == InvTr.ProdInfo.ProdCode).Id;

                // Check if the warehouse has enough qty of that product
                bool CheckQty = CheckQtyInWh(ProdId, FromWhId ?? 0, InvTr.Qty);
                if (CheckQty == false)
                {
                    _db.InvTransferHeader.Remove(NewHeader);
                    await _db.SaveChangesAsync();

                    return("Error! لايوجد كمية كافية للمادة: " + InvTr.ProdInfo.ProdCode);
                }


                InvTransfer InvTransfer = new InvTransfer
                {
                    HeaderId = NewHeader.Id,
                    ProdId   = ProdId,
                    Qty      = InvTr.Qty,
                    Note     = InvTr.Note
                };

                //Decrease Qty of From Warehouse
                ChangeStockQty(ProdId, FromWhId ?? 0, InvTr.Qty, "Out");

                // Increase Qty of To Warehouse
                ChangeStockQty(ProdId, ToWhId ?? 0, InvTr.Qty, "In");
                _db.InvTransfer.Add(InvTransfer);

                // Create Inv Transaction with Negative Qty of From Warehouse
                CreateInvTransaction(ProdId, FromWhId ?? 0, InvTr.Qty * -1, SD.TransferOut);

                // Create Inv Transaction with Positive Qty of To Warehouse
                CreateInvTransaction(ProdId, ToWhId ?? 0, InvTr.Qty, SD.TransferIn);
            }

            await _db.SaveChangesAsync();

            return("تمت عملية التحويل");
        }
コード例 #2
0
        // This function is called when a Store User wants to transfer from a warehouse to another. So this function
        // Will create a request for the Admin to approve

        public async Task <string> CreateInvTransferRequest(int?FromWhId, int?ToWhId, string Note, List <InvTransfer> InvTrans, IHubContext <NotificationHub> hubContext)
        {
            // Create Transfer Header

            InvTransferHeader NewHeader = new InvTransferHeader
            {
                FromWhId        = FromWhId,
                ToWhId          = ToWhId,
                TransferStatus  = SD.Pending,
                CreatedById     = GetLoggedInUserId(),
                CreatedDateTime = DateTime.Now,
                Note            = Note
            };

            _db.InvTransferHeader.Add(NewHeader);
            await _db.SaveChangesAsync();

            int ProdId;

            foreach (var InvTr in InvTrans)
            {
                ProdId = _db.ProdInfo.FirstOrDefault(pro => pro.ProdCode == InvTr.ProdInfo.ProdCode).Id;

                // Check if the warehouse has enough qty of that product
                bool CheckQty = CheckQtyInWh(ProdId, FromWhId ?? 0, InvTr.Qty);
                if (CheckQty == false)
                {
                    _db.InvTransferHeader.Remove(NewHeader);
                    await _db.SaveChangesAsync();

                    return("Error! لايوجد كمية كافية للمادة: " + InvTr.ProdInfo.ProdCode);
                }


                InvTransfer InvTransfer = new InvTransfer
                {
                    HeaderId = NewHeader.Id,
                    ProdId   = ProdId,
                    Qty      = InvTr.Qty,
                    Note     = InvTr.Note
                };
                _db.InvTransfer.Add(InvTransfer);
            }

            await _db.SaveChangesAsync();

            await hubContext.Clients.All.SendAsync("NewTransferRequest", _db.Warehouse.Find(NewHeader.FromWhId).WhName, _db.Warehouse.Find(NewHeader.ToWhId).WhName, NewHeader.Id);

            return("تم ارسال طلب التحويل بنجاح");
            //return "Request Added Successfully";
        }