public async Task <Models.Transaction> SendTransaction(string ToUserAddress, Decimal Amount, string UserPrivateKey = "")
        {
            BigInteger gas         = Web3.Convert.ToWei(3000000);
            BigInteger valueAmount = Web3.Convert.ToWei(4000000);
            BigInteger gasprice    = Web3.Convert.ToWei(5000000000);
            Decimal    EthAmount   = UserControl.UserTypeID == 1 ? 0.0002m : 0.00015m;
            //Minimum gass cost is 0.000042 Ether, so send atleast 0.0002

            string FromPrivateKey = UserControl.UserTypeID == 2 ? UserPrivateKey : MasterEthPrivateKey;
            string ToPublicKey    = UserControl.UserTypeID == 2 ? MasterEthPublicKey : ToUserAddress;

            var account = new Account(FromPrivateKey);
            var web3    = new Web3(account, EthUrl);

            //TransactionInput ti = new TransactionInput();
            //ti.Data = TransactionData;
            //ti.From = account.Address;
            //ti.To = ToAddress;
            //ti.Value = web3.Eth HexBigInteger
            //var TR = await web3.Eth.TransactionManager.SendTransactionAndWaitForReceiptAsync(ti,)

            var TR = await web3.Eth.GetEtherTransferService().TransferEtherAndWaitForReceiptAsync(ToPublicKey, EthAmount, 2);

            Models.Transaction trans = new Models.Transaction();
            trans.TransactionHash = TR.TransactionHash;
            trans.GasUsed         = TR.GasUsed.Value.ToString();
            trans.BlockNumber     = TR.BlockNumber.Value.ToString();
            trans.EthAmount       = EthAmount;
            trans.FromAddress     = account.Address;
            trans.ToAddress       = ToUserAddress;

            return(trans);
        }
        public async Task <Models.Transaction> GetTransactionByHash(string TranHash)
        {
            var web3 = new Web3(EthUrl);

            Models.Transaction trans = new Models.Transaction();
            try
            {
GetTransDetail:
                var transReceipt = await web3.Eth.Transactions.GetTransactionByHash.SendRequestAsync(TranHash);

                if (transReceipt.BlockNumber.Value == 0)
                {
                    System.Threading.Thread.Sleep(12000);
                    goto GetTransDetail;
                }

                trans.FromAddress     = transReceipt.From;
                trans.ToAddress       = transReceipt.To;
                trans.BlockNumber     = transReceipt.BlockNumber.Value.ToString();
                trans.InputDataText   = transReceipt.Input.HexToUTF8String();
                trans.InputDataHex    = transReceipt.Input;
                trans.GasUsed         = transReceipt.Gas.Value.ToString();
                trans.TransactionHash = transReceipt.TransactionHash;
                trans.EthAmount       = Web3.Convert.FromWei(BigInteger.Parse(transReceipt.Value.ToString()));
            }
            catch (Exception ex)
            {
                trans.ErrorMessages = ex.Message;
            }

            return(trans);
        }
        public async Task <Models.Transaction> SendTransactionAndData(string ToUserAddress, Decimal Amount, string TransactionData = "", string UserPrivateKey = "")
        {
            string FromPrivateKey = UserControl.UserTypeID == 2 ? UserPrivateKey : MasterEthPrivateKey;
            string ToPublicKey    = UserControl.UserTypeID == 2 ? MasterEthPublicKey : ToUserAddress;

            Models.Transaction trans = new Models.Transaction();

            var account = new Account(FromPrivateKey);
            var web3    = new Web3(account, EthUrl);
            var dataHex = TransactionData.ToHexUTF8();

            TransactionInput Tinput = new TransactionInput();

            Tinput.From  = web3.TransactionManager.Account.Address;
            Tinput.To    = ToPublicKey;
            Tinput.Value = new HexBigInteger(Web3.Convert.ToWei(Amount));
            Tinput.Data  = dataHex.ToString();
            Tinput.Gas   = await web3.TransactionManager.EstimateGasAsync(Tinput);

            var TransHash = await web3.TransactionManager.SendTransactionAndWaitForReceiptAsync(Tinput, new System.Threading.CancellationTokenSource());

            //.SendTransactionAsync(Tinput);
            //trans = await GetTransactionByHash(TransHash);

            trans.FromAddress     = account.Address;
            trans.ToAddress       = ToUserAddress;
            trans.TransactionHash = TransHash.TransactionHash;
            trans.GasUsed         = TransHash.GasUsed.Value.ToString();
            trans.BlockNumber     = TransHash.BlockNumber.Value.ToString();
            trans.InputDataText   = TransactionData;
            trans.EthAmount       = Amount;

            return(trans);
        }
Пример #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ChargeResponse"/> class.
 /// </summary>
 /// <param name="errors">errors.</param>
 /// <param name="transaction">transaction.</param>
 public ChargeResponse(
     IList <Models.Error> errors    = null,
     Models.Transaction transaction = null)
 {
     this.Errors      = errors;
     this.Transaction = transaction;
 }
Пример #5
0
        public void MapTQR_NormalTransaction_MapsAndMaskData()
        {
            const string lastFourDigit = "3333";

            var mapper = new TransactionMapper();

            Models.Transaction inputTransaction = new Models.Transaction
            {
                Amount              = 1.0m,
                CardHolderName      = string.Empty,
                CardNumber          = $"0000-1111-2222-{lastFourDigit}",
                CurrencyISO4217Code = "EUR",
                CVVNumber           = 123,
                ExperyDate          = DateTime.SpecifyKind(new DateTime(2000, 1, 1), DateTimeKind.Local)
            };

            PaymentRequest paymentRequest = mapper.Map(inputTransaction);

            Assert.AreEqual((decimal)paymentRequest.Amount, inputTransaction.Amount);
            Assert.AreEqual(paymentRequest.CardHolderName, inputTransaction.CardHolderName);
            Assert.AreEqual(paymentRequest.CurrencyISO4217Code, inputTransaction.CurrencyISO4217Code);
            Assert.IsNotNull(paymentRequest.ExperyDate);
            Assert.AreEqual(paymentRequest.CvvNumber, inputTransaction.CVVNumber);
            Assert.AreEqual(paymentRequest.CardNumber, inputTransaction.CardNumber);
        }
Пример #6
0
        public async Task <ActionResult> Create(ViewModels.Transaction transaction)
        {
            if (ModelState.IsValid)
            {
                var currentUTCTime = DateTimeOffset.UtcNow;
                var computer       = await db.Computers.Where(x => x.SKU == transaction.Computer).SingleOrDefaultAsync();

                var stock = computer.Stock - transaction.Amount;
                var sale  = new Models.Transaction()
                {
                    IdTransaction = Guid.NewGuid().ToString(),
                    Computer      = computer,
                    Notes         = transaction.Notes,
                    Created       = currentUTCTime,
                    Type          = TransactionType.Debet,
                    Amount        = transaction.Amount
                };
                db.Transactions.Add(sale);
                var result = await db.SaveChangesAsync();

                if (result > 0)
                {
                    computer.Stock           = stock;
                    db.Entry(computer).State = EntityState.Modified;
                    var resultV2 = await db.SaveChangesAsync();

                    if (resultV2 > 0)
                    {
                        return(RedirectToAction("Index"));
                    }
                }
            }
            return(View("Error"));
        }
Пример #7
0
 private void Button1_Click(object sender, EventArgs e)
 {
     if (!chkVariz.Checked && !chkBardasht.Checked)
     {
         MessageBox.Show("لطفاً نوع واریز یا برداشت را مشخص کنید");
     }
     else
     {
         using (Repository.TransactionRepository transactionRepository = new Repository.TransactionRepository())
         {
             Models.Transaction transaction = new Models.Transaction();
             transaction.DateTime = DateTime.Now;
             transaction.Disc     = txtDisc.Text;
             transaction.Price    = int.Parse(txtPrice.Text);
             if (chkVariz.Checked)
             {
                 transaction.TransactionType_Id = 1;
             }
             else
             {
                 transaction.TransactionType_Id = 2;
             }
             transaction.UserBargain_Id = _user_id;
             transactionRepository.Add(transaction);
             DialogResult = DialogResult.Yes;
         }
     }
 }
Пример #8
0
        public async Task ValidateTransaction(Models.Transaction transaction)
        {
            var filter = Builders <Models.Transaction> .Filter.Eq(s => s.Id, transaction.Id);

            transaction.Validated = true;
            await _collection.ReplaceOneAsync(filter, transaction);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="RetrieveTransactionResponse"/> class.
 /// </summary>
 /// <param name="errors">errors.</param>
 /// <param name="transaction">transaction.</param>
 public RetrieveTransactionResponse(
     IList <Models.Error> errors    = null,
     Models.Transaction transaction = null)
 {
     this.Errors      = errors;
     this.Transaction = transaction;
 }
Пример #10
0
        public Models.Transaction GetProduct(string token)
        {
            var transaction = new Models.Transaction();

            if (WebCache.Get($"Token_{token}") == null)
            {
                transaction.IsValid = false;
                transaction.Message = "Sessão expirada";
                return(transaction);
            }


            transaction.IsValid  = true;
            transaction.Products = new List <Models.Product>
            {
                new Models.Product {
                    Id = Guid.NewGuid(), Name = "Frango", Price = 15.0m
                },
                new Models.Product {
                    Id = Guid.NewGuid(), Name = "Peixe", Price = 10.0m
                },
                new Models.Product {
                    Id = Guid.NewGuid(), Name = "Café", Price = 4.30m
                },
                new Models.Product {
                    Id = Guid.NewGuid(), Name = "Pão", Price = 1.70m
                }
            };
            return(transaction);
        }
        public void MapTransactionResult_NormalTransaction_MapsAndMaskData()
        {
            var mapper     = new TransactionResultMapper();
            var tansaction = new Models.Transaction
            {
                Amount              = 1.0m,
                CardHolderName      = string.Empty,
                CardNumber          = "0000-1111-2222-3333",
                CurrencyISO4217Code = "EUR",
                CVVNumber           = 123,
                ExperyDate          = new DateTime(1, 1, 1)
            };
            var paymentState = new PaymentState
            {
                Code = (PaymentStateCode)1,
                Id   = string.Empty
            };

            var result = mapper.Map(paymentState, tansaction);

            Assert.AreEqual(result.Code, PaymentStatusCode.Success);
            Assert.AreEqual(result.BankId, string.Empty);
            Assert.IsNull(result.PaymentId);
            Assert.IsNotNull(result.TransactionDetails);
        }
Пример #12
0
        //
        // GET: /Transaction/Transaction/Edit/5

        public ActionResult Edit(Guid id)
        {
            Models.Transaction transaction = _accountTransactionService.FindById(id);

            if (transaction == null)
            {
                return(HttpNotFound());
            }
            return(View(transaction));
        }
Пример #13
0
        private Models.Transaction addTransaction(string accountNumber, string transactionType, decimal amount)
        {
            var    newTransaction    = new Models.Transaction(accountNumber, transactionType, amount);
            var    numTransaction    = getNumTransaction();
            string newTransactionKey = String.Format("transaction{0}", numTransaction++);

            HttpContext.Session.SetObjectAsJson(newTransactionKey, newTransaction);
            HttpContext.Session.SetInt32("numTransaction", (Int32)numTransaction);
            return(newTransaction);
        }
Пример #14
0
        public int AddTransaction(Models.Transaction transactions)
        {
            _logger.Log(
                $"[TransactionService::AddTransaction] Entering method successfully",
                LogLevel.Info);

            var repositoryTransactions = Mapper.Map(transactions, new Transaction());

            return(_transactionRepository.AddTransaction(repositoryTransactions));
        }
Пример #15
0
        public Models.Transaction Get(string xml, int x)
        {
            xml = "http://financeisoswift.azurewebsites.net/uploads/" + xml + ".xml";
            XDocument doc     = XDocument.Load(xml);
            string    xmlFile = doc.ToString();

            Models.Transaction transaction = Models.transactionConstructor.Parse(doc);

            return(transaction);
        }
Пример #16
0
        public IActionResult Transfer([Bind] Models.Transaction trans)
        {
            lock (transactionLock)
            {
                using (var ts = new TransactionScope())
                {
                    try
                    {
                        var sourceAccountNumber = Convert.ToInt64(HttpContext.User.Identity.Name);

                        var user = _userDAL.GetUserData(sourceAccountNumber);

                        if (_transactionDAL.GetBalance(sourceAccountNumber) < trans.Amount)
                        {
                            ViewData["Message"] = "Not enough funds.";
                        }
                        else
                        {
                            _transactionDAL.AddTransaction(new Models.Transaction
                            {
                                AccountNumber = sourceAccountNumber,
                                Amount        = -trans.Amount,
                                Type          = "TRANSFER",
                                Source        = sourceAccountNumber,
                                Destination   = trans.AccountNumber
                            });

                            _transactionDAL.AddTransaction(new Models.Transaction
                            {
                                AccountNumber = trans.AccountNumber,
                                Amount        = trans.Amount,
                                Type          = "TRANSFER",
                                Source        = sourceAccountNumber,
                                Destination   = trans.AccountNumber
                            });

                            ViewData["SuccessMessage"] = "Transfer success";
                        }

                        ViewData["LoginName"]     = user.LoginName;
                        ViewData["AccountNumber"] = sourceAccountNumber;
                        ViewData["Balance"]       = _transactionDAL.GetBalance(sourceAccountNumber);

                        ts.Complete();
                        return(View());
                    }
                    catch (Exception e)
                    {
                        ViewData["Message"] = e.Message;
                        ts.Dispose();
                        return(View());
                    }
                }
            }
        }
        public ActionResult AddTransaction(int customerId, bool type, string firstName, string lastname, string email, int phone, string bill, int cc, int cvv, string exp, decimal total)
        {
            Customer customer = new Models.Customer(type, firstName, lastname, email, phone, bill, cc, cvv, exp);

            customer.Id = customerId;
            Transaction transaction = new Models.Transaction(customer, total, DateTime.Now);

            db.Transactions.Add(transaction);
            db.SaveChanges();

            return(RedirectToAction("TransactionItems", "AddItems"));
        }
Пример #18
0
 public static TransactionResponseViewModel ToTransactionResponseViewModel(this Models.Transaction transaction)
 {
     return(new TransactionResponseViewModel()
     {
         From = transaction.From,
         Id = transaction.Id,
         To = transaction.To,
         Value = transaction.Value,
         Validated = transaction.Validated,
         InvoiceId = transaction.InvoiceId
     });
 }
        public Transaction Convert(bcdb.Transaction transactionDB)
        {
            var newTransaction = new Models.Transaction()
            {
                Sender    = transactionDB.Sender,
                Recipient = transactionDB.Recipient,
                Amount    = transactionDB.Amount,
                Name      = transactionDB.Name,
                BlockId   = transactionDB.BlockId
            };

            return(newTransaction);
        }
Пример #20
0
        public static Domain.DomainModels.Transaction Convert(Models.Transaction transaction)
        {
            if (transaction == null)
            {
                throw new ArgumentNullException(nameof(transaction));
            }

            return(new Domain.DomainModels.Transaction(
                       Guid.Parse(transaction.Id),
                       transaction.Date,
                       transaction.Amount,
                       transaction.Category == null ? null : CategoryConverter.Convert(transaction.Category)));
        }
        private ResultModel BlockchainAndDB(ref ProductEthAddress_V prod_v)
        {
            string      product_key = prod_v.Product_Key;
            string      Private_key = prod_v.EthPrivateKey;
            string      Public_key  = prod_v.EthPublicKey;
            Decimal     Amount      = 0.00015m;
            ResultModel result      = new ResultModel();

            try
            {
                EthAddressesController ethac = new EthAddressesController();
                Decimal GetBalance           = Task.Run <Decimal>(async() => await ethac.GetAccountBalance(Public_key)).Result;
                if (Amount >= GetBalance)
                {
                    result._Result      = false;
                    result._ResultError = "No Sufficient Balance in ETH Account";

                    return(result);
                }

                Models.Transaction TR = Task.Run <Models.Transaction>(async() => await ethac.SendTransactionAndData(ethac.MasterEthPublicKey, Amount, product_key, Private_key)).Result;
                //Task.Run<Models.Transaction>(async () => await ethac.SendTransaction(ethac.MasterEthPublicKey, 0.00015m, prod_v.EthPrivateKey)).Result;
                TR.ProductID    = prod_v.Product_ID;
                TR.CreatedBy    = UserControl.UserID;
                TR.UserTypeID   = UserControl.UserTypeID;
                TR.EthAddressID = prod_v.EthAddressID ?? default(int);
                TR.CreatedDate  = DateTime.Now;
                db.Transactions.Add(TR);
                db.SaveChanges();

                var product_db = db.Products.Find(prod_v.Product_ID);
                product_db.UserID        = UserControl.UserID;
                product_db.TransactionID = TR.TransactionID;
                db.SaveChanges();

                result._ResultTransHash = TR.TransactionHash;
                result._Result          = true;

                prod_v.UserID        = product_db.UserID;
                prod_v.TransactionID = product_db.TransactionID;
            }
            catch (Exception ex)
            {
                result._Result      = false;
                result._ResultError = ex.Message;

                return(result);
            }

            return(result);
        }
Пример #22
0
        public List <Models.transactionError> Get(string xml)
        {
            xml = "http://financeisoswift.azurewebsites.net/uploads/" + xml + ".xml";
            XDocument doc     = XDocument.Load(xml);
            string    xmlFile = doc.ToString();

            Models.Transaction transaction = Models.transactionConstructor.Parse(doc);

            List <Models.transactionError> errorList = Models.transactionErrorConstructor.Validate(transaction);



            return(errorList);
        }
Пример #23
0
        public ActionResult Create([Bind(Include = "ProductId,ProductName,ProductKey,SerialNumber,ProductType,ProductDetail,ProductIsActive,ImagePath,ImageFile")] ProductModel prodM)
        {
            if (ModelState.IsValid)
            {
                Decimal Amount = 0.0002m;
                EthAddressesController ethac = new EthAddressesController();
                Decimal GetBalance           = Task.Run <Decimal>(async() => await ethac.GetAccountBalance()).Result;
                if (Amount >= GetBalance)
                {
                    return(View(prodM));
                }

                var ethadd = ethac.GenerateEthAddress();
                ethadd.CreatedBy   = UserControl.UserID;
                ethadd.CreatedDate = DateTime.Now;
                db.EthAddresses.Add(ethadd);
                db.SaveChanges();

                Models.Transaction TR = Task.Run <Models.Transaction>(async() => await ethac.SendTransactionAndData(ethadd.EthPublicKey, 0.0002m, prodM.ProductKey)).Result;
                //Task.Run<Models.Transaction>(async () => await ethac.SendTransaction(ethadd.EthPublicKey, 0.0002m)).Result;
                //TR.ProductID = product.Product_ID;
                TR.EthAddressID = ethadd.EthAddressID;
                TR.CreatedBy    = UserControl.UserID;
                TR.CreatedDate  = DateTime.Now;
                db.Transactions.Add(TR);
                db.SaveChanges();

                Product product = new Product
                {
                    Product_Name       = prodM.ProductName,
                    Product_Key        = prodM.ProductKey,
                    Serial_Num         = prodM.SerialNumber,
                    Product_Type       = prodM.ProductType,
                    Product_Detail     = prodM.ProductDetail,
                    IsActive           = prodM.ProductIsActive,
                    EthAddressID       = ethadd.EthAddressID,
                    FirstTransactionID = TR.TransactionID,
                    CreatedBy          = UserControl.UserID,
                    CreatedDate        = DateTime.Now
                };

                db.Products.Add(product);
                db.SaveChanges();

                return(RedirectToAction("Index"));
            }

            return(View(prodM));
        }
Пример #24
0
        public IActionResult SendMoney(Models.Transaction transaction)
        {
            PopulateAccounts();
            string          userId = _userManager.GetUserId(User);
            ApplicationUser user   = _dbContext
                                     .Users
                                     .Include("Accounts.Currency")
                                     .First(s => s.Id == userId);

            BankAccount from = user.Accounts.First(a => a.CurrencyId == transaction.SenderCurrencyId);
            BankAccount to   = _dbContext
                               .BankAccounts
                               .Where(a => a.UserId != user.Id &&
                                      a.CurrencyId == from.CurrencyId &&
                                      a.Id == transaction.RecipientAccount)
                               .FirstOrDefault();

            if (to == null)
            {
                ViewData["Message"] = "Invalid recipient ID!";
                return(View("Index"));
            }

            if (transaction.Amount > (double)from.Balance)
            {
                ViewData["Message"] = "Not enough resources!";
                return(View("Index"));
            }
            if (_dbContext.Transactions
                .Where(t => t.AccountFrom.Id == from.Id && t.Status == TransactionStatus.PENDING)
                .Any())
            {
                ViewData["Message"] = "Already exists pending transaction from that bank account!";
                return(View("Index"));
            }

            Transaction t = new Transaction();

            t.AccountFromId = from.Id;
            t.AccountToId   = to.Id;
            t.Amount        = transaction.Amount;
            t.Status        = TransactionStatus.PENDING;
            _dbContext.Transactions.Add(t);
            _dbContext.SaveChanges();

            ViewData["Message"] = "Transfer transaction has been successfully forwarded to the manager!";
            return(View("Index"));
        }
Пример #25
0
        public ActionResult <Models.Transaction> Post([FromBody] TransactionViewModel transaction)
        {
            var user           = rocketDbContext.Users.Find(transaction.UserId);
            var newTransaction = new Models.Transaction {
                Id      = transaction.Id,
                Type    = transaction.Type,
                Amount  = transaction.Amount,
                Comment = transaction.Comment,
                User    = user
            };

            rocketDbContext.Transactions.Add(newTransaction);
            rocketDbContext.SaveChanges();

            return(CreatedAtAction(nameof(Post), new { id = newTransaction.Id }, newTransaction));
        }
Пример #26
0
        private void AddRewardTrnx(int amnt, string addrHolder)
        {
            var trns = new Models.Transaction
            {
                Id              = new Guid(),
                CoinAmount      = amnt,
                CreationDate    = DateTime.UtcNow,
                FeeInCoinAmount = 0,
                FromKey         = Admin.PublicKey,        //wallet.PublicKey;
                Status          = EnumType.Pending,
                ToKey           = addrHolder,
                StatusType      = EnumType.Reward
            };

            _ctx.Transactions.Add(trns);
        }
        //detailed search method for date
        public ActionResult DateSearch()
        {
            //create list for date
            List <Transaction> Transactions  = db.TransactionsDbSet.ToList();
            Transaction        SelectNoDates = new Models.Transaction()
            {
                TransactionID = 0, TransactionName = "All Dates"
            };

            Transactions.Add(SelectNoDates);

            //select list
            SelectList ALLDates = new SelectList(Transactions.OrderBy(t => t.TransactionID), "TransactionID", "Date");

            ViewBag.Transactions = ALLDates;
            return(View("DetailedSearch"));
        }
Пример #28
0
        public async Task <IActionResult> CreateTransaction([FromBody][Required] Models.Transaction transaction)
        {
            transaction.TimeStamp = DateTime.Now;

            var json        = JsonConvert.SerializeObject(transaction);
            var httpContent = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

            using (var response = await taxControlClient.PostAsync("api/v1/tax", httpContent))
            {
                await response.Content.ReadAsStringAsync();
            }

            _context.Transactions.Add(transaction);
            await _context.SaveChangesAsync();

            return(Ok(transaction));
        }
Пример #29
0
        public Models.Transaction Get(string xml, string xsd)
        {
            xml = "http://financeisoswift.azurewebsites.net/uploads/" + xml + ".xml";
            XDocument doc     = XDocument.Load(xml);
            string    xmlFile = doc.ToString();

            Models.Transaction transaction = Models.transactionConstructor.Parse(doc);

            string nSpace = "http://financeisoswift.azurewebsites.net/uploads/" + xsd;

            xsd = nSpace + ".xsd";


            bool         hasErrors = false;
            XmlSchemaSet schemas   = new XmlSchemaSet();

            schemas.Add(null, xsd);

            XDocument doc1 = XDocument.Load(xml);

            doc1.Validate(schemas, (o, vea) =>
            {
                Console.WriteLine(o.GetType().Name);
                Console.WriteLine(vea.Message);

                hasErrors = true;
            }, true);

            if (hasErrors)
            {
                transaction.validSchema = false;
            }
            else
            {
                transaction.validSchema = true;
            }

            List <Models.transactionError> errorList = Models.transactionErrorConstructor.Validate(transaction);



            transaction.errorList = errorList;


            return(transaction);
        }
Пример #30
0
        public IActionResult Withdraw([Bind] Models.Transaction trans)
        {
            lock (transactionLock)
            {
                using (var ts = new TransactionScope())
                {
                    try
                    {
                        var accountNumber = Convert.ToInt64(HttpContext.User.Identity.Name);

                        var user = _userDAL.GetUserData(accountNumber);

                        if (_transactionDAL.GetBalance(accountNumber) < trans.Amount)
                        {
                            ViewData["Message"] = "Not enough funds.";
                        }
                        else
                        {
                            _transactionDAL.AddTransaction(new Models.Transaction
                            {
                                AccountNumber = accountNumber,
                                Amount        = -trans.Amount,
                                Type          = "WITHDRAW"
                            });

                            ViewData["SuccessMessage"] = "Withdraw success";
                        }

                        ViewData["LoginName"]     = user.LoginName;
                        ViewData["AccountNumber"] = accountNumber;
                        ViewData["Balance"]       = _transactionDAL.GetBalance(accountNumber);

                        ts.Complete();
                        return(View());
                    }
                    catch (Exception e)
                    {
                        ViewData["Message"] = e.Message;
                        ts.Dispose();
                        return(View());
                    }
                }
            }
        }
Пример #31
0
        public Models.Transaction LookupTransactionInfo(string transactionId)
        {
            if (string.IsNullOrEmpty(transactionId))
            {
                throw new ArgumentException("Invalid Transaction Id");
            }
            var blockExplorer = new BlockExplorer();

            var tx = Retry.Do<Info.Blockchain.API.BlockExplorer.Transaction>(() => { return blockExplorer.GetTransaction(transactionId); }, new TimeSpan(0, 0, 2));

            var result = new Models.Transaction {
                TransactionId = transactionId,
                Amount = (double)tx.Inputs.FirstOrDefault()?.PreviousOutput.Value/1000000,
                FromAddress = tx.Inputs.FirstOrDefault()?.PreviousOutput.Address,
                ToAddress = tx.Outputs.FirstOrDefault()?.Address,
                CurrencyType = CryptoCurrencyType.BitCoin,
                Timestamp = DateTime.Now };
            return result;
        }
Пример #32
0
        public bool PostDistribution(int distributionId)
        {
            var woredaStcokDistribution = _unitOfWork.WoredaStockDistributionRepository.FindById(distributionId);
            if (woredaStcokDistribution!=null)
            {
                var transactionGroup = Guid.NewGuid();
                var transactionDate = DateTime.Now;

                _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup()
                {
                    PartitionID = 0,
                    TransactionGroupID = transactionGroup
                });

                foreach (var woredaStockDistributionDetail in woredaStcokDistribution.WoredaStockDistributionDetails)
                {
                    var transaction = new Models.Transaction
                    {

                        TransactionID = Guid.NewGuid(),
                        ProgramID = woredaStcokDistribution.ProgramID,
                        QuantityInMT = woredaStockDistributionDetail.DistributedAmount,
                        TransactionGroupID = transactionGroup,
                        TransactionDate = transactionDate,
                        FDPID = woredaStockDistributionDetail.FdpId,
                        Month = woredaStcokDistribution.Month,

                       LedgerID = 12
                    };

                    _unitOfWork.TransactionRepository.Add(transaction);

                    transaction = new Models.Transaction
                    {

                        TransactionID = Guid.NewGuid(),
                        ProgramID = woredaStcokDistribution.ProgramID,
                        QuantityInMT = woredaStockDistributionDetail.DistributedAmount,
                        TransactionGroupID = transactionGroup,
                        TransactionDate = transactionDate,
                        FDPID = woredaStockDistributionDetail.FdpId,
                        Month = woredaStcokDistribution.Month,

                        LedgerID = 18
                    };

                    _unitOfWork.TransactionRepository.Add(transaction);

                }

                woredaStcokDistribution.TransactionGroupID = transactionGroup;
                _unitOfWork.Save();
            }
            return true;
        }
Пример #33
0
        public bool PostDonationPlan(DonationPlanHeader donationPlanHeader)
        {
            var transactionGroup = Guid.NewGuid();
            var transactionDate = DateTime.Now;

            _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup()
            {
                PartitionID = 0,
                TransactionGroupID = transactionGroup
            });

            foreach (var donationPlanDetail in donationPlanHeader.DonationPlanDetails)
            {
                var transaction = new Models.Transaction
                                      {
                                          TransactionID = Guid.NewGuid(),
                                          ProgramID = donationPlanHeader.ProgramID,
                                          DonorID = donationPlanHeader.DonorID,
                                          CommoditySourceID = 1,
                                          QuantityInMT = donationPlanDetail.AllocatedAmount,
                                          TransactionGroupID = transactionGroup,
                                          TransactionDate = transactionDate,
                                          CommodityID = donationPlanHeader.CommodityID,
                                          ShippingInstructionID = donationPlanHeader.ShippingInstructionId,
                                          HubID = donationPlanDetail.HubID,
                                          LedgerID = 10
                                      };

                _unitOfWork.TransactionRepository.Add(transaction);

                transaction= new Models.Transaction
                                 {
                                     TransactionID = Guid.NewGuid(),
                                     ProgramID = donationPlanHeader.ProgramID,
                                     DonorID = donationPlanHeader.DonorID,
                                     CommoditySourceID = 1,
                                     QuantityInMT = donationPlanDetail.AllocatedAmount,
                                     TransactionGroupID = transactionGroup,
                                     TransactionDate = transactionDate,
                                     CommodityID = donationPlanHeader.CommodityID,
                                     ShippingInstructionID = donationPlanHeader.ShippingInstructionId,
                                     HubID = donationPlanDetail.HubID,
                                     LedgerID = 4
                                 };

                _unitOfWork.TransactionRepository.Add(transaction);
            }

            var donationHeader =
                _unitOfWork.DonationPlanHeaderRepository.FindById(donationPlanHeader.DonationHeaderPlanID);
            if (donationHeader!=null)
                donationPlanHeader.TransactionGroupID = transactionGroup;
            _unitOfWork.Save();
            return true;
        }
Пример #34
0
        public bool PostDeliveryReconcileReceipt(int deliveryReconcileID)
        {
            var deliveryReconcile = _unitOfWork.DeliveryReconcileRepository.Get(t => t.DeliveryReconcileID == deliveryReconcileID, null, "Dispatch").FirstOrDefault();
            if (deliveryReconcile == null) return false;

            var transactionGroup = Guid.NewGuid();
            var transactionDate = DateTime.Now;
            _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup() { PartitionID = 0, TransactionGroupID = transactionGroup });
             var transaction = new Models.Transaction();
            transaction.TransactionID = Guid.NewGuid();
            var reliefRequisition = _unitOfWork.ReliefRequisitionRepository.Get(t => t.RequisitionNo == deliveryReconcile.RequsitionNo).FirstOrDefault();
            if (reliefRequisition != null)
                transaction.ProgramID = reliefRequisition.ProgramID;
            var orDefault = _unitOfWork.DispatchRepository.Get(t => t.DispatchID == deliveryReconcile.DispatchID).FirstOrDefault();
            if (orDefault !=null)
                transaction.DonorID = orDefault.DispatchAllocation.DonorID;
            transaction.TransactionGroupID = transactionGroup;
            transaction.TransactionDate = transactionDate;
            var dispatch = _unitOfWork.DispatchRepository.Get(t => t.DispatchID == deliveryReconcile.DispatchID).FirstOrDefault();
            if (dispatch !=null)
                transaction.ShippingInstructionID = dispatch.DispatchAllocation.ShippingInstructionID;
            if (reliefRequisition != null) transaction.PlanId = reliefRequisition.RegionalRequest.PlanID;
            if (reliefRequisition != null) transaction.Round = reliefRequisition.RegionalRequest.Round;
            //transaction.LedgerID = Ledger.Constants.DELIVERY_RECEIPT;
            //transaction.FDPID = delivery.FDPID;
            //var firstOrDefault = delivery.DeliveryDetails.FirstOrDefault();

            transaction.LedgerID = Models.Ledger.Constants.DELIVERY_RECEIPT;
            transaction.FDPID = deliveryReconcile.FDPID;
            var firstOrDefault = deliveryReconcile.Dispatch.DispatchAllocation;

            if (firstOrDefault != null)
            {
                transaction.CommodityID = firstOrDefault.CommodityID;

            }
            transaction.QuantityInMT = deliveryReconcile.ReceivedAmount / 10;
            transaction.QuantityInUnit = deliveryReconcile.ReceivedAmount;
            var @default = _unitOfWork.UnitRepository.Get(t => t.Name == "Quintal").FirstOrDefault();
            transaction.UnitID = @default != null ? @default.UnitID : 1;
            _unitOfWork.TransactionRepository.Add(transaction);

            transaction = new Models.Transaction();
            transaction.TransactionID = Guid.NewGuid();
            //var reliefRequisition = _unitOfWork.ReliefRequisitionRepository.Get(t => t.RequisitionNo == distribution.RequisitionNo).FirstOrDefault();
            if (reliefRequisition != null)
                transaction.ProgramID = reliefRequisition.ProgramID;
            //var orDefault = _unitOfWorkhub.DispatchRepository.Get(t => t.DispatchID == distribution.DispatchID).FirstOrDefault();
            if (orDefault != null)
                transaction.DonorID = orDefault.DispatchAllocation.DonorID;
            transaction.TransactionGroupID = transactionGroup;
            transaction.TransactionDate = transactionDate;
            //var dispatch = _unitOfWorkhub.DispatchRepository.Get(t => t.DispatchID == distribution.DispatchID).FirstOrDefault();
            if (dispatch != null)
                transaction.ShippingInstructionID = dispatch.DispatchAllocation.ShippingInstructionID;
            if (reliefRequisition != null) transaction.PlanId = reliefRequisition.RegionalRequest.PlanID;
            if (reliefRequisition != null) transaction.Round = reliefRequisition.RegionalRequest.Round;
            //transaction.LedgerID = Ledger.Constants.GOODS_IN_TRANSIT;
            //transaction.HubID = delivery.HubID;
            //transaction.FDPID = delivery.FDPID;

            transaction.LedgerID = Models.Ledger.Constants.GOODS_IN_TRANSIT;
            transaction.HubID = deliveryReconcile.HubID;
            transaction.FDPID = deliveryReconcile.FDPID;

            //var firstOrDefault = distribution.DeliveryDetails.FirstOrDefault();
            if (firstOrDefault != null)
            {
                transaction.CommodityID = firstOrDefault.CommodityID;
            }
            transaction.QuantityInMT = deliveryReconcile.ReceivedAmount / 10;
            transaction.QuantityInUnit = deliveryReconcile.ReceivedAmount;
            var @default1 = _unitOfWork.UnitRepository.Get(t => t.Name == "Quintal").FirstOrDefault();
            transaction.UnitID = @default != null ? @default.UnitID : 1;
            _unitOfWork.TransactionRepository.Add(transaction);

            deliveryReconcile.TransactionGroupID = transactionGroup;
            _unitOfWork.Save();
            return true;
        }
Пример #35
0
        public bool PostGiftCertificate(int giftCertificateId)
        {
            var giftCertificate = _unitOfWork.GiftCertificateRepository.Get(t => t.GiftCertificateID == giftCertificateId, null,"GiftCertificateDetails").FirstOrDefault();
               if(giftCertificate==null) return false;

            var transactionGroup = Guid.NewGuid();
            var transactionDate = DateTime.Now;
            _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup()
                                                           {
                                                               PartitionID = 0, TransactionGroupID = transactionGroup
                                                           });
            foreach (var giftCertificateDetail in giftCertificate.GiftCertificateDetails)
            {
                var transaction = new Models.Transaction();
                transaction.TransactionID = Guid.NewGuid();
                transaction.ProgramID = giftCertificate.ProgramID;
                transaction.DonorID = giftCertificate.DonorID;
                transaction.CommoditySourceID = giftCertificateDetail.DFundSourceID;
                transaction.GiftTypeID = giftCertificateDetail.DFundSourceID;
                transaction.QuantityInMT = giftCertificateDetail.WeightInMT;
                transaction.QuantityInUnit = giftCertificateDetail.WeightInMT;
                transaction.TransactionGroupID = transactionGroup;
                transaction.TransactionDate = transactionDate;
                transaction.UnitID = 1;
                transaction.LedgerID = 5;
                transaction.CommodityID = giftCertificateDetail.CommodityID;
               // transaction.ShippingInstructionID = giftCertificate.SINumber;
                _unitOfWork.TransactionRepository.Add(transaction);

                transaction = new Models.Transaction();
                transaction.TransactionID = Guid.NewGuid();
                transaction.ProgramID = giftCertificate.ProgramID;
                transaction.DonorID = giftCertificate.DonorID;
                transaction.QuantityInMT = -giftCertificateDetail.WeightInMT;
                transaction.TransactionGroupID = transactionGroup;
                transaction.TransactionDate = transactionDate;
                transaction.QuantityInUnit = giftCertificateDetail.WeightInMT;
                transaction.UnitID = 1;
                transaction.LedgerID = 4;

                _unitOfWork.TransactionRepository.Add(transaction);

            }

            giftCertificate.StatusID = 2;
            giftCertificate.TransactionGroupID = transactionGroup;
            _unitOfWork.Save();
            return true;
        }
Пример #36
0
        public bool PostDistribution(int distributionId)
        {
            var woredaStcokDistribution = _unitOfWork.WoredaStockDistributionRepository.FindById(distributionId);
            if (woredaStcokDistribution!=null)
            {
                var transactionGroup = Guid.NewGuid();
                var transactionDate = DateTime.Now;

                _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup()
                {
                    PartitionID = 0,
                    TransactionGroupID = transactionGroup
                });

                foreach (var woredaStockDistributionDetail in woredaStcokDistribution.WoredaStockDistributionDetails)
                {
                    var transaction = new Models.Transaction
                    {

                        TransactionID = Guid.NewGuid(),
                        ProgramID = woredaStcokDistribution.ProgramID,
                        QuantityInMT = woredaStockDistributionDetail.DistributedAmount,
                        TransactionGroupID = transactionGroup,
                        TransactionDate = transactionDate,
                        FDPID = woredaStockDistributionDetail.FdpId,
                        Month = woredaStcokDistribution.Month,
                        PlanId = woredaStcokDistribution.PlanID,
                        //add commodity
                       LedgerID = Ledger.Constants.GOODS_UNDER_CARE
                    };

                    _unitOfWork.TransactionRepository.Add(transaction);

                    transaction = new Models.Transaction
                    {

                        TransactionID = Guid.NewGuid(),
                        ProgramID = woredaStcokDistribution.ProgramID,
                        QuantityInMT = -woredaStockDistributionDetail.DistributedAmount,
                        TransactionGroupID = transactionGroup,
                        TransactionDate = transactionDate,
                        FDPID = woredaStockDistributionDetail.FdpId,
                        Month = woredaStcokDistribution.Month,
                        PlanId = woredaStcokDistribution.PlanID,
                        //add commodity
                        LedgerID = Ledger.Constants.DELIVERY_RECEIPT
                    };

                    _unitOfWork.TransactionRepository.Add(transaction);

                }

                woredaStcokDistribution.TransactionGroupID = transactionGroup;
                _unitOfWork.Save();
            }
            return true;
        }
Пример #37
0
        public ActionResult Create([Bind(Include = "Id,Principal,Interest,Date,Cleared,AssetId,InitialInstallments")] Loan loan)
        {
            if (ModelState.IsValid)
            {
                loan.CreatedAt = DateTime.Now;
                loan.ModifiedAt = DateTime.Now;
                //try {
                //    using (TransactionScope trans = new TransactionScope())
                //    {
                //        db.Loans.Add(loan);
                //        Models.Transaction transaction = new Models.Transaction()
                //        {

                //            Loan = loan,
                //            Balance = loan.Principal + loan.Interest,
                //            Credit = 0,
                //            Debit = loan.Principal + loan.Interest,
                //            Details = "Loan Disbursement",
                //            Type = db.TransactionTypes.First(t => t.Description == "Loan Disbursement"),
                //        };
                //        db.Transactions.Add(transaction);

                //        DuePayment duepayment = new DuePayment()
                //        {
                //            Amount = transaction.Balance,
                //            Loan = loan
                //        };
                //        db.DuePayments.Add(duepayment);

                //        db.SaveChanges();
                //        trans.Complete();
                //    }
                //    return RedirectToAction("Index");
                //}
                //catch(Exception ex)
                //{ }
                loan.PendingInstallments = loan.InitialInstallments;
                loan.Balance = loan.Principal + loan.Interest;

                // Add corresponding transaction
                var transaction = new Models.Transaction()
                {
                    Type = db.TransactionTypes.First(tt => tt.Description.Contains("OPEN")),
                    Loan = loan,
                    Balance = loan.Balance,
                    Debit = loan.Balance,
                    Details = "Loan Disbursment",
                    Timestamp = DateTime.Now
                };
                db.Transactions.Add(transaction);

                // Record the next due payment
                var duePayment = new DuePayment()
                {
                    Loan = loan,
                    Amount = loan.Balance / loan.PendingInstallments
                };
                db.DuePayments.Add(duePayment);

                db.SaveChanges();
                

                return RedirectToAction("Index");

            }

            ViewBag.AssetId = new SelectList(db.Assets, "Id", "AssetName", loan.AssetId);
            return View(loan);
        }
Пример #38
0
        public List<Models.Transaction> PostHRDPlan(HRD hrd, Ration ration)
        {
            List<Models.Transaction> entries = new List<Models.Transaction>();
            List<int> regionalBenCount = new List<int>();
            ration = hrd.Ration;
            int RegionID=0;

            for (int r = 0; r < 12; r++)
            {
                regionalBenCount.Add(0);
            }
            foreach (HRDDetail fdp in hrd.HRDDetails)
            {
                for (int r = 0; r < fdp.DurationOfAssistance; r++)
                {
                    regionalBenCount[r] += (int)fdp.NumberOfBeneficiaries;
                    RegionID = fdp.AdminUnit.AdminUnit2.AdminUnit2.AdminUnitID;
                }
            }
            for (int r = 0; r < 12; r++)
            {
                int noben = regionalBenCount[r];
                if (noben > 0)
                {
                    Guid transactionGroupID = Guid.NewGuid();
                    DateTime transactionDate = DateTime.Now;

                    _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup() { PartitionID = 0, TransactionGroupID = transactionGroupID });

                    foreach (RationDetail rd in ration.RationDetails)
                    {
                        decimal amount = (rd.Amount/1000)*noben;

                        var entry2 = new Models.Transaction
                                                        {
                                                            RegionID = RegionID,
                                                            CommodityID = rd.CommodityID,
                                                            Round = r + 1,
                                                            ProgramID = TransactionConstants.Constants.HRD_PROGRAM_ID,
                                                            QuantityInUnit = amount,
                                                            UnitID = 1,
                                                            QuantityInMT = amount,
                                                            LedgerID =
                                                                Cats.Models.Ledger.Constants.REQUIRMENT_DOCUMENT_PALN,
                                                            // previously 200
                                                            TransactionDate = transactionDate,
                                                            TransactionGroupID = transactionGroupID,
                                                            PlanId = hrd.PlanID,
                                                            TransactionID = Guid.NewGuid(),
                                                        };
                        var entry1 = new Models.Transaction
                                                        {
                                                            RegionID = RegionID,
                                                            CommodityID = rd.CommodityID,
                                                            Round = r + 1,
                                                            ProgramID = TransactionConstants.Constants.HRD_PROGRAM_ID,
                                                            QuantityInUnit = -amount,
                                                            UnitID = 1,
                                                            QuantityInMT = -amount,
                                                            LedgerID = Cats.Models.Ledger.Constants.REQUIRMENT_DOCUMENT,
                                                            //previously 100
                                                            TransactionDate = transactionDate,
                                                            TransactionGroupID = transactionGroupID,
                                                            PlanId = hrd.PlanID,
                                                            TransactionID = Guid.NewGuid(),
                                                        };
                        _unitOfWork.TransactionRepository.Add(entry1);
                        _unitOfWork.TransactionRepository.Add(entry2);

                        entries.Add(entry1);
                        entries.Add(entry2);

                        //hrd.TransactionGroupID = transactionGroupID;
                        //_unitOfWork.HRDRepository.Edit(hrd);
                        _unitOfWork.Save();
                    }
                }
            }
            return entries;
        }
Пример #39
0
        //RRD
        //TODO: check if this is called for PSNP. It must be called for both programs
        public bool PostRequestAllocation(int requestId)
        {
            var result = new List<Models.Transaction>();
            var allocationDetails =
                _unitOfWork.ReliefRequisitionDetailRepository.FindBy(r => r.ReliefRequisition.RequisitionID == requestId);
            if (allocationDetails == null) return false;

            var transactionGroup = Guid.NewGuid();
            var transactionDate = DateTime.Now;
            _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup() { PartitionID = 0, TransactionGroupID = transactionGroup });

            foreach (var detail in allocationDetails)
            {

                    var transaction = new Models.Transaction();
                    transaction.TransactionID = Guid.NewGuid();
                    transaction.TransactionGroupID = transactionGroup;
                    transaction.TransactionDate = transactionDate;
                    transaction.UnitID = 1;

                    transaction.QuantityInMT = - detail.Amount;
                        transaction.QuantityInUnit = - detail.Amount;
                    transaction.LedgerID = Models.Ledger.Constants.PLEDGED_TO_FDP;
                    transaction.CommodityID = detail.CommodityID;
                    if (detail.Commodity.ParentID!=null)
                        transaction.ParentCommodityID = detail.Commodity.ParentID;
                    transaction.FDPID = detail.FDPID;
                    transaction.ProgramID = detail.ReliefRequisition.ProgramID;
                    transaction.RegionID = detail.ReliefRequisition.RegionID;
                    transaction.PlanId = detail.ReliefRequisition.RegionalRequest.PlanID;

                   transaction.Round = detail.ReliefRequisition.RegionalRequest.Round;
                   transaction.Month = detail.ReliefRequisition.RegionalRequest.Month;
                    _unitOfWork.TransactionRepository.Add(transaction);

                    //for Register Doc
                    transaction = new Models.Transaction();
                    transaction.TransactionID = Guid.NewGuid();
                    transaction.TransactionGroupID = transactionGroup;
                    transaction.TransactionDate = transactionDate;
                    transaction.UnitID = 1;

                    transaction.QuantityInMT = detail.Amount;
                    transaction.QuantityInUnit = detail.Amount;
                    transaction.LedgerID = Models.Ledger.Constants.REQUIRMENT_DOCUMENT;
                    transaction.CommodityID = detail.CommodityID;
                    if (detail.Commodity.ParentID != null)
                        transaction.ParentCommodityID = detail.Commodity.ParentID;
                    transaction.FDPID = detail.FDPID;
                    transaction.ProgramID = detail.ReliefRequisition.ProgramID;
                    transaction.RegionID = detail.ReliefRequisition.RegionID;
                    transaction.PlanId = detail.ReliefRequisition.RegionalRequest.PlanID;

                    transaction.Round = detail.ReliefRequisition.RegionalRequest.Round;
                    transaction.Month = detail.ReliefRequisition.RegionalRequest.Month;
                    _unitOfWork.TransactionRepository.Add(transaction);

            }

            _unitOfWork.Save();
            return true;
        }
Пример #40
0
        private bool PostSIAllocation(int requisitionID, int commoditySource=5)
        {
            var allocationDetails = _unitOfWork.SIPCAllocationRepository.Get(t => t.ReliefRequisitionDetail.RequisitionID == requisitionID);
               if (allocationDetails == null) return false;

               var transactionGroup = Guid.NewGuid();
               var transactionDate = DateTime.Now;
               _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup { PartitionID = 0, TransactionGroupID = transactionGroup });

               //ProjectCodeID	ShippingInstructionID ProgramID QuantityInMT	QuantityInUnit	UnitID	TransactionDate	RegionID	Month	Round	DonorID	CommoditySourceID	GiftTypeID	FDP

               foreach (var allocationDetail in allocationDetails)
               {
               var transaction = new Models.Transaction
               {
                   TransactionID = Guid.NewGuid(),
                   TransactionGroupID = transactionGroup,
                   TransactionDate = transactionDate,
                   UnitID = 1
               };

               var allocation = allocationDetail;
               transaction.QuantityInMT = -allocationDetail.AllocatedAmount;
               transaction.QuantityInUnit = -allocationDetail.AllocatedAmount;
               transaction.LedgerID = Ledger.Constants.COMMITED_TO_FDP;
               transaction.CommodityID = allocationDetail.ReliefRequisitionDetail.CommodityID;
               transaction.FDPID = allocationDetail.ReliefRequisitionDetail.FDPID;
               transaction.ProgramID = (int)allocationDetail.ReliefRequisitionDetail.ReliefRequisition.ProgramID;
               transaction.RegionID = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionID;
               transaction.CommoditySourceID = commoditySource;// commodity source transfer and swap
               //transaction.PlanId = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionalRequest.PlanID;
               //transaction.Round = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.Round;

               int hubID1 = 0;
               if (allocationDetail.AllocationType == TransactionConstants.Constants.SHIPPNG_INSTRUCTION)
               {
                   transaction.ShippingInstructionID = allocationDetail.Code;
                   hubID1 = (int)_unitOfWork.TransactionRepository.FindBy(m => m.ShippingInstructionID == allocationDetail.Code && m.LedgerID == Ledger.Constants.GOODS_ON_HAND).Select(m => m.HubID).FirstOrDefault();
               }
               else
               {
                   transaction.ProjectCodeID = allocationDetail.Code;
                   hubID1 = (int)_unitOfWork.TransactionRepository.FindBy(m => m.ProjectCodeID == allocationDetail.Code && m.LedgerID == Ledger.Constants.GOODS_ON_HAND).Select(m => m.HubID).FirstOrDefault();

               }

               if (hubID1 != 0)
               {
                   transaction.HubID = hubID1;
               }
               else
               {
                   transaction.HubID =
                                     _unitOfWork.HubAllocationRepository.FindBy(r => r.RequisitionID == allocation.ReliefRequisitionDetail.RequisitionID).Select(
                                             h => h.HubID).FirstOrDefault();
               }

               _unitOfWork.TransactionRepository.Add(transaction);
               // result.Add(transaction);

               /*post Debit-Pledged To FDP*/
               var transaction2 = new Models.Transaction
               {
                   TransactionID = Guid.NewGuid(),
                   TransactionGroupID = transactionGroup,
                   TransactionDate = transactionDate,
                   UnitID = 1
               };

               transaction2.QuantityInMT = allocationDetail.AllocatedAmount;
               transaction2.QuantityInUnit = allocationDetail.AllocatedAmount;
               transaction2.LedgerID = Ledger.Constants.PLEDGED_TO_FDP;
               transaction2.CommodityID = allocationDetail.ReliefRequisitionDetail.CommodityID;
               transaction2.FDPID = allocationDetail.ReliefRequisitionDetail.FDPID;
               transaction2.ProgramID = (int)allocationDetail.ReliefRequisitionDetail.ReliefRequisition.ProgramID;
               transaction2.RegionID = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionID;
               transaction2.CommoditySourceID = commoditySource;
               //transaction2.PlanId = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionalRequest.PlanID;
               //transaction2.Round = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.Round;

               int hubID2 = 0;
               if (allocationDetail.AllocationType == TransactionConstants.Constants.SHIPPNG_INSTRUCTION)
               {
                   var siCode = allocationDetail.Code.ToString();
                   var shippingInstruction =
                       _unitOfWork.ShippingInstructionRepository.Get(t => t.Value == siCode).
                           FirstOrDefault();
                   if (shippingInstruction != null) transaction.ShippingInstructionID = shippingInstruction.ShippingInstructionID;

                   hubID2 = (int)_unitOfWork.TransactionRepository.FindBy(m => m.ShippingInstructionID == allocationDetail.Code &&
                          m.LedgerID == Ledger.Constants.GOODS_ON_HAND).Select(m => m.HubID).FirstOrDefault();

               }
               else
               {
                   var detail = allocationDetail;
                   var code = detail.Code.ToString();
                   var projectCode =
                       _unitOfWork.ProjectCodeRepository.Get(t => t.Value == code).
                           FirstOrDefault();
                   if (projectCode != null) transaction.ProjectCodeID = projectCode.ProjectCodeID;

                   hubID2 = (int)_unitOfWork.TransactionRepository.FindBy(m => m.ProjectCodeID == allocationDetail.Code &&
                              m.LedgerID == Ledger.Constants.GOODS_ON_HAND).Select(m => m.HubID).FirstOrDefault();

               }

               if (hubID2 != 0)
               {
                   transaction2.HubID = hubID2;
               }

               else
               {
                   transaction2.HubID =
                                      _unitOfWork.HubAllocationRepository.FindBy(r => r.RequisitionID == allocation.ReliefRequisitionDetail.RequisitionID).Select(
                                              h => h.HubID).FirstOrDefault();

               }

               _unitOfWork.TransactionRepository.Add(transaction2);
               allocationDetail.TransactionGroupID = transactionGroup;
               _unitOfWork.SIPCAllocationRepository.Edit(allocationDetail);
               //result.Add(transaction);
               }
               var requisition = _unitOfWork.ReliefRequisitionRepository.FindById(requisitionID);
               requisition.Status = 4;
               _unitOfWork.ReliefRequisitionRepository.Edit(requisition);
               _unitOfWork.Save();
               //return result;
               return true;
        }
Пример #41
0
        public List<Models.Transaction> PostSIAllocation(int requisitionID)
        {
            List<Models.Transaction> result = new List<Models.Transaction>();
            var allocationDetails = _unitOfWork.SIPCAllocationRepository.Get(t => t.ReliefRequisitionDetail.RequisitionID == requisitionID);
            if (allocationDetails == null) return result;

            var transactionGroup = Guid.NewGuid();
            var transactionDate = DateTime.Now;
            _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup() { PartitionID = 0, TransactionGroupID = transactionGroup });

            //ProjectCodeID	ShippingInstructionID ProgramID QuantityInMT	QuantityInUnit	UnitID	TransactionDate	RegionID	Month	Round	DonorID	CommoditySourceID	GiftTypeID	FDP

            foreach (var allocationDetail in allocationDetails)
            {
                var transaction = new Models.Transaction();
                transaction.TransactionID = Guid.NewGuid();
                transaction.TransactionGroupID = transactionGroup;
                transaction.TransactionDate = transactionDate;
                transaction.UnitID = 1;

                transaction.QuantityInMT = -allocationDetail.AllocatedAmount;
                transaction.QuantityInUnit = -allocationDetail.AllocatedAmount;
                transaction.LedgerID = Models.Ledger.Constants.COMMITED_TO_FDP;
                transaction.CommodityID = allocationDetail.ReliefRequisitionDetail.CommodityID;
                transaction.FDPID = allocationDetail.ReliefRequisitionDetail.FDPID;
                transaction.ProgramID = (int)allocationDetail.ReliefRequisitionDetail.ReliefRequisition.ProgramID;
                transaction.RegionID = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionID;

                if (allocationDetail.AllocationType == "SI")
                {
                    transaction.ShippingInstructionID = allocationDetail.Code;
                }
                else
                {
                    transaction.ProjectCodeID = allocationDetail.Code;
                }
                _unitOfWork.TransactionRepository.Add(transaction);
               // result.Add(transaction);

                /*post Debit-Pledged To FDP*/
                var transaction2 = new Models.Transaction();
                transaction2.TransactionID = Guid.NewGuid();
                transaction2.TransactionGroupID = transactionGroup;
                transaction2.TransactionDate = transactionDate;
                transaction2.UnitID = 1;

                transaction2.QuantityInMT = allocationDetail.AllocatedAmount;
                transaction2.QuantityInUnit = allocationDetail.AllocatedAmount;
                transaction2.LedgerID = Models.Ledger.Constants.PLEDGED_TO_FDP;
                transaction2.CommodityID = allocationDetail.ReliefRequisitionDetail.CommodityID;
                transaction2.FDPID = allocationDetail.ReliefRequisitionDetail.FDPID;
                transaction2.ProgramID = (int)allocationDetail.ReliefRequisitionDetail.ReliefRequisition.ProgramID;
                transaction2.RegionID = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionID;
                _unitOfWork.TransactionRepository.Add(transaction2);

                //result.Add(transaction);

            }
            ReliefRequisition requisition = _unitOfWork.ReliefRequisitionRepository.FindById(requisitionID);
            requisition.Status = 4;
               _unitOfWork.Save();
              return result;
        }
Пример #42
0
        public bool PostDonationPlan(DonationPlanHeader donationPlanHeader)
        {
            var transactionGroup = Guid.NewGuid();
            var transactionDate = DateTime.Now;

            _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup()
            {
                PartitionID = 0,
                TransactionGroupID = transactionGroup
            });

            foreach (var donationPlanDetail in donationPlanHeader.DonationPlanDetails)
            {
                var transaction = new Models.Transaction
                                      {
                                          TransactionID = Guid.NewGuid(),
                                          ProgramID = donationPlanHeader.ProgramID,
                                          DonorID = donationPlanHeader.DonorID,
                                          CommoditySourceID = 1,
                                          QuantityInMT = donationPlanDetail.AllocatedAmount,
                                          TransactionGroupID = transactionGroup,
                                          TransactionDate = transactionDate,
                                          CommodityID = donationPlanHeader.CommodityID,
                                          ShippingInstructionID = donationPlanHeader.ShippingInstructionId,
                                          HubID = donationPlanDetail.HubID,
                                          LedgerID = Ledger.Constants.GOODS_RECIEVABLE
                                      };

                _unitOfWork.TransactionRepository.Add(transaction);

                transaction= new Models.Transaction
                                 {
                                     TransactionID = Guid.NewGuid(),
                                     ProgramID = donationPlanHeader.ProgramID,
                                     DonorID = donationPlanHeader.DonorID,
                                     CommoditySourceID = 1,
                                     QuantityInMT = -donationPlanDetail.AllocatedAmount,
                                     TransactionGroupID = transactionGroup,
                                     TransactionDate = transactionDate,
                                     CommodityID = donationPlanHeader.CommodityID,
                                     ShippingInstructionID = donationPlanHeader.ShippingInstructionId,
                                     HubID = donationPlanDetail.HubID,
                                     LedgerID = Ledger.Constants.GOODS_PROMISSED_GIFT_CERTIFICATE_COMMITED //good promissed - pledged is not in ledger list // Former LedgerID = 4
                                 };

                _unitOfWork.TransactionRepository.Add(transaction);
            }

            var donationHeader =
                _unitOfWork.DonationPlanHeaderRepository.FindById(donationPlanHeader.DonationHeaderPlanID);
            if (donationHeader!=null)
                donationPlanHeader.TransactionGroupID = transactionGroup;
            _unitOfWork.Save();
            return true;
        }
Пример #43
0
        public bool PostSIAllocation(int requisitionID)
        {
            var result = new List<Models.Transaction>();
            var allocationDetails = _unitOfWork.SIPCAllocationRepository.Get(t => t.ReliefRequisitionDetail.RequisitionID == requisitionID);
            if (allocationDetails == null) return false;

            var transactionGroup = Guid.NewGuid();
            var transactionDate = DateTime.Now;
            _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup() { PartitionID = 0, TransactionGroupID = transactionGroup });

            //ProjectCodeID	ShippingInstructionID ProgramID QuantityInMT	QuantityInUnit	UnitID	TransactionDate	RegionID	Month	Round	DonorID	CommoditySourceID	GiftTypeID	FDP

            foreach (var allocationDetail in allocationDetails)
            {
                var transaction = new Models.Transaction();
                transaction.TransactionID = Guid.NewGuid();
                transaction.TransactionGroupID = transactionGroup;
                transaction.TransactionDate = transactionDate;
                transaction.UnitID = 1;

                transaction.QuantityInMT = -allocationDetail.AllocatedAmount;
                transaction.QuantityInUnit = -allocationDetail.AllocatedAmount;
                transaction.LedgerID = Models.Ledger.Constants.COMMITED_TO_FDP;
                transaction.CommodityID = allocationDetail.ReliefRequisitionDetail.CommodityID;
                transaction.FDPID = allocationDetail.ReliefRequisitionDetail.FDPID;
                transaction.ProgramID = (int)allocationDetail.ReliefRequisitionDetail.ReliefRequisition.ProgramID;
                transaction.RegionID = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionID;
                transaction.PlanId = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionalRequest.PlanID;
                transaction.Round = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.Round;

                if (allocationDetail.AllocationType == TransactionConstants.Constants.SHIPPNG_INSTRUCTION)
                {
                    var siCode = allocationDetail.Code.ToString();
                    var shippingInstruction =
                        _unitOfWork.ShippingInstructionRepository.Get(t => t.Value == siCode).
                            FirstOrDefault();
                    if (shippingInstruction != null) transaction.ShippingInstructionID = shippingInstruction.ShippingInstructionID;
                }
                else
                {
                    var detail = allocationDetail;
                    var projectCode =
                        _unitOfWork.ProjectCodeRepository.Get(t => t.Value == detail.Code.ToString()).
                            FirstOrDefault();
                    if (projectCode != null) transaction.ProjectCodeID = projectCode.ProjectCodeID;
                }
                _unitOfWork.TransactionRepository.Add(transaction);
               // result.Add(transaction);

                /*post Debit-Pledged To FDP*/
                var transaction2 = new Models.Transaction();
                transaction2.TransactionID = Guid.NewGuid();
                transaction2.TransactionGroupID = transactionGroup;
                transaction2.TransactionDate = transactionDate;
                transaction2.UnitID = 1;

                transaction2.QuantityInMT = allocationDetail.AllocatedAmount;
                transaction2.QuantityInUnit = allocationDetail.AllocatedAmount;
                transaction2.LedgerID = Models.Ledger.Constants.PLEDGED_TO_FDP;
                transaction2.CommodityID = allocationDetail.ReliefRequisitionDetail.CommodityID;
                transaction2.FDPID = allocationDetail.ReliefRequisitionDetail.FDPID;
                transaction2.ProgramID = (int)allocationDetail.ReliefRequisitionDetail.ReliefRequisition.ProgramID;
                transaction2.RegionID = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionID;
                transaction.PlanId = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionalRequest.PlanID;
                transaction.Round = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.Round;

                if (allocationDetail.AllocationType == TransactionConstants.Constants.SHIPPNG_INSTRUCTION)
                {
                    var siCode = allocationDetail.Code.ToString();
                    var shippingInstruction =
                        _unitOfWork.ShippingInstructionRepository.Get(t => t.Value == siCode).
                            FirstOrDefault();
                    if (shippingInstruction != null) transaction.ShippingInstructionID = shippingInstruction.ShippingInstructionID;
                }
                else
                {
                    var detail = allocationDetail;
                    var projectCode =
                        _unitOfWork.ProjectCodeRepository.Get(t => t.Value == detail.Code.ToString()).
                            FirstOrDefault();
                    if (projectCode != null) transaction.ProjectCodeID = projectCode.ProjectCodeID;
                }
                _unitOfWork.TransactionRepository.Add(transaction2);
                allocationDetail.TransactionGroupID = transactionGroup;
                _unitOfWork.SIPCAllocationRepository.Edit(allocationDetail);
                //result.Add(transaction);
            }
            ReliefRequisition requisition = _unitOfWork.ReliefRequisitionRepository.FindById(requisitionID);
            requisition.Status = 4;
               _unitOfWork.Save();
              //return result;
            return true;
        }
Пример #44
0
        public List<Models.Transaction> PostPSNPPlan(RegionalPSNPPlan plan, Ration ration)
        {
            List<Models.Transaction> entries = new List<Models.Transaction>();
            List<int> regionalBenCount = new List<int>();
            for (int r = 0; r < plan.Duration; r++)
            {
                regionalBenCount.Add(0);
            }
            foreach (RegionalPSNPPlanDetail fdp in plan.RegionalPSNPPlanDetails)
            {
                for (int r = 0; r < fdp.FoodRatio; r++)
                {
                    regionalBenCount[r] += (int)fdp.BeneficiaryCount;
                }
            }
            for (int r = 0; r < plan.Duration; r++)
            {
                int noben = regionalBenCount[r];
                if (noben > 0)
                {
                    Guid transactionGroupID = Guid.NewGuid();
                    DateTime transactionDate = DateTime.Now;
                    foreach (RationDetail rd in ration.RationDetails)
                    {
                        decimal amount = rd.Amount * noben;

                        Models.Transaction entry2 = new Models.Transaction
                        {

                            CommodityID = rd.CommodityID,
                            Round = r + 1,
                            ProgramID = TransactionConstants.Constants.PSNP_PROGRAM_ID,
                            QuantityInUnit = amount,
                            UnitID=1,
                            QuantityInMT = amount,
                            LedgerID = Cats.Models.Ledger.Constants.REQUIRMENT_DOCUMENT_PALN, // previously 200
                            TransactionDate = transactionDate,
                            TransactionGroupID = transactionGroupID,
                            PlanId = plan.PlanId,
                            TransactionID = Guid.NewGuid(),
                        };
                        Models.Transaction entry1 = new Models.Transaction
                        {

                            CommodityID = rd.CommodityID,
                            Round = r + 1,
                            ProgramID = TransactionConstants.Constants.PSNP_PROGRAM_ID,
                            QuantityInUnit = -amount,
                            UnitID = 1,
                            QuantityInMT = -amount,
                            LedgerID = Cats.Models.Ledger.Constants.REQUIRMENT_DOCUMENT, //previously 100
                            TransactionDate = transactionDate,
                            TransactionGroupID = transactionGroupID,
                            PlanId = plan.PlanId,
                            TransactionID = Guid.NewGuid(),
                        };
                        _unitOfWork.TransactionRepository.Add(entry1);
                        _unitOfWork.TransactionRepository.Add(entry2);
                        _unitOfWork.Save();
                        entries.Add(entry1);
                        entries.Add(entry2);
                    }
                    plan.TransactionGroupID = transactionGroupID;
                    _unitOfWork.RegionalPSNPPlanRepository.Edit(plan);
                }
            }
            return entries;
        }
Пример #45
0
        public bool PostDeliveryReceipt(Guid deliveryID)
        {
            var delivery = _unitOfWork.DeliveryRepository.Get(t => t.DeliveryID == deliveryID, null, "DeliveryDetails").FirstOrDefault();
            if (delivery == null) return false;

            var transactionGroup = Guid.NewGuid();
            var transactionDate = DateTime.Now;
            _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup() { PartitionID = 0, TransactionGroupID = transactionGroup });
             var transaction = new Models.Transaction();
            transaction.TransactionID = Guid.NewGuid();
            var reliefRequisition = _unitOfWork.ReliefRequisitionRepository.Get(t => t.RequisitionNo == delivery.RequisitionNo).FirstOrDefault();
            if (reliefRequisition != null)
                transaction.ProgramID = reliefRequisition.ProgramID;
            var orDefault = _unitOfWork.DispatchRepository.Get(t => t.DispatchID == delivery.DispatchID).FirstOrDefault();
            if (orDefault !=null)
                transaction.DonorID = orDefault.DispatchAllocation.DonorID;
            transaction.TransactionGroupID = transactionGroup;
            transaction.TransactionDate = transactionDate;
            var dispatch = _unitOfWork.DispatchRepository.Get(t => t.DispatchID == delivery.DispatchID).FirstOrDefault();
            if (dispatch !=null)
                transaction.ShippingInstructionID = dispatch.DispatchAllocation.ShippingInstructionID;
            transaction.LedgerID = 18;
            transaction.FDPID = delivery.FDPID;
            var firstOrDefault = delivery.DeliveryDetails.FirstOrDefault();
            if (firstOrDefault != null)
            {
                transaction.CommodityID = firstOrDefault.CommodityID;
                transaction.QuantityInMT = firstOrDefault.ReceivedQuantity;
                transaction.QuantityInUnit = firstOrDefault.ReceivedQuantity;
                transaction.UnitID = firstOrDefault.UnitID;
            }
            _unitOfWork.TransactionRepository.Add(transaction);

            transaction = new Models.Transaction();
            transaction.TransactionID = Guid.NewGuid();
            //var reliefRequisition = _unitOfWork.ReliefRequisitionRepository.Get(t => t.RequisitionNo == distribution.RequisitionNo).FirstOrDefault();
            if (reliefRequisition != null)
                transaction.ProgramID = reliefRequisition.ProgramID;
            //var orDefault = _unitOfWorkhub.DispatchRepository.Get(t => t.DispatchID == distribution.DispatchID).FirstOrDefault();
            if (orDefault != null)
                transaction.DonorID = orDefault.DispatchAllocation.DonorID;
            transaction.TransactionGroupID = transactionGroup;
            transaction.TransactionDate = transactionDate;
            //var dispatch = _unitOfWorkhub.DispatchRepository.Get(t => t.DispatchID == distribution.DispatchID).FirstOrDefault();
            if (dispatch != null)
                transaction.ShippingInstructionID = dispatch.DispatchAllocation.ShippingInstructionID;
            transaction.LedgerID = 17;
            transaction.HubID = delivery.HubID;
            transaction.FDPID = delivery.FDPID;
            //var firstOrDefault = distribution.DeliveryDetails.FirstOrDefault();
            if (firstOrDefault != null)
            {
                transaction.CommodityID = firstOrDefault.CommodityID;
                transaction.QuantityInMT = firstOrDefault.ReceivedQuantity;
                transaction.QuantityInUnit = firstOrDefault.ReceivedQuantity;
                transaction.UnitID = firstOrDefault.UnitID;
            }
            _unitOfWork.TransactionRepository.Add(transaction);

            delivery.Status = 2;
            delivery.TransactionGroupID = transactionGroup;
            _unitOfWork.Save();
            return true;
        }
Пример #46
0
        public List<Models.Transaction> PostPSNPPlan(RegionalPSNPPlan plan, Ration ration)
        {
            List<Models.Transaction> entries = new List<Models.Transaction>();
            List<int> regionalBenCount = new List<int>();
            for (int r = 0; r < plan.Duration; r++)
            {
                regionalBenCount.Add(0);
            }
            foreach (RegionalPSNPPlanDetail fdp in plan.RegionalPSNPPlanDetails)
            {
                for (int r = 0; r < fdp.FoodRatio; r++)
                {
                    regionalBenCount[r] += (int)fdp.BeneficiaryCount;
                }
            }
            for (int r = 0; r < plan.Duration; r++)
            {
                int noben = regionalBenCount[r];
                if (noben > 0)
                {
                    foreach (RationDetail rd in ration.RationDetails)
                    {
                        decimal amount = rd.Amount * noben;

                        Models.Transaction entry2 = new Models.Transaction
                        {

                            CommodityID = rd.CommodityID,
                            Round = r + 1,
                            ProgramID = 2,
                            QuantityInUnit = -amount,
                            UnitID=1,
                            QuantityInMT = -amount,
                            LedgerID = 200
                        };
                        Models.Transaction entry1 = new Models.Transaction
                        {

                            CommodityID = rd.CommodityID,
                            Round = r + 1,
                            ProgramID = 2,
                            QuantityInUnit = amount,
                            UnitID = 1,
                            QuantityInMT = amount,
                            LedgerID = 100
                        };
                        entries.Add(entry1);
                        entries.Add(entry2);

                    }
                }
            }
            PostTransaction(entries);
            return entries;
        }
Пример #47
0
        public bool PostGiftCertificate(int giftCertificateId)
        {
            var giftCertificate = _unitOfWork.GiftCertificateRepository.Get(t => t.GiftCertificateID == giftCertificateId, null,"GiftCertificateDetails").FirstOrDefault();
               if(giftCertificate==null) return false;

            var transactionGroup = Guid.NewGuid();
            var transactionDate = DateTime.Now;
            _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup()
                                                           {
                                                               PartitionID = 0, TransactionGroupID = transactionGroup
                                                           });
            foreach (var giftCertificateDetail in giftCertificate.GiftCertificateDetails)
            {
                var transaction = new Models.Transaction();
                transaction.TransactionID = Guid.NewGuid();
                transaction.ProgramID = giftCertificate.ProgramID;
                transaction.DonorID = giftCertificate.DonorID;
                transaction.CommoditySourceID = giftCertificateDetail.DFundSourceID;
                transaction.GiftTypeID = giftCertificateDetail.DFundSourceID;
                transaction.QuantityInMT = giftCertificateDetail.WeightInMT;
                transaction.QuantityInUnit = giftCertificateDetail.WeightInMT;
                transaction.TransactionGroupID = transactionGroup;
                transaction.TransactionDate = transactionDate;
                transaction.UnitID = 1;
                transaction.LedgerID = Ledger.Constants.GOODS_PROMISSED_GIFT_CERTIFICATE_COMMITED;//Goods Promised - Gift Certificate - Commited not found in ledger list
                transaction.CommodityID = giftCertificateDetail.CommodityID;
               // transaction.ShippingInstructionID = giftCertificate.SINumber;
                _unitOfWork.TransactionRepository.Add(transaction);

                transaction = new Models.Transaction();
                transaction.TransactionID = Guid.NewGuid();
                transaction.ProgramID = giftCertificate.ProgramID;
                transaction.DonorID = giftCertificate.DonorID;
                transaction.QuantityInMT = -giftCertificateDetail.WeightInMT;
                transaction.TransactionGroupID = transactionGroup;
                transaction.TransactionDate = transactionDate;
                transaction.QuantityInUnit = giftCertificateDetail.WeightInMT;
                transaction.UnitID = 1;
                transaction.LedgerID = Ledger.Constants.GOODS_PROMISSED_PLEDGE;//Goods Promised - Pledge	 not found in ledger list

                _unitOfWork.TransactionRepository.Add(transaction);

            }

            giftCertificate.StatusID = 2;
            giftCertificate.TransactionGroupID = transactionGroup;
            _unitOfWork.Save();
            return true;
        }
Пример #48
0
        public bool PostSIAllocationUncommit(int requisitionID)
        {
            var allocationDetails = _unitOfWork.SIPCAllocationRepository.Get(t => t.ReliefRequisitionDetail.RequisitionID == requisitionID);
            if (allocationDetails == null) return false;

            var transactionGroup = Guid.NewGuid();
            var transactionDate = DateTime.Now;
            _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup { PartitionID = 0, TransactionGroupID = transactionGroup });

            //ProjectCodeID	ShippingInstructionID ProgramID QuantityInMT	QuantityInUnit	UnitID	TransactionDate	RegionID	Month	Round	DonorID	CommoditySourceID	GiftTypeID	FDP

            foreach (var allocationDetail in allocationDetails)
            {
                var transaction = new Models.Transaction
                {
                    TransactionID = Guid.NewGuid(),
                    TransactionGroupID = transactionGroup,
                    TransactionDate = transactionDate,
                    UnitID = 1
                };

                var allocation = allocationDetail;

                // I see some logical error here
                // what happens when hub x was selected and the allocation was made from hub y?
                //TOFIX:
                // Hub is required for this transaction
                // Try catch is danger!! Either throw the exception or use conditional statement.
                int hubID = 0;
                if (allocationDetail.AllocationType == TransactionConstants.Constants.SHIPPNG_INSTRUCTION)
                {
                    var siCode = allocationDetail.Code.ToString();
                    var shippingInstruction =
                        _unitOfWork.ShippingInstructionRepository.Get(t => t.Value == siCode).
                            FirstOrDefault();
                    if (shippingInstruction != null) transaction.ShippingInstructionID = shippingInstruction.ShippingInstructionID;

                    hubID = (int)_unitOfWork.TransactionRepository.FindBy(m => m.ShippingInstructionID == allocationDetail.Code &&
                           m.LedgerID == Ledger.Constants.GOODS_ON_HAND).Select(m => m.HubID).FirstOrDefault();

                }
                else
                {
                    var detail = allocationDetail;
                    var code = detail.Code.ToString();
                    var projectCode =
                        _unitOfWork.ProjectCodeRepository.Get(t => t.Value == code).
                            FirstOrDefault();
                    if (projectCode != null) transaction.ProjectCodeID = projectCode.ProjectCodeID;

                    hubID = (int)_unitOfWork.TransactionRepository.FindBy(m => m.ProjectCodeID == allocationDetail.Code &&
                               m.LedgerID == Ledger.Constants.GOODS_ON_HAND).Select(m => m.HubID).FirstOrDefault();

                }

                if (hubID != 0)
                {
                    transaction.HubID = hubID;
                }

                else
                {
                    transaction.HubID =
                                       _unitOfWork.HubAllocationRepository.FindBy(r => r.RequisitionID == allocation.ReliefRequisitionDetail.RequisitionID).Select(
                                               h => h.HubID).FirstOrDefault();

                }

                transaction.QuantityInMT = allocationDetail.AllocatedAmount;
                transaction.QuantityInUnit = allocationDetail.AllocatedAmount;
                transaction.LedgerID = Ledger.Constants.COMMITED_TO_FDP;
                transaction.CommodityID = allocationDetail.ReliefRequisitionDetail.CommodityID;
                transaction.FDPID = allocationDetail.ReliefRequisitionDetail.FDPID;
                transaction.ProgramID = (int)allocationDetail.ReliefRequisitionDetail.ReliefRequisition.ProgramID;
                transaction.RegionID = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionID;
                if (allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionalRequest!=null)
                {
                    transaction.PlanId = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionalRequest.PlanID;
                }

                transaction.Round = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.Round;

                if (allocationDetail.AllocationType == TransactionConstants.Constants.SHIPPNG_INSTRUCTION)
                {
                    transaction.ShippingInstructionID = allocationDetail.Code;
                }
                else
                {
                    transaction.ProjectCodeID = allocationDetail.Code;
                }
                _unitOfWork.TransactionRepository.Add(transaction);
                // result.Add(transaction);

                /*post Debit-Pledged To FDP*/
                var transaction2 = new Models.Transaction
                {
                    TransactionID = Guid.NewGuid(),
                    TransactionGroupID = transactionGroup,
                    TransactionDate = transactionDate,
                    UnitID = 1
                };

                //TOFIX: do not use try catch
                int hubID2 = 0;
                if (allocationDetail.AllocationType == TransactionConstants.Constants.SHIPPNG_INSTRUCTION)
                {
                    var siCode = allocationDetail.Code.ToString();
                    var shippingInstruction =
                        _unitOfWork.ShippingInstructionRepository.Get(t => t.Value == siCode).
                            FirstOrDefault();
                    if (shippingInstruction != null) transaction.ShippingInstructionID = shippingInstruction.ShippingInstructionID;

                    hubID2 = (int)_unitOfWork.TransactionRepository.FindBy(m => m.ShippingInstructionID == allocationDetail.Code &&
                           m.LedgerID == Ledger.Constants.GOODS_ON_HAND).Select(m => m.HubID).FirstOrDefault();

                }
                else
                {
                    var detail = allocationDetail;
                    var code = detail.Code.ToString();
                    var projectCode =
                        _unitOfWork.ProjectCodeRepository.Get(t => t.Value == code).
                            FirstOrDefault();
                    if (projectCode != null) transaction.ProjectCodeID = projectCode.ProjectCodeID;

                    hubID2 = (int)_unitOfWork.TransactionRepository.FindBy(m => m.ProjectCodeID == allocationDetail.Code &&
                               m.LedgerID == Ledger.Constants.GOODS_ON_HAND).Select(m => m.HubID).FirstOrDefault();

                }

                if (hubID2 != 0)
                {
                    transaction2.HubID = hubID2;
                }

                else
                {
                    transaction2.HubID =
                                       _unitOfWork.HubAllocationRepository.FindBy(r => r.RequisitionID == allocation.ReliefRequisitionDetail.RequisitionID).Select(
                                               h => h.HubID).FirstOrDefault();

                }
                transaction2.QuantityInMT = -allocationDetail.AllocatedAmount;
                transaction2.QuantityInUnit = -allocationDetail.AllocatedAmount;
                transaction2.LedgerID = Ledger.Constants.PLEDGED_TO_FDP;
                transaction2.CommodityID = allocationDetail.ReliefRequisitionDetail.CommodityID;
                transaction2.FDPID = allocationDetail.ReliefRequisitionDetail.FDPID;
                transaction2.ProgramID = (int)allocationDetail.ReliefRequisitionDetail.ReliefRequisition.ProgramID;
                transaction2.RegionID = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionID;
                if (allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionalRequest != null)
                {
                    transaction2.PlanId =
                        allocationDetail.ReliefRequisitionDetail.ReliefRequisition.RegionalRequest.PlanID;
                }
                transaction2.Round = allocationDetail.ReliefRequisitionDetail.ReliefRequisition.Round;

                if (allocationDetail.AllocationType == TransactionConstants.Constants.SHIPPNG_INSTRUCTION)
                {
                    var siCode = allocationDetail.Code.ToString();
                    var shippingInstruction =
                        _unitOfWork.ShippingInstructionRepository.Get(t => t.Value == siCode).
                            FirstOrDefault();
                    if (shippingInstruction != null) transaction.ShippingInstructionID = shippingInstruction.ShippingInstructionID;
                }
                else
                {
                    var detail = allocationDetail;
                    var code = detail.Code.ToString();
                    var projectCode =
                        _unitOfWork.ProjectCodeRepository.Get(t => t.Value == code).
                            FirstOrDefault();
                    if (projectCode != null) transaction.ProjectCodeID = projectCode.ProjectCodeID;
                }

                _unitOfWork.TransactionRepository.Add(transaction2);

                _unitOfWork.SIPCAllocationRepository.Delete(allocationDetail);
                //result.Add(transaction);
            }
            var requisition = _unitOfWork.ReliefRequisitionRepository.FindById(requisitionID);
            requisition.Status = (int) Cats.Models.Constant.ReliefRequisitionStatus.Approved;
            _unitOfWork.ReliefRequisitionRepository.Edit(requisition);
            _unitOfWork.Save();
            //return result;
            return true;
        }
Пример #49
0
        public List<Models.Transaction> PostHRDPlan(HRD hrd, Ration ration)
        {
            List<Models.Transaction> entries = new List<Models.Transaction>();
            List<int> regionalBenCount = new List<int>();
            ration = hrd.Ration;
            int RegionID=0;
            for (int r = 0; r < 12; r++)
            {
                regionalBenCount.Add(0);
            }
            foreach (HRDDetail fdp in hrd.HRDDetails)
            {
                for (int r = 0; r < fdp.DurationOfAssistance; r++)
                {
                    regionalBenCount[r] += (int)fdp.NumberOfBeneficiaries;
                    RegionID = fdp.AdminUnit.AdminUnit2.AdminUnit2.AdminUnitID;
                }
            }
            for (int r = 0; r < 12; r++)
            {
                int noben = regionalBenCount[r];
                if (noben > 0)
                {
                    foreach (RationDetail rd in ration.RationDetails)
                    {
                        decimal amount = rd.Amount * noben;

                        Models.Transaction entry2 = new Models.Transaction
                        {
                            RegionID = RegionID,
                            CommodityID = rd.CommodityID,
                            Round = r + 1,
                            ProgramID = 2,
                            QuantityInUnit = -amount,
                            UnitID = 1,
                            QuantityInMT = -amount,
                            LedgerID = 200
                        };
                        Models.Transaction entry1 = new Models.Transaction
                        {
                            RegionID = RegionID,
                            CommodityID = rd.CommodityID,
                            Round = r + 1,
                            ProgramID = 2,
                            QuantityInUnit = amount,
                            UnitID = 1,
                            QuantityInMT = amount,
                            LedgerID = 100
                        };
                        entries.Add(entry1);
                        entries.Add(entry2);

                    }
                }
            }
            return entries;
        }
Пример #50
0
        public bool PostLoan(LoanReciptPlan loanReciptPlan)
        {
            var transactionGroup = Guid.NewGuid();
            var transactionDate = DateTime.Now;

            _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup()
            {
                PartitionID = 0,
                TransactionGroupID = transactionGroup
            });

            foreach (var loan in loanReciptPlan.LoanReciptPlanDetails)
            {

                var transaction = new Models.Transaction()
                                            {
                                                TransactionID = Guid.NewGuid(),
                                                CommoditySourceID =Models.Constant.CommoditySourceConst.Constants.LOAN,
                                                CommodityID = loan.LoanReciptPlan.CommodityID,
                                                ParentCommodityID = loan.LoanReciptPlan.Commodity.ParentID,
                                                ShippingInstructionID = loanReciptPlan.ShippingInstruction.ShippingInstructionID,
                                                QuantityInMT = loan.RecievedQuantity,
                                                HubID = loan.HubID,
                                                TransactionDate = transactionDate,
                                                TransactionGroupID = transactionGroup
                                               // LedgerID = Cats.Models.Ledger.Constants
                                            };

                _unitOfWork.TransactionRepository.Add(transaction);

                transaction = new Models.Transaction()
                {
                    TransactionID = Guid.NewGuid(),
                    CommoditySourceID = Models.Constant.CommoditySourceConst.Constants.LOAN,
                    CommodityID = loan.LoanReciptPlan.CommodityID,
                    ParentCommodityID = loan.LoanReciptPlan.Commodity.ParentID,
                    ShippingInstructionID = loanReciptPlan.ShippingInstruction.ShippingInstructionID,
                    QuantityInMT = loan.RecievedQuantity,
                    HubID = loan.HubID,
                    TransactionDate = transactionDate,
                    TransactionGroupID = transactionGroup
                    // LedgerID = Cats.Models.Ledger.Constants
                };

                _unitOfWork.TransactionRepository.Add(transaction);

            }

            try
            {
                _unitOfWork.Save();
                return true;
            }
            catch (Exception)
            {

                return false;
            }
            return true;
        }
Пример #51
0
        public bool PostLocalPurchase(List<LocalPurchaseDetail> localPurchaseDetail)
        {
            var transactionGroup = Guid.NewGuid();
            var transactionDate = DateTime.Now;

            _unitOfWork.TransactionGroupRepository.Add(new TransactionGroup()
            {
                PartitionID = 0,
                TransactionGroupID = transactionGroup
            });

            if (localPurchaseDetail != null)
                foreach (var detail in localPurchaseDetail)
                {
                    var transaction = new Models.Transaction
                                          {
                                              TransactionID = Guid.NewGuid(),
                                              CommoditySourceID =
                                                  Models.Constant.CommoditySourceConst.Constants.LOCALPURCHASE,
                                              CommodityID = detail.LocalPurchase.CommodityID,
                                              ParentCommodityID = detail.LocalPurchase.Commodity.ParentID,
                                              DonorID = detail.LocalPurchase.DonorID,
                                              HubID = detail.HubID,
                                              ProgramID = detail.LocalPurchase.ProgramID,

                                              QuantityInMT = detail.AllocatedAmount,
                                              QuantityInUnit = detail.AllocatedAmount,
                                              ShippingInstructionID = detail.LocalPurchase.ShippingInstructionID,
                                              TransactionDate = transactionDate,
                                              TransactionGroupID = transactionGroup
                                              //LedgerID =  Models.Ledger.Constants
                                          };

                    _unitOfWork.TransactionRepository.Add(transaction);

                    transaction = new Models.Transaction
                    {
                        TransactionID = Guid.NewGuid(),
                        CommoditySourceID =
                            Models.Constant.CommoditySourceConst.Constants.LOCALPURCHASE,
                        CommodityID = detail.LocalPurchase.CommodityID,
                        ParentCommodityID = detail.LocalPurchase.Commodity.ParentID,
                        DonorID = detail.LocalPurchase.DonorID,
                        HubID = detail.HubID,
                        ProgramID = detail.LocalPurchase.ProgramID,

                        QuantityInMT = detail.AllocatedAmount,
                        QuantityInUnit = detail.AllocatedAmount,
                        ShippingInstructionID = detail.LocalPurchase.ShippingInstructionID,
                        TransactionDate = transactionDate,
                        TransactionGroupID = transactionGroup
                        //LedgerID =  Models.Ledger.Constants
                    };

                    _unitOfWork.TransactionRepository.Add(transaction);

                }
            try
            {
                _unitOfWork.Save();
                return true;
            }
            catch (Exception)
            {
                return false;

            }
        }