Exemplo n.º 1
0
        public static List <StockTransactionModel> GetStockTransactionModels(List <string> datas)
        {
            int count = 8;
            List <StockTransactionModel> result = new List <StockTransactionModel>();

            try
            {
                datas.ForEach(data =>
                {
                    var arrs = data.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                    if (arrs.Count() == count)
                    {
                        StockTransactionModel model = new StockTransactionModel();
                        model.Time      = arrs[0];
                        model.Price     = double.Parse(arrs[1]);
                        model.DealHands = double.Parse(arrs[2]);
                        model.DealType  = (BuyOrSale)int.Parse(arrs[3]);
                        //model.SX = double.Parse(arrs[4]);
                        //model.XX = double.Parse(arrs[5]);
                        model.Status     = (StockStatus)int.Parse(arrs[4]);
                        model.DealHands2 = double.Parse(arrs[5]);
                        model.Unknow2    = int.Parse(arrs[6]);
                        model.Unknow3    = int.Parse(arrs[7]);
                        result.Add(model);
                    }
                });
            }
            catch
            {
            }
            return(result.OrderBy(item => item.Time).ToList());
        }
Exemplo n.º 2
0
 private void SetData(StockTransactionModel model)
 {
     if (model != null)
     {
         this.Code           = model.Code;
         this.Name           = model.Name;
         this.CurrentPercent = model.CurrentPercent;
         this.Time           = model.Time;
         this.Price          = model.Price;
         this.DealHands      = model.DealHands;
         this.DealType       = model.DealType;
         this.Status         = model.Status;
         this.DealHands2     = model.DealHands2;
         this.Unknow2        = model.Unknow2;
         this.Unknow3        = model.Unknow3;
         this.CurrentTime    = DateTime.Now.ToString("HH:mm:ss");
         if (!string.IsNullOrEmpty(model.Topic))
         {
             var topics = model.Topic.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
             foreach (var topic in topics)
             {
                 var        url  = CommonStockDataManager.Instance.GetStorageSectionUrl(topic);
                 TopicModel temp = new TopicModel();
                 temp.Topic  = topic;
                 temp.UrlStr = url;
                 this.TopicModels.Add(temp);
             }
         }
     }
 }
        public (bool isUpdateExist, QuantityBalanceModel balance) Calculating(StockTransactionModel transaction,
                                                                              IEnumerable <QuantityBalanceModel> quantityBalanceModels)
        {
            var qtyBalanceByProduct = quantityBalanceModels
                                      .FirstOrDefault(p =>
                                                      p.ProductCode == transaction.ProductCode &&
                                                      p.TimeToStock == transaction.TimeToStock &&
                                                      p.LocationId == transaction.LocationId);

            if (qtyBalanceByProduct is default(QuantityBalanceModel))
            {
                return(false, TranDataToQtyBalanceModel(transaction.Io == StockIo.In, transaction));
            }

            if (transaction.Io == StockIo.In)
            {
                qtyBalanceByProduct.Quantity += transaction.Quantity;
            }
            else
            {
                qtyBalanceByProduct.Quantity -= transaction.Quantity;
            }

            return(true, qtyBalanceByProduct);
        }
Exemplo n.º 4
0
 protected override (bool isDataExist, CostsBalanceModel balance) GetOutCalculateResult(
     StockTransactionModel transaction,
     CostsBalanceModel currentBalanceData, string targetLocationId)
 {
     return(currentBalanceData is default(CostsBalanceModel)
         ? (false, TranDataToValueBalanceModel(true, targetLocationId, transaction))
         : (true, currentBalanceData));
 }
Exemplo n.º 5
0
 protected CostsBalanceModel TranDataToValueBalanceModel(bool isIntoStock, string locationId,
                                                         StockTransactionModel transactionItem)
 {
     return(new CostsBalanceModel
     {
         LocationId = locationId,
         ProductCode = transactionItem.ProductCode,
         Quantity = transactionItem.Quantity * (isIntoStock ? 1 : -1),
         TimeToStock = transactionItem.TimeToStock,
         Values = transactionItem.UnitPrice * transactionItem.Quantity,
         UnitValues = transactionItem.UnitPrice
     });
 }
Exemplo n.º 6
0
        protected override (bool isDataExist, CostsBalanceModel balance) GetInCalculateResult(
            StockTransactionModel transaction,
            CostsBalanceModel currentBalanceData, string targetLocationId)
        {
            if (currentBalanceData is default(CostsBalanceModel))
            {
                return(false, TranDataToValueBalanceModel(true, targetLocationId, transaction));
            }

            currentBalanceData.Quantity  += transaction.Quantity;
            currentBalanceData.Values    += transaction.UnitPrice * transaction.Quantity;
            currentBalanceData.UnitValues = currentBalanceData.Values / currentBalanceData.Quantity;
            return(true, currentBalanceData);
        }
Exemplo n.º 7
0
        public (bool isUpdateExist, CostsBalanceModel balance) Calculating(StockTransactionModel transaction,
                                                                           IEnumerable <CostsBalanceModel> costsBalanceModels,
                                                                           bool byLocationId)
        {
            var orderResult = GetOrderResult(costsBalanceModels);

            var currentBalanceData = GetCurrentBalanceData(orderResult, transaction.ProductCode,
                                                           transaction.TimeToStock, transaction.LocationId);

            switch (transaction.Io)
            {
            case StockIo.Out:
                return(GetOutCalculateResult(transaction, currentBalanceData));

            case StockIo.In:
                return(GetInCalculateResult(transaction, currentBalanceData));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Exemplo n.º 8
0
        //This is complete transaction for ReturnToVendorTransaction
        //1. Add ReturnToVendorItems
        //2. Add StockTransaction
        //3. Update StockUpdate (AvailableQuantity)
        public static Boolean ReturnToVendorTransaction(List <ReturnToVendorItemsModel> retrnToVendorItemsFromClient, InventoryDbContext inventoryDbContext)
        {
            //Transaction Begin
            //We first Need to make Stock, Stock_Transaction Object with WriteOff data (which has client data)
            using (var dbContextTransaction = inventoryDbContext.Database.BeginTransaction())
            {
                try
                {
                    //This is updated list of stock records after write off items
                    List <StockModel> stockListForUpdate = new List <StockModel>();
                    //This is transaction list of write off items
                    List <StockTransactionModel> stockTxnListForInsert = new List <StockTransactionModel>();
                    //This is WriteOff List for insert into writeOff table
                    List <ReturnToVendorItemsModel> retrnToVndrListForInsert = new List <ReturnToVendorItemsModel>();

                    //Stock data
                    foreach (var rtvItm in retrnToVendorItemsFromClient)
                    {
                        StockModel curStock = new StockModel();

                        curStock = GetStockbyStockId(rtvItm.StockId, inventoryDbContext);
                        //curStock.StockId = rtvItm.StockId;
                        curStock.AvailableQuantity = curStock.AvailableQuantity - rtvItm.Quantity;

                        stockListForUpdate.Add(curStock);
                    }

                    //ReturnToVendorItems data
                    foreach (var retItm in retrnToVendorItemsFromClient)
                    {
                        ReturnToVendorItemsModel retVendor = new ReturnToVendorItemsModel();

                        retVendor = rtvClone(retItm);

                        retrnToVndrListForInsert.Add(retVendor);
                    }

                    //Save ReturnToVendorItems in database
                    AddretrnToVndrItems(inventoryDbContext, retrnToVndrListForInsert);

                    //stocktxn data
                    foreach (var rtvItem in retrnToVndrListForInsert)
                    {
                        StockTransactionModel stkTxnItem = new StockTransactionModel();

                        stkTxnItem.StockId         = rtvItem.StockId;
                        stkTxnItem.Quantity        = (int)rtvItem.Quantity;
                        stkTxnItem.InOut           = "out";
                        stkTxnItem.ReferenceNo     = rtvItem.ReturnToVendorItemId;
                        stkTxnItem.CreatedBy       = rtvItem.CreatedBy;
                        stkTxnItem.TransactionType = "returntovendor";

                        stockTxnListForInsert.Add(stkTxnItem);
                    }

                    //Save Stock Transaction record
                    AddStockTransaction(inventoryDbContext, stockTxnListForInsert);
                    //Update Stock records
                    UpdateStockAvailQty(inventoryDbContext, stockListForUpdate);
                    //Commit Transaction
                    dbContextTransaction.Commit();
                    return(true);
                }
                catch (Exception ex)
                {
                    //Rollback all transaction if exception occured  i.e. WriteOff Insertion, Stock_Transaction Insertion, Stock Updation
                    dbContextTransaction.Rollback();
                    throw ex;
                }
            }
        }
Exemplo n.º 9
0
        //This function is Transaction and do followig things
        //1) Save WriteOff Items entry in WriteOff Table    2) WriteOff Items Entry in Stock_Transaction table
        //3) Update Stock Table Quantity
        public static Boolean WriteOffItemsTransaction(List <WriteOffItemsModel> writeOffItemsFromClient, InventoryDbContext inventoryDbContext)
        {
            //Transaction Begin
            //We first Need to make Stock, Stock_Transaction Object with WriteOff data (which has client data)
            using (var dbContextTransaction = inventoryDbContext.Database.BeginTransaction())
            {
                try
                {
                    //This is updated list of stock records after write off items
                    List <StockModel> stockListForUpdate = new List <StockModel>();
                    //This is transaction list of write off items
                    List <StockTransactionModel> stockTxnListForInsert = new List <StockTransactionModel>();
                    //This is WriteOff List for insert into writeOff table
                    List <WriteOffItemsModel> writeOffListForInsert = new List <WriteOffItemsModel>();
                    var createdOn = DateTime.Now;

                    for (int i = 0; i < writeOffItemsFromClient.Count; i++)
                    {
                        List <StockModel> currStockList = new List <StockModel>();
                        currStockList = GetStockItemsByItemIdBatchNO(writeOffItemsFromClient[i].ItemId, writeOffItemsFromClient[i].BatchNO, inventoryDbContext);
                        if (currStockList.Count > 0)
                        {
                            foreach (var currStkItm in currStockList)
                            {
                                if (writeOffItemsFromClient[i].WriteOffQuantity > 0)
                                {
                                    //When stockItem availableQuantity is > WriteOffQuantity
                                    if (currStkItm.AvailableQuantity > writeOffItemsFromClient[i].WriteOffQuantity)
                                    {
                                        WriteOffItemsModel woItemsClone = new WriteOffItemsModel();
                                        //Clone WriteList item
                                        woItemsClone = Clone(writeOffItemsFromClient[i]);
                                        currStkItm.AvailableQuantity = currStkItm.AvailableQuantity - woItemsClone.WriteOffQuantity.Value;
                                        //Push Updated StockItem into StockList for Update Stock
                                        stockListForUpdate.Add(currStkItm);
                                        woItemsClone.StockId            = currStkItm.StockId;
                                        woItemsClone.GoodsReceiptItemId = currStkItm.GoodsReceiptItemId;
                                        woItemsClone.WriteOffQuantity   = woItemsClone.WriteOffQuantity.Value;
                                        woItemsClone.Remark             = woItemsClone.Remark.ToString();
                                        woItemsClone.CreatedOn          = createdOn;
                                        //Push Updated WriteOff Item Into WriteOffItemList for Save
                                        writeOffListForInsert.Add(woItemsClone);
                                        //updated Current WriteOff Item Quantity as 0
                                        writeOffItemsFromClient[i].WriteOffQuantity = 0;
                                    }
                                    else if (currStkItm.AvailableQuantity < writeOffItemsFromClient[i].WriteOffQuantity)
                                    {
                                        //when curStkItm.AvailableQuantity< woitm.WriteOffQuantity

                                        WriteOffItemsModel woItemsClone = new WriteOffItemsModel();
                                        woItemsClone                  = Clone(writeOffItemsFromClient[i]);
                                        woItemsClone.StockId          = currStkItm.StockId;
                                        woItemsClone.WriteOffQuantity = currStkItm.AvailableQuantity;
                                        //double and decimal can't multiply so, need explicitly typecasting
                                        woItemsClone.TotalAmount        = (decimal)currStkItm.AvailableQuantity * woItemsClone.ItemRate.Value;
                                        woItemsClone.GoodsReceiptItemId = currStkItm.GoodsReceiptItemId;
                                        //Push Updated WriteOff Item Into WriteOffItemList for Save
                                        writeOffListForInsert.Add(woItemsClone);
                                        currStkItm.AvailableQuantity = 0;
                                        //Push Updated StockItem into StockList for Update Stock
                                        stockListForUpdate.Add(currStkItm);
                                        writeOffItemsFromClient[i].WriteOffQuantity = writeOffItemsFromClient[i].WriteOffQuantity - currStkItm.AvailableQuantity;
                                    }
                                }
                            }
                        }
                    }
                    //Save WriteOffItems in database
                    AddWriteOffItems(inventoryDbContext, writeOffListForInsert);

                    //Make Fill data into Stock_transaction object for save into INV_TXN_StockTransaction table
                    foreach (var woItem in writeOffListForInsert)
                    {
                        StockTransactionModel stkTxnItem = new StockTransactionModel();
                        //StockTxnId,StockId,Quantity,InOut, ReferenceNo CreatedBy ,CreatedOn,TransactionType
                        stkTxnItem.StockId         = woItem.StockId;
                        stkTxnItem.Quantity        = (int)woItem.WriteOffQuantity;
                        stkTxnItem.InOut           = "out";
                        stkTxnItem.ReferenceNo     = woItem.WriteOffId;
                        stkTxnItem.CreatedBy       = woItem.CreatedBy;
                        stkTxnItem.TransactionType = "writeoff";
                        //Push current StkTxnItem into StkTxnItemList for Save to database
                        stockTxnListForInsert.Add(stkTxnItem);
                    }

                    //Save Stock Transaction record
                    AddStockTransaction(inventoryDbContext, stockTxnListForInsert);
                    //Update Stock records
                    UpdateStock(inventoryDbContext, stockListForUpdate);
                    //Commit Transaction
                    dbContextTransaction.Commit();
                    return(true);
                }
                catch (Exception ex)
                {
                    //Rollback all transaction if exception occured  i.e. WriteOff Insertion, Stock_Transaction Insertion, Stock Updation
                    dbContextTransaction.Rollback();
                    throw ex;
                }
            }
        }
Exemplo n.º 10
0
 protected abstract (bool isDataExist, CostsBalanceModel balance) GetOutCalculateResult(StockTransactionModel transaction,
                                                                                        CostsBalanceModel currentBalanceData, string targetLocationId);
Exemplo n.º 11
0
 public StockModel(StockTransactionModel model) : this()
 {
     SetData(model);
     this.TypeString = ResourceHelper.FindKey("Monitor_TypeString_BigDeal");
 }
        public static Boolean BackToInventoryTransfer(WARDStockModel stkTransferfromClient, WardSupplyDbContext wardSupplyDbContext, RbacUser currentUser)
        {
            //Transaction Begin
            using (var dbContextTransaction = wardSupplyDbContext.Database.BeginTransaction())
            {
                try
                {
                    List <Boolean> flag = new List <bool>(); //for checking all transaction status


                    var            AvailableQuantity = (int)(Convert.ToDecimal(stkTransferfromClient.AvailableQuantity)) - (int)(Convert.ToDecimal(stkTransferfromClient.DispachedQuantity));
                    WARDStockModel stockDetail       = (from stock in wardSupplyDbContext.WARDStockModel
                                                        where stock.StockId == stkTransferfromClient.StockId && stock.ItemId == stkTransferfromClient.ItemId && stock.DepartmentId == stkTransferfromClient.DepartmentId && stock.StockType == "inventory"
                                                        select stock
                                                        ).FirstOrDefault();
                    stockDetail.AvailableQuantity = AvailableQuantity;

                    wardSupplyDbContext.Entry(stockDetail).Property(a => a.AvailableQuantity).IsModified = true;
                    //add to transaction table
                    var selectedstockTxnItm = new WARDTransactionModel();
                    selectedstockTxnItm.WardId          = stkTransferfromClient.DepartmentId;
                    selectedstockTxnItm.newWardId       = stkTransferfromClient.newWardId;
                    selectedstockTxnItm.ItemId          = stkTransferfromClient.ItemId;
                    selectedstockTxnItm.StockId         = stkTransferfromClient.StockId;
                    selectedstockTxnItm.TransactionId   = 0;
                    selectedstockTxnItm.Quantity        = (int)(Convert.ToDecimal(stkTransferfromClient.DispachedQuantity));
                    selectedstockTxnItm.TransactionType = "BackToInventory";
                    selectedstockTxnItm.Remarks         = stkTransferfromClient.Remarks;
                    selectedstockTxnItm.CreatedBy       = currentUser.UserName;
                    selectedstockTxnItm.CreatedOn       = DateTime.Now;
                    selectedstockTxnItm.IsWard          = false;
                    wardSupplyDbContext.TransactionModel.Add(selectedstockTxnItm);
                    wardSupplyDbContext.SaveChanges();

                    //add stock to inventory
                    var inventoryStock = new StockModel();
                    inventoryStock = (from stock in wardSupplyDbContext.INVStockMaster
                                      where stock.ItemId == stkTransferfromClient.ItemId && stock.BatchNO == stkTransferfromClient.BatchNo
                                      select stock).FirstOrDefault();
                    if (inventoryStock != null)
                    {
                        inventoryStock.AvailableQuantity = inventoryStock.AvailableQuantity + (int)(Convert.ToDecimal(stkTransferfromClient.DispachedQuantity));
                        wardSupplyDbContext.Entry(inventoryStock).Property(a => a.AvailableQuantity).IsModified = true;
                        wardSupplyDbContext.SaveChanges();
                        var stockTransaction = new StockTransactionModel();
                        stockTransaction.StockId         = inventoryStock.StockId;
                        stockTransaction.Quantity        = (int)(Convert.ToDecimal(stkTransferfromClient.DispachedQuantity));
                        stockTransaction.InOut           = "in";
                        stockTransaction.ReferenceNo     = inventoryStock.GoodsReceiptItemId;
                        stockTransaction.CreatedBy       = currentUser.EmployeeId;
                        stockTransaction.CreatedOn       = DateTime.Now;
                        stockTransaction.TransactionType = "Sent From WardSupply";
                        wardSupplyDbContext.INVStockTransaction.Add(stockTransaction);
                        wardSupplyDbContext.SaveChanges();
                    }
                    //add to stock transaction in inventory
                    dbContextTransaction.Commit();//Commit Transaction
                    return(true);
                }
                catch (Exception ex)
                {
                    dbContextTransaction.Rollback();
                    throw ex;
                }
                //return false;
            }
        }
 public QuantityBalanceModel TranDataToQtyBalanceModel(bool isIntoStock,
                                                       StockTransactionModel transactionItem)
 {
     return(new QuantityBalanceModel
     {
         ExpiryDate = default,
Exemplo n.º 14
0
 public (bool isUpdateExist, QuantityBalanceModel balance) Calculating(StockTransactionModel transaction,
                                                                       IEnumerable <QuantityBalanceModel> quantityBalanceModels)
 {
     throw new System.NotImplementedException();
 }