예제 #1
0
        public long SaveSupply(Supply supply, string userId)
        {
            var amount = (supply.Price * supply.Quantity);

            var supplyDTO = new DTO.SupplyDTO()
            {
                Quantity         = supply.Quantity,
                SupplyDate       = supply.SupplyDate,
                SupplyNumber     = supply.SupplyNumber,
                BranchId         = supply.BranchId,
                SupplierId       = supply.SupplierId,
                Amount           = amount,
                TruckNumber      = supply.TruckNumber,
                Used             = supply.Used,
                SupplyId         = supply.SupplyId,
                WeightNoteNumber = supply.WeightNoteNumber,
                MoistureContent  = supply.MoistureContent,
                NormalBags       = supply.NormalBags,
                BagsOfStones     = supply.BagsOfStones,
                Price            = supply.Price,
                IsPaid           = supply.IsPaid,
                StatusId         = supply.StatusId,
                CreatedOn        = supply.CreatedOn,
                TimeStamp        = supply.TimeStamp,
                CreatedBy        = supply.CreatedBy,
                Deleted          = supply.Deleted,
                StoreId          = supply.StoreId,
            };

            var supplyId = this._dataService.SaveSupply(supplyDTO, userId);

            var storeMaizeStock = new StoreMaizeStock()
            {
                SupplyId = supplyId,
                Quantity = supply.Quantity,
                StoreId  = supply.StoreId,
                BranchId = supply.BranchId,
                SectorId = Convert.ToInt64(sectorId),
            };

            SaveStoreMaizeStock(storeMaizeStock, true);
            var notes           = "Maize supply";
            var accountActivity = new AccountTransactionActivity()
            {
                AspNetUserId = supply.SupplierId,

                Amount = amount,
                Notes  = notes,

                Action               = "+",
                BranchId             = supply.BranchId,
                TransactionSubTypeId = Convert.ToInt64(supplyTransactionSubTypeId),
                SectorId             = Convert.ToInt64(sectorId),
                Deleted              = supply.Deleted,
                CreatedBy            = userId,
            };
            var accountActivityId = this._accountTransactionActivityService.SaveAccountTransactionActivity(accountActivity, userId);

            return(supplyId);
        }
        public long SaveAccountTransactionActivity(AccountTransactionActivityDTO accountTransactionActivityDTO, string userId)
        {
            long accountTransactionActivityId = 0;

            if (accountTransactionActivityDTO.AccountTransactionActivityId == 0)
            {
                var accountTransactionActivity = new AccountTransactionActivity()
                {
                    AspNetUserId         = accountTransactionActivityDTO.AspNetUserId,
                    CasualWorkerId       = accountTransactionActivityDTO.CasualWorkerId,
                    Amount               = accountTransactionActivityDTO.Amount,
                    StartAmount          = accountTransactionActivityDTO.StartAmount,
                    Notes                = accountTransactionActivityDTO.Notes,
                    Action               = accountTransactionActivityDTO.Action,
                    Balance              = accountTransactionActivityDTO.Balance,
                    SupplyId             = accountTransactionActivityDTO.SupplyId,
                    TransactionSubTypeId = accountTransactionActivityDTO.TransactionSubTypeId,
                    BranchId             = accountTransactionActivityDTO.BranchId,
                    SectorId             = accountTransactionActivityDTO.SectorId,
                    CreatedOn            = DateTime.Now,
                    TimeStamp            = DateTime.Now,
                    CreatedBy            = userId,
                    Deleted              = false,
                };

                this.UnitOfWork.Get <AccountTransactionActivity>().AddNew(accountTransactionActivity);
                this.UnitOfWork.SaveChanges();
                accountTransactionActivityId = accountTransactionActivity.AccountTransactionActivityId;
                return(accountTransactionActivityId);
            }

            else
            {
                var result = this.UnitOfWork.Get <AccountTransactionActivity>().AsQueryable()
                             .FirstOrDefault(e => e.AccountTransactionActivityId == accountTransactionActivityDTO.AccountTransactionActivityId);
                if (result != null)
                {
                    result.Action               = accountTransactionActivityDTO.Action;
                    result.Amount               = accountTransactionActivityDTO.Amount;
                    result.AspNetUserId         = accountTransactionActivityDTO.AspNetUserId;
                    result.CasualWorkerId       = accountTransactionActivityDTO.CasualWorkerId;
                    result.StartAmount          = accountTransactionActivityDTO.StartAmount;
                    result.Balance              = accountTransactionActivityDTO.Balance;
                    result.Notes                = accountTransactionActivityDTO.Notes;
                    result.SupplyId             = accountTransactionActivityDTO.SupplyId;
                    result.TransactionSubTypeId = accountTransactionActivityDTO.TransactionSubTypeId;
                    result.BranchId             = accountTransactionActivityDTO.BranchId;
                    result.SectorId             = accountTransactionActivityDTO.SectorId;
                    result.TimeStamp            = DateTime.Now;
                    result.Deleted              = accountTransactionActivityDTO.Deleted;
                    result.DeletedBy            = accountTransactionActivityDTO.DeletedBy;
                    result.DeletedOn            = accountTransactionActivityDTO.DeletedOn;

                    this.UnitOfWork.Get <AccountTransactionActivity>().Update(result);
                    this.UnitOfWork.SaveChanges();
                }
                return(accountTransactionActivityDTO.AccountTransactionActivityId);
            }
        }
예제 #3
0
        public long MakeSupplyPayment(MultipleSupplies model, AccountTransactionActivity accountActivity, string userId)
        {
            long   accountActivityId = 0;
            string supplierId        = "";

            if (model.Supplies.Any())
            {
                foreach (var supply in model.Supplies)
                {
                    supplierId = supply.SupplierId;
                    var supplyObject = new SupplyDTO()
                    {
                        SupplyId         = supply.SupplyId,
                        SupplierId       = supply.SupplierId,
                        SupplyNumber     = supply.SupplyNumber,
                        Price            = supply.Price,
                        Amount           = supply.Amount,
                        StoreId          = supply.StoreId,
                        BranchId         = supply.BranchId,
                        SupplyDate       = supply.SupplyDate,
                        TruckNumber      = supply.TruckNumber,
                        WeightNoteNumber = supply.WeightNoteNumber,
                        Used             = supply.Used,
                        IsPaid           = true,
                        StatusId         = supply.StatusId,
                        Deleted          = supply.Deleted,
                        MoistureContent  = supply.MoistureContent,
                        BagsOfStones     = supply.BagsOfStones,
                        NormalBags       = supply.NormalBags,
                        Quantity         = supply.Quantity,
                    };
                    _dataService.SaveSupply(supplyObject, userId);
                }

                UpdateCreditorRecords(supplierId, accountActivity.Amount, userId, accountActivity.BranchId);

                var accountActivityObject = new AccountTransactionActivity()
                {
                    AspNetUserId   = accountActivity.AspNetUserId,
                    CasualWorkerId = accountActivity.CasualWorkerId,
                    Amount         = accountActivity.Amount,
                    Notes          = accountActivity.Notes,
                    AccountTransactionActivityId = accountActivity.AccountTransactionActivityId,
                    Action               = accountActivity.Action,
                    BranchId             = accountActivity.BranchId,
                    TransactionSubTypeId = accountActivity.TransactionSubTypeId,
                    SectorId             = accountActivity.SectorId,
                    Deleted              = accountActivity.Deleted,
                    CreatedBy            = accountActivity.CreatedBy,
                    CreatedOn            = accountActivity.CreatedOn
                };
                accountActivityId = _accountTransactionActivityService.SaveAccountTransactionActivity(accountActivityObject, userId);
            }
            return(accountActivityId);
        }
        public AccountTransactionActivity GetLatestAccountTransactionActivitiesForAParticularCasualWorker(long casualWorkerId)
        {
            AccountTransactionActivity accountTransactionActivity = new AccountTransactionActivity();
            var accountTransactionActivities = this.UnitOfWork.Get <AccountTransactionActivity>().AsQueryable().Where(e => e.CasualWorkerId == casualWorkerId);

            if (accountTransactionActivities.Any())
            {
                accountTransactionActivity = accountTransactionActivities.AsQueryable().OrderByDescending(e => e.CreatedOn).First();
                return(accountTransactionActivity);
            }
            else
            {
                return(accountTransactionActivity);
            }
        }
        public long SaveCasualActivity(CasualActivity casualActivity, string userId)
        {
            var casualActivityDTO = new DTO.CasualActivityDTO()
            {
                CasualActivityId = casualActivity.CasualActivityId,
                BatchId          = casualActivity.BatchId,
                CasualWorkerId   = casualActivity.CasualWorkerId,
                Quantity         = casualActivity.Quantity,
                ActivityId       = casualActivity.ActivityId,
                BranchId         = casualActivity.BranchId,
                Amount           = casualActivity.Amount,
                Notes            = casualActivity.Notes,
                Deleted          = casualActivity.Deleted,
                CreatedBy        = casualActivity.CreatedBy,
                CreatedOn        = casualActivity.CreatedOn,
                SectorId         = casualActivity.SectorId,
            };

            var casualActivityId = this._dataService.SaveCasualActivity(casualActivityDTO, userId);

            var activityBatchCasualDTO = new DTO.ActivityBatchCasualDTO()
            {
                CasualWorkerId = casualActivity.CasualWorkerId,
                BatchId        = casualActivity.BatchId,
                ActivityId     = casualActivity.ActivityId,
                Amount         = casualActivity.Amount,
                CreatedBy      = userId,
            };

            this._dataService.SaveActivityBatchCasual(activityBatchCasualDTO, userId);

            var accountActivityDTO = new AccountTransactionActivity()
            {
                TransactionSubTypeId = casualActivity.TransactionSubTypeId,
                Action         = casualActivity.Action,
                Amount         = casualActivity.Amount,
                Notes          = casualActivity.Notes,
                CasualWorkerId = casualActivity.CasualWorkerId,
                BranchId       = casualActivity.BranchId,
                SectorId       = casualActivity.SectorId,
                Deleted        = casualActivity.Deleted,
                CreatedBy      = casualActivity.CreatedBy,
                CreatedOn      = Convert.ToDateTime(casualActivity.CreatedOn)
            };
            var accountActivityId = _accountTransactionActivityService.SaveAccountTransactionActivity(accountActivityDTO, userId);

            return(casualActivityId);
        }
예제 #6
0
        public AccountTransactionActivity MapEFToModel(EF.Models.AccountTransactionActivity data)
        {
            var accountName = string.Empty;

            if (data.AspNetUser != null)
            {
                accountName = _userService.GetUserFullName(data.AspNetUser);
            }
            else
            {
                accountName = data.CasualWorker.FirstName + ' ' + data.CasualWorker.LastName;
            }

            var accountTransactionActivity = new AccountTransactionActivity()
            {
                AspNetUserId   = data.AspNetUserId,
                CasualWorkerId = data.CasualWorkerId,
                Action         = data.Action,
                StartAmount    = data.StartAmount,
                Balance        = data.Balance,
                Amount         = data.Amount,
                Notes          = data.Notes,
                AccountTransactionActivityId = data.AccountTransactionActivityId,
                BranchId               = data.BranchId,
                BranchName             = data.Branch != null?data.Branch.Name:"",
                SectorId               = data.SectorId,
                SectorName             = data.Sector != null?data.Sector.Name:"",
                TransactionSubTypeId   = data.TransactionSubTypeId,
                TransactionSubTypeName = data.TransactionSubType != null?data.TransactionSubType.Name:"",
                CreatedOn              = data.CreatedOn,
                TimeStamp              = data.TimeStamp,
                Deleted     = data.Deleted,
                CreatedBy   = _userService.GetUserFullName(data.AspNetUser),
                AccountName = accountName,
            };

            return(accountTransactionActivity);
        }
예제 #7
0
        public long MakeSupplyPayment(MultipleSupplies model, AccountTransactionActivity accountActivity, string userId)
        {
            long accountActivityId = 0;
            //long defaultBranchId = 2;
            string supplierId = "";

            if (model.Supplies.Any())
            {
                foreach (var supply in model.Supplies)
                {
                    supplierId = supply.SupplierId;
                    var supplyObject = new SupplyDTO()
                    {
                        SupplyId   = supply.SupplyId,
                        SupplierId = supply.SupplierId,
                        //SupplyNumber = supply.SupplyNumber,
                        Price            = supply.Price,
                        Amount           = supply.Amount,
                        AmountToPay      = supply.AmountToPay,
                        StoreId          = supply.StoreId,
                        BranchId         = supply.BranchId,
                        SupplyDate       = supply.SupplyDate,
                        TruckNumber      = supply.TruckNumber,
                        WeightNoteNumber = supply.WeightNoteNumber,
                        Used             = supply.Used,
                        IsPaid           = true,
                        StatusId         = supply.StatusId,
                        Deleted          = supply.Deleted,
                        MoistureContent  = supply.MoistureContent,
                        BagsOfStones     = supply.BagsOfStones,
                        NormalBags       = supply.NormalBags,
                        Quantity         = supply.Quantity,
                        Offloading       = supply.Offloading,
                    };
                    _dataService.SaveSupply(supplyObject, userId);
                }


                UpdateCreditorRecords(supplierId, accountActivity.Amount, userId);


                var accountActivityObject = new AccountTransactionActivity()
                {
                    AspNetUserId   = accountActivity.AspNetUserId,
                    CasualWorkerId = accountActivity.CasualWorkerId,
                    Amount         = accountActivity.Amount,
                    Notes          = accountActivity.Notes,
                    AccountTransactionActivityId = accountActivity.AccountTransactionActivityId,
                    Action               = accountActivity.Action,
                    BranchId             = accountActivity.BranchId,
                    TransactionSubTypeId = accountActivity.TransactionSubTypeId,
                    SectorId             = accountActivity.SectorId,
                    Deleted              = accountActivity.Deleted,
                    CreatedBy            = accountActivity.CreatedBy,
                    CreatedOn            = accountActivity.CreatedOn
                };
                accountActivityId = _accountTransactionActivityService.SaveAccountTransactionActivity(accountActivityObject, userId);

                if (accountActivity.PaymentModeId == 2)
                {
                    if (accountActivity.BranchId == 0 || accountActivity.BranchId == null)
                    {
                        Cash cash = new Cash()
                        {
                            Amount               = accountActivity.Amount,
                            Notes                = accountActivity.Notes,
                            Action               = accountActivity.Action,
                            BranchId             = Convert.ToInt64(accountActivity.BranchId),
                            TransactionSubTypeId = accountActivity.TransactionSubTypeId,
                            SectorId             = accountActivity.SectorId,
                        };
                        _cashService.SaveApplicationCash(cash, userId);
                    }
                    else
                    {
                        Cash cash = new Cash()
                        {
                            Amount               = accountActivity.Amount,
                            Notes                = accountActivity.Notes,
                            Action               = accountActivity.Action,
                            BranchId             = Convert.ToInt64(accountActivity.BranchId),
                            TransactionSubTypeId = accountActivity.TransactionSubTypeId,
                            SectorId             = accountActivity.SectorId,
                        };
                        _cashService.SaveCash(cash, userId);
                    }
                }
            }
            return(accountActivityId);
        }
예제 #8
0
        public long SaveSupply(Supply supply, string userId)
        {
            double amount = 0, totalBags = 0, offloadingFee = 0, amountToPay = 0;

            amount = (supply.Price * supply.Quantity);

            var supplies = GetAllSuppliesForAParticularSupplier(supply.SupplierId);

            if (supplies.Any())
            {
                foreach (var supplierSupply in supplies)
                {
                    bool equals = supplierSupply.WeightNoteNumber.Equals(supply.WeightNoteNumber, StringComparison.OrdinalIgnoreCase);

                    if (equals)
                    {
                        return(-1);
                    }
                }
            }

            if (supply.Offloading == "NO")
            {
                totalBags     = supply.NormalBags + supply.BagsOfStones;
                offloadingFee = totalBags * (Convert.ToDouble(offloadingRate));
                amountToPay   = amount - offloadingFee;
            }
            else
            {
                amountToPay = amount;
            }
            var supplyDTO = new DTO.SupplyDTO()
            {
                Quantity   = supply.Quantity,
                SupplyDate = supply.SupplyDate,
                //SupplyNumber = supply.SupplyNumber,
                BranchId         = supply.BranchId,
                SupplierId       = supply.SupplierId,
                Amount           = amount,
                TruckNumber      = supply.TruckNumber,
                AmountToPay      = amountToPay,
                Used             = supply.Used,
                SupplyId         = supply.SupplyId,
                WeightNoteNumber = supply.WeightNoteNumber,
                MoistureContent  = supply.MoistureContent,
                NormalBags       = supply.NormalBags,
                BagsOfStones     = supply.BagsOfStones,
                Price            = supply.Price,
                IsPaid           = supply.IsPaid,
                StatusId         = supply.StatusId,
                CreatedOn        = supply.CreatedOn,
                TimeStamp        = supply.TimeStamp,
                CreatedBy        = supply.CreatedBy,
                Deleted          = supply.Deleted,
                StoreId          = supply.StoreId,
                Offloading       = supply.Offloading,
            };

            var supplyId = this._dataService.SaveSupply(supplyDTO, userId);

            var storeMaizeStock = new StoreMaizeStock()
            {
                SupplyId = supplyId,
                Quantity = supply.Quantity,
                StoreId  = supply.StoreId,
                BranchId = supply.BranchId,
                SectorId = Convert.ToInt64(sectorId),
            };

            SaveStoreMaizeStock(storeMaizeStock, true);
            var notes           = "Maize supply";
            var accountActivity = new AccountTransactionActivity()
            {
                AspNetUserId = supply.SupplierId,

                Amount               = amount,
                Notes                = notes,
                Action               = "+",
                BranchId             = supply.BranchId,
                TransactionSubTypeId = Convert.ToInt64(supplyTransactionSubTypeId),
                SectorId             = Convert.ToInt64(sectorId),
                Deleted              = supply.Deleted,
                CreatedBy            = userId,
                SupplyId             = supplyId,
            };
            var accountActivityId = this._accountTransactionActivityService.SaveAccountTransactionActivity(accountActivity, userId);



            var offLoadingNotes           = "Offloading fee";
            var accountActivityOffloading = new AccountTransactionActivity()
            {
                AspNetUserId = supply.SupplierId,

                Amount               = offloadingFee,
                Notes                = offLoadingNotes,
                Action               = "-",
                BranchId             = supply.BranchId,
                TransactionSubTypeId = Convert.ToInt64(offLoadingTransactionSubTypeId),
                SectorId             = Convert.ToInt64(sectorId),
                Deleted              = supply.Deleted,
                CreatedBy            = userId,
                SupplyId             = supplyId,
            };
            var accountActivityOffloadingId = this._accountTransactionActivityService.SaveAccountTransactionActivity(accountActivityOffloading, userId);



            return(supplyId);
        }
        public long Save(AccountTransactionActivity model)
        {
            var accountTransactionActivityId = _accountTransactionActivityService.SaveAccountTransactionActivity(model, userId);

            return(accountTransactionActivityId);
        }
예제 #10
0
        public long SaveAccountTransactionActivity(AccountTransactionActivity accountTransactionActivity, string userId)
        {
            long   accountTransactionActivityId = 0;
            double startAmount = 0;
            double OldBalance  = 0;
            double NewBalance  = 0;

            if (accountTransactionActivity.AspNetUserId != null)
            {
                OldBalance  = GetBalanceForLastAccountAccountTransactionActivity(accountTransactionActivity.AspNetUserId);
                startAmount = OldBalance;
            }
            else
            {
                OldBalance  = GetBalanceForLastAccountAccountTransactionActivity(Convert.ToString(accountTransactionActivity.CasualWorkerId));
                startAmount = OldBalance;
            }

            if (accountTransactionActivity.Action == "-")
            {
                NewBalance = OldBalance - accountTransactionActivity.Amount;
            }
            else
            {
                NewBalance = OldBalance + accountTransactionActivity.Amount;
            }

            var accountTransactionActivityDTO = new DTO.AccountTransactionActivityDTO()
            {
                AspNetUserId   = accountTransactionActivity.AspNetUserId,
                CasualWorkerId = accountTransactionActivity.CasualWorkerId,
                Amount         = accountTransactionActivity.Amount,
                StartAmount    = startAmount,
                Balance        = NewBalance,
                Notes          = accountTransactionActivity.Notes,
                AccountTransactionActivityId = accountTransactionActivity.AccountTransactionActivityId,
                Action               = accountTransactionActivity.Action,
                BranchId             = accountTransactionActivity.BranchId,
                TransactionSubTypeId = accountTransactionActivity.TransactionSubTypeId,
                SectorId             = accountTransactionActivity.SectorId,
                Deleted              = accountTransactionActivity.Deleted,
                CreatedBy            = accountTransactionActivity.CreatedBy,
                CreatedOn            = accountTransactionActivity.CreatedOn
            };

            accountTransactionActivityId = this._dataService.SaveAccountTransactionActivity(accountTransactionActivityDTO, userId);

            long          transactionTypeId       = 0;
            List <string> transactionSubTypeNames = new List <string>();
            var           transactionSubType      = _transactionSubTypeService.GetTransactionSubType(accountTransactionActivity.TransactionSubTypeId);

            if (transactionSubType != null)
            {
                transactionTypeId = transactionSubType.TransactionTypeId;
                if (transactionSubType.Name == "Credit" || transactionSubType.Name == "Advance" || accountTransactionActivity.PaymentMode == "Credit")
                {
                    var debtorDTO = new DTO.DebtorDTO()
                    {
                        AspNetUserId   = accountTransactionActivity.AspNetUserId,
                        Action         = false,
                        Amount         = accountTransactionActivity.Amount,
                        CasualWorkerId = accountTransactionActivity.CasualWorkerId,
                        BranchId       = Convert.ToInt64(accountTransactionActivity.BranchId),
                        SectorId       = accountTransactionActivity.SectorId,
                        Deleted        = accountTransactionActivity.Deleted,
                        CreatedBy      = accountTransactionActivity.CreatedBy,
                        CreatedOn      = accountTransactionActivity.CreatedOn
                    };
                    var debtorId = _debtorDataService.SaveDebtor(debtorDTO, userId);
                }
                else if (transactionSubType.Name == "Deposit" || transactionSubType.Name == "maize purchase" || transactionSubType.Name == "Casual labour")
                {
                    var creditorDTO = new DTO.CreditorDTO()
                    {
                        AspNetUserId   = accountTransactionActivity.AspNetUserId,
                        Action         = false,
                        Amount         = accountTransactionActivity.Amount,
                        CasualWorkerId = accountTransactionActivity.CasualWorkerId,
                        BranchId       = Convert.ToInt64(accountTransactionActivity.BranchId),
                        SectorId       = accountTransactionActivity.SectorId,
                        Deleted        = accountTransactionActivity.Deleted,
                        CreatedBy      = accountTransactionActivity.CreatedBy,
                        CreatedOn      = accountTransactionActivity.CreatedOn
                    };
                    var creditorId = _creditorDataService.SaveCreditor(creditorDTO, userId);
                }
                else if (transactionSubType.Name == "OffLoading")
                {
                    double offloadingAmount = 0;
                    if (accountTransactionActivity.Amount > 0)
                    {
                        offloadingAmount = accountTransactionActivity.Amount * -1;
                    }

                    var creditorDTO = new DTO.CreditorDTO()
                    {
                        AspNetUserId   = accountTransactionActivity.AspNetUserId,
                        Action         = false,
                        Amount         = offloadingAmount,
                        CasualWorkerId = accountTransactionActivity.CasualWorkerId,
                        BranchId       = Convert.ToInt64(accountTransactionActivity.BranchId),
                        SectorId       = accountTransactionActivity.SectorId,
                        Deleted        = accountTransactionActivity.Deleted,
                        CreatedBy      = accountTransactionActivity.CreatedBy,
                        CreatedOn      = accountTransactionActivity.CreatedOn
                    };
                    var creditorId = _creditorDataService.SaveCreditor(creditorDTO, userId);
                }
                var transaction = new TransactionDTO()
                {
                    BranchId             = Convert.ToInt64(accountTransactionActivity.BranchId),
                    SectorId             = accountTransactionActivity.SectorId,
                    Amount               = accountTransactionActivity.Amount,
                    TransactionSubTypeId = accountTransactionActivity.TransactionSubTypeId,
                    TransactionTypeId    = transactionTypeId,
                    CreatedOn            = DateTime.Now,
                    TimeStamp            = DateTime.Now,
                    CreatedBy            = userId,
                    Deleted              = false,
                };
                var transactionId = _transactionDataService.SaveTransaction(transaction, userId);
            }
            return(accountTransactionActivityId);
        }
예제 #11
0
        public long SaveDelivery(Delivery delivery, string userId)
        {
            long         deliveryId   = 0;
            MakeDelivery makeDelivery = new MakeDelivery();



            if (delivery.OrderId != 0)
            {
                //var order = _orderService.GetOrder(delivery.OrderId);
                if (delivery.ProductId == 2)
                {
                    var deliveryDTO = new DTO.DeliveryDTO()
                    {
                        StoreId              = delivery.StoreId,
                        CustomerId           = delivery.CustomerId,
                        DeliveryCost         = delivery.DeliveryCost,
                        OrderId              = delivery.OrderId,
                        VehicleNumber        = delivery.VehicleNumber,
                        BranchId             = delivery.BranchId,
                        SectorId             = delivery.SectorId,
                        PaymentModeId        = delivery.PaymentModeId,
                        BatchId              = delivery.BatchId,
                        Price                = delivery.Price,
                        Quantity             = delivery.Quantity,
                        ProductId            = delivery.ProductId,
                        Amount               = delivery.Amount,
                        Location             = delivery.Location,
                        TransactionSubTypeId = delivery.TransactionSubTypeId,
                        MediaId              = delivery.MediaId,
                        DeliveryId           = delivery.DeliveryId,
                        DriverName           = delivery.DriverName,
                        DriverNIN            = delivery.DriverNIN,
                        Deleted              = delivery.Deleted,
                        CreatedBy            = delivery.CreatedBy,
                        CreatedOn            = delivery.CreatedOn,
                    };
                    makeDelivery = MakeBrandDeliveryRecord(delivery.StoreId, delivery, userId);
                    if (makeDelivery.StockReduced && (makeDelivery.OrderQuantityBalance == 0 || makeDelivery.OrderQuantityBalance > 0))
                    {
                        deliveryId = this._dataService.SaveDelivery(deliveryDTO, userId);


                        //StringBuilder sb = new StringBuilder();
                        //string strNewPath = System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["MbaleReceipt"]);
                        //using (StreamReader sr = new StreamReader(strNewPath))
                        //{
                        //    while (!sr.EndOfStream)
                        //    {
                        //        sb.Append(sr.ReadLine());
                        //    }
                        //}

                        //string body = sb.ToString().Replace("#CUSTOMERNAME#", deliveryDTO.CustomerId);
                        //body = body.Replace("#AMOUNT#", deliveryDTO.Amount);


                        //try
                        //{

                        //}
                        //catch (Exception ex)
                        //{

                        //    logger.Debug("receipt Not generated: " + ex.Message);
                        //}


                        var deliveryStockDTO = new DeliveryStockDTO()
                        {
                            StockId    = makeDelivery.StockId,
                            DeliveryId = deliveryId,
                        };
                        _dataService.SaveDeliveryStock(deliveryStockDTO);
                        _orderService.UpdateOrderWithCompletedStatus(delivery.OrderId, orderStatusIdComplete, userId);
                    }
                    else if (makeDelivery.StockReduced && makeDelivery.OrderQuantityBalance < 0)
                    {
                        deliveryId = this._dataService.SaveDelivery(deliveryDTO, userId);
                        if (makeDelivery.OrderQuantityBalance != 0)
                        {
                            var deliveryStockDTO = new DeliveryStockDTO()
                            {
                                StockId    = makeDelivery.StockId,
                                DeliveryId = deliveryId,
                            };
                            _dataService.SaveDeliveryStock(deliveryStockDTO);
                            _orderService.UpdateOrderWithInProgressStatus(delivery.OrderId, orderStatusIdInProgress, userId);
                        }
                    }
                }
                else
                {
                    //if order.ProductId == 1
                    var deliveryDTO = new DTO.DeliveryDTO()
                    {
                        StoreId              = delivery.StoreId,
                        CustomerId           = delivery.CustomerId,
                        DeliveryCost         = delivery.DeliveryCost,
                        OrderId              = delivery.OrderId,
                        VehicleNumber        = delivery.VehicleNumber,
                        BranchId             = delivery.BranchId,
                        SectorId             = delivery.SectorId,
                        PaymentModeId        = delivery.PaymentModeId,
                        BatchId              = delivery.BatchId,
                        Price                = delivery.Price,
                        ProductId            = delivery.ProductId,
                        Amount               = delivery.Amount,
                        Quantity             = delivery.Quantity,
                        Location             = delivery.Location,
                        TransactionSubTypeId = delivery.TransactionSubTypeId,
                        MediaId              = delivery.MediaId,
                        DeliveryId           = delivery.DeliveryId,
                        DriverName           = delivery.DriverName,
                        DriverNIN            = delivery.DriverNIN,
                        Deleted              = delivery.Deleted,
                        CreatedBy            = delivery.CreatedBy,
                        CreatedOn            = delivery.CreatedOn,
                    };
                    makeDelivery = MakeFlourDeliveryRecord(delivery.StoreId, delivery, userId);
                    if (makeDelivery.StockReduced && makeDelivery.OrderQuantityBalance == 0)
                    {
                        deliveryId = this._dataService.SaveDelivery(deliveryDTO, userId);
                        var deliveryStockDTO = new DeliveryStockDTO()
                        {
                            StockId    = makeDelivery.StockId,
                            DeliveryId = deliveryId,
                        };
                        _dataService.SaveDeliveryStock(deliveryStockDTO);
                        _orderService.UpdateOrderWithCompletedStatus(delivery.OrderId, orderStatusIdComplete, userId);
                        List <DeliveryGradeSize> deliveryGradeSizeList = new List <DeliveryGradeSize>();

                        foreach (var grade in delivery.Grades)
                        {
                            long   sizeId = 0;
                            double amount = 0, price = 0, quantity = 0;

                            foreach (var denomination in grade.Denominations)
                            {
                                sizeId   = denomination.DenominationId;
                                price    = denomination.Price;
                                quantity = denomination.Quantity;
                                amount   = (denomination.Quantity * denomination.Price);

                                var deliveryGradeSize = new DeliveryGradeSize()
                                {
                                    DeliveryId = deliveryId,
                                    GradeId    = grade.GradeId,
                                    SizeId     = sizeId,
                                    Quantity   = quantity,
                                    Price      = price,
                                    Amount     = amount,
                                    TimeStamp  = DateTime.Now,
                                };
                                deliveryGradeSizeList.Add(deliveryGradeSize);
                            }
                        }
                        this._dataService.PurgeDeliveryGradeSize(deliveryId);
                        this.SaveDeliveryGradeSizeList(deliveryGradeSizeList);
                    }
                    else
                    {
                        deliveryId = this._dataService.SaveDelivery(deliveryDTO, userId);
                        if (makeDelivery.OrderQuantityBalance != 0)
                        {
                            var deliveryStockDTO = new DeliveryStockDTO()
                            {
                                StockId    = makeDelivery.StockId,
                                DeliveryId = deliveryId,
                            };
                            _dataService.SaveDeliveryStock(deliveryStockDTO);
                            _orderService.UpdateOrderWithInProgressStatus(delivery.OrderId, orderStatusIdInProgress, userId);

                            List <DeliveryGradeSize> deliveryGradeSizeList = new List <DeliveryGradeSize>();

                            foreach (var grade in delivery.Grades)
                            {
                                long   sizeId = 0;
                                double amount = 0, price = 0, quantity = 0;

                                foreach (var denomination in grade.Denominations)
                                {
                                    sizeId   = denomination.DenominationId;
                                    price    = denomination.Price;
                                    quantity = denomination.Quantity;
                                    amount   = (denomination.Quantity * denomination.Price);

                                    var deliveryGradeSize = new DeliveryGradeSize()
                                    {
                                        DeliveryId = deliveryId,
                                        GradeId    = grade.GradeId,
                                        SizeId     = sizeId,
                                        Quantity   = quantity,
                                        Price      = price,
                                        Amount     = amount,
                                        TimeStamp  = DateTime.Now,
                                    };
                                    deliveryGradeSizeList.Add(deliveryGradeSize);
                                }
                            }
                            this._dataService.PurgeDeliveryGradeSize(deliveryId);
                            this.SaveDeliveryGradeSizeList(deliveryGradeSizeList);
                        }
                    }

                    long transactionSubTypeId = 0;
                    var  notes = string.Empty;
                    if (delivery.ProductId == 1)
                    {
                        transactionSubTypeId = flourTransactionSubTypeId;
                        notes = "Maize Flour Sale";
                    }
                    else if (delivery.ProductId == 2)
                    {
                        transactionSubTypeId = branTransactionSubTypeId;
                        notes = "Bran Sale";
                    }
                    var paymentMode     = _accountTransactionActivityService.GetPaymentMode(delivery.PaymentModeId);
                    var paymentModeName = paymentMode.Name;
                    if (paymentModeName == "Credit")
                    {
                        var accountActivity = new AccountTransactionActivity()
                        {
                            AspNetUserId         = delivery.CustomerId,
                            Amount               = delivery.Amount,
                            Notes                = notes,
                            Action               = "-",
                            BranchId             = delivery.BranchId,
                            TransactionSubTypeId = transactionSubTypeId,
                            SectorId             = delivery.SectorId,
                            Deleted              = delivery.Deleted,
                            CreatedBy            = userId,
                            PaymentMode          = paymentModeName,
                        };
                        var accountActivityId = this._accountTransactionActivityService.SaveAccountTransactionActivity(accountActivity, userId);
                    }


                    if (delivery.Amount == 0)
                    {
                        return(deliveryId);
                    }
                    else
                    {
                        long transactionTypeId  = 0;
                        var  transactionSubtype = _transactionSubTypeService.GetTransactionSubType(delivery.TransactionSubTypeId);
                        if (transactionSubtype != null)
                        {
                            transactionTypeId = transactionSubtype.TransactionTypeId;
                        }

                        var transaction = new TransactionDTO()
                        {
                            BranchId             = delivery.BranchId,
                            SectorId             = delivery.SectorId,
                            Amount               = delivery.DeliveryCost,
                            TransactionSubTypeId = delivery.TransactionSubTypeId,
                            TransactionTypeId    = transactionTypeId,
                            CreatedOn            = DateTime.Now,
                            TimeStamp            = DateTime.Now,
                            CreatedBy            = userId,
                            Deleted              = false,
                        };
                        var transactionId = _transactionDataService.SaveTransaction(transaction, userId);
                        return(deliveryId);
                    }
                }
            }
            return(deliveryId);
        }