public async Task <IActionResult> Put([FromRoute] int id, [FromBody] StockCount stockCount)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != stockCount.Id)
            {
                return(BadRequest());
            }

            _context.Entry(stockCount).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!StockCountExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <IActionResult> Post([FromBody] StockCount stockCount)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var promotionPromoterId =
                Convert.ToInt32(((ClaimsIdentity)HttpContext.User.Identity).FindFirst(ClaimTypes.GroupSid).Value);

            var promotionPromoter =
                await _context.PromotionPromoter.SingleOrDefaultAsync(a => a.Id == promotionPromoterId);

            var promotionProduct = await _context.PromotionProduct.SingleOrDefaultAsync(a =>
                                                                                        a.ProductId == stockCount.ProductId && a.PromotionId == promotionPromoter.PromotionId);

            stockCount.PromotionProductId = promotionProduct.Id;
            stockCount.PromoterId         = promotionPromoter.PromoterId;
            stockCount.ModifiedDate       = DateTime.Now;
            stockCount.IsActive           = true;
            stockCount.ModifiedUserId     =
                Convert.ToInt32(((ClaimsIdentity)HttpContext.User.Identity).FindFirst(ClaimTypes.Sid).Value);

            _context.StockCount.Add(stockCount);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("Get", new { id = stockCount.Id }, stockCount));
        }
        public int SaveCountAndAdjustStock(CountAndAdjustStockForm casForm)
        {
            try
            {
                using (SASEntitiesEDM entities = new SASEntitiesEDM())
                {
                    foreach (var item in casForm.CountAndAdjustStockDetails)
                    {
                        StockCount obj = new StockCount();
                        obj.Stock_count_no = casForm.CountAndAdjustStock.StockCountNo;
                        obj.StockDate      = casForm.CountAndAdjustStock.StockDate;
                        obj.StockType      = casForm.CountAndAdjustStock.StockType;

                        //saving details entity
                        obj.PSID       = item.PSID;
                        obj.PandS_Code = item.PandSCode;
                        obj.PandS_Name = item.PandSName;
                        //obj.SysQty = Math.Abs(Convert.ToInt32(item.SystemQty));
                        obj.SysQty          = item.SystemQty;
                        obj.CountQty        = item.CountQty;
                        obj.Difference      = item.Difference;
                        obj.Average_Cost    = Convert.ToDecimal(item.AvgCost);
                        obj.Amount          = item.Amount;
                        obj.Adjusted_Amount = Convert.ToDecimal(item.AdjustedAmount);
                        obj.UpdatedBy       = 0;
                        obj.UpdatedDate     = DateTime.Now;

                        entities.StockCounts.Add(obj);
                        entities.SaveChanges();

                        ProductsAndService ps = entities.ProductsAndServices.SingleOrDefault(e => e.ID == item.PSID);
                        if (ps != null)
                        {
                            if (casForm.CountAndAdjustStock.StockType == Convert.ToByte(Stock_Type.StockTake))
                            {
                                ps.PandS_Qty_in_stock = ps.PandS_Qty_in_stock + item.Difference;
                                ps.PandS_Stock_Value  = ps.PandS_Stock_Value - Convert.ToDecimal(item.AdjustedAmount);
                                entities.SaveChanges();
                            }
                            else
                            {
                                ps.PandS_Qty_in_stock = ps.PandS_Qty_in_stock + item.Difference;
                                entities.SaveChanges();
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(0);

                throw ex;
            }
            return(1);
        }
 public void UpdateStockCount(StockCount stockCount)
 {
     context.Entry(stockCount).State = EntityState.Modified;
 }
 public void InsertStockCount(StockCount stockCount)
 {
     context.StockCounts.Add(stockCount);
 }
        //From WMS
        #region ParseStockCounts
        public static List <StockCount> ParseStockCounts(DataTable scRecords)
        {
            List <StockCount> stockCounts = new List <StockCount>();

            foreach (DataRow row in scRecords.Rows)
            {
                #region Stock Count Mapping
                StockCount stockCount = new StockCount();

                stockCount.RowID = row["ROWID"].ToString();

                // 1. 'SC' (2C)
                stockCount.TransactionCode = row["FIELD001"] as string;

                // 2. Warehouse (6C)
                stockCount.Warehouse = row["FIELD002"] as string;

                // 4. Product Code (20C)
                stockCount.ProductCode = row["FIELD004"] as string;

                // 5. Bin Location (8C)
                stockCount.BinLocation = row["FIELD005"] as string;

                // 6. Bin On-Hand (10N)
                if (row["FIELD006"].ToString().Length > 0)
                {
                    stockCount.Quantity = decimal.Parse(row["FIELD006"] as string);
                }

                // 7. Product On-Hand (10N)
                if (row["FIELD007"].ToString().Length > 0)
                {
                    stockCount.WarehouseQty = decimal.Parse(row["FIELD007"] as string);
                }

                // 8. Total On-Hand (10N)
                if (row["FIELD008"].ToString().Length > 0)
                {
                    stockCount.TotalQty = decimal.Parse(row["FIELD008"] as string);
                }

                // 9. UPC (14C)
                stockCount.UPC = row["FIELD009"] as string;

                // 10. Attribute 1 (25C)
                stockCount.Attribute1 = row["FIELD010"] as string;

                // 11. Attribute 2 (25C)
                stockCount.Attribute2 = row["FIELD011"] as string;

                // 12. Attribute 3 (25C)
                stockCount.Attribute3 = row["FIELD012"] as string;

                // 13. Attribute 4 (6C)
                stockCount.Attribute4 = row["FIELD013"] as string;

                // 14. Attribute 5 (6C)
                stockCount.Attribute5 = row["FIELD014"] as string;

                // 15. Attribute 6 (6C)
                stockCount.Attribute6 = row["FIELD015"] as string;

                // 16. FIFO Date (D)
                if (row["FIELD016"].ToString().Length > 0)
                {
                    stockCount.ExpiryDate = DateTime.ParseExact(row["FIELD016"].ToString(), "yyyyMMdd", CultureInfo.InvariantCulture);
                }

                // 17. Pack Size (6N)
                if (row["FIELD017"].ToString().Length > 0)
                {
                    stockCount.UnitOfMeasureMultiplier = row["FIELD017"] as string;
                }

                // 18. Attribute 7 (6C)
                stockCount.Attribute7 = row["FIELD018"] as string;

                // 19. Attribute 8 (6C)
                stockCount.Attribute8 = row["FIELD019"] as string;

                // 20. Attribute 9 (6C)
                stockCount.Attribute9 = row["FIELD020"] as string;

                // 21. Attribute 10 (6C)
                stockCount.Attribute10 = row["FIELD021"] as string;

                // 23. On-Hand at that Pack Size (10N)
                if (row["FIELD023"].ToString().Length > 0)
                {
                    stockCount.QtyInPacksize = decimal.Parse(row["FIELD023"] as string);
                }

                // 24. ClientName (10C)
                stockCount.ClientName = row["FIELD024"] as string;

                // 25. Reserved Indicator (Y/N) (1C)
                if (row["FIELD025"].ToString().Trim().Equals("Y"))
                {
                    stockCount.IsReserved = true;
                }

                // 26. At-Shipping (8N)
                if (row["FIELD026"].ToString().Length > 0)
                {
                    stockCount.AtShipQty = decimal.Parse(row["FIELD026"] as string);
                }

                // 27. At-Receiving (8N)
                if (row["FIELD027"].ToString().Length > 0)
                {
                    stockCount.AtReceiveQty = decimal.Parse(row["FIELD027"] as string);
                }
                #endregion

                stockCounts.Add(stockCount);
            }

            return(stockCounts);
        }
    protected void InsertToStockCount(DateTime date)
    {
        string sql = string.Format(@"select * from (select tab_in.No,tab_in.DoNo,tab_in.Product,tab_in.LotNo,tab_in.Id,
tab_in.PartyId,tab_in.PartyName,tab_in.PartyAdd,tab_in.DoDate,tab_in.PoNo,tab_in.Remark,tab_in.GrossWeight,tab_in.NettWeight
,tab_in.Qty1 as InQty,tab_in.PermitNo,tab_in.PartyInvNo,tab_in.PalletNo,tab_in.Remark1,
isnull(tab_in.Qty2,0) as BadQty,isnull(tab_in.Qty3,0) as InPallet,tab_hand.Qty1 as HandQty
,tab_in.DoDate as InDate,tab_in.Des1,tab_in.WareHouseId,tab_in.Location,tab_in.Price,tab_in.Packing,
tab_in.Att1,tab_in.Att2,tab_in.Att3,tab_in.Att4,tab_in.Att5,tab_in.Att6,tab_in.Qty2,tab_in.Qty3,
tab_in.Uom1,tab_in.ExpiredDate from 
(select distinct row_number() over (order by det.Id) as No, max(det.Id) as Id, max(mast.DoNo) as DoNo,max(det.Product) as Product,max(det.Qty1) as Qty1,max(det.Qty2) as Qty2,max(det.Qty3) as Qty3,max(det.LotNo) as LotNo,max(p.HsCode) as HsCode,max(mast.Remark1) as Remark1,
max(p.ProductClass) as ProductClass,max(mast.PartyId) as PartyId,max(mast.PartyName) as PartyName,max(mast.PartyAdd) as PartyAdd,max(mast.DoDate) as DoDate,max(det.QtyPackWhole) as Pkg,max(det.QtyWholeLoose) as Unit,max(mast.WareHouseId) as WareHouseId,max(mast.PoNo) as PoNo,max(det.Remark) as Remark,
max(det.GrossWeight) as GrossWeight,max(det.NettWeight) as NettWeight,max(det.PalletNo) as PalletNo,max(det.Location) as Location,max(mast.PermitNo) as PermitNo,max(mast.PartyInvNo) as PartyInvNo,max(det.Uom1) as Uom1,max(d.ExpiredDate) as ExpiredDate,max(det.Price) as Price,
max(det.Des1) as Des1,max(det.att1) as Att1,max(det.att2) as Att2,max(det.att3) as Att3,max(det.att4) as Att4,max(det.att5) as Att5,max(det.att6) as Att6,max(det.packing) as Packing from  wh_dodet2 det inner join Wh_DoDet d on d.DoNo=det.DoNo and d.ProductCode=det.Product and d.LotNo=det.LotNo inner join wh_do mast on mast.DoNo=det.DoNo and mast.DoType=det.DoType and mast.StatusCode='CLS' 
left join ref_product p on p.code=det.Product
where det.Dotype='IN' and len(det.doNo)>0 group by det.Id,Product,det.LotNo,det.Des1,det.PalletNo,det.Remark) as tab_in 
inner join (select product,LotNo, sum(isnull(Case when det.DoType='IN' then Qty1 else -Qty1 end,0)) as Qty1  from wh_dodet2 det inner join wh_do mast on mast.DoNo=det.DoNo and mast.StatusCode='CLS'  
  group by Product,LotNo) as tab_hand on tab_hand.product=tab_in.Product and tab_hand.LotNo=tab_in.LotNo 
) as tab where HandQty>0 
");

        if (txt_CustId.Text != "")
        {
            sql += " and PartyId='" + txt_CustId.Text + "'";
        }
        if (cmb_WareHouse.Value != null)
        {
            sql += " and WareHouseId='" + cmb_WareHouse.Value + "'";
        }
        if (cmb_loc.Value != null)
        {
            sql += " and Location='" + cmb_loc.Value + "'";
        }
        DataTable tab     = ConnectSql.GetTab(sql);
        string    partyId = "";
        string    no      = "";

        if (tab.Rows.Count > 0)
        {
            for (int i = 0; i < tab.Rows.Count; i++)
            {
                string client = SafeValue.SafeString(tab.Rows[i]["PartyId"]);

                if (partyId != client)
                {
                    StockCount stock = new StockCount();

                    stock.StockDate   = DateTime.Now;
                    stock.PartyId     = client;
                    stock.PartyName   = SafeValue.SafeString(tab.Rows[i]["PartyName"]);
                    stock.PartyAdd    = SafeValue.SafeString(tab.Rows[i]["PartyAdd"]);
                    stock.WareHouseId = SafeValue.SafeString(tab.Rows[i]["WareHouseId"]);

                    stock.Remark         = "";
                    stock.CreatedBy      = EzshipHelper.GetUserName();
                    stock.CreateDateTime = DateTime.Now;

                    string stockNo = C2Setup.GetNextNo("", "StockTake", txt_Date.Date);
                    stock.StockNo = SafeValue.SafeString(stockNo);
                    C2Setup.SetNextNo("", "StockTake", stockNo, txt_Date.Date);
                    Manager.ORManager.StartTracking(stock, Wilson.ORMapper.InitialState.Inserted);
                    Manager.ORManager.PersistChanges(stock);
                    no      = stockNo;
                    partyId = client;
                    InsertDet(tab, no, i);
                }
                else
                {
                    InsertDet(tab, no, i);
                }
            }
        }
    }