public ActionResult Print(string Spname = "", int Spid = 0, int ItmCatid = 0, string ItmCatname = "", int Itmid = 0, string Itmname = "", string PartNo = "", string PartName = "", string ItemGroupname = "", int ItemGroupId = 0, int ItemSubGroupId = 0, string ItemSubGroupname = "")

        {
            ReportDocument rd = new ReportDocument();

            rd.Load(Path.Combine(Server.MapPath("~/Reports"), "CurrentStockReport.rpt"));

            DataSet ds = new DataSet();

            ds.Tables.Add("Head");
            ds.Tables.Add("Items");

            //    //-------HEAD
            ds.Tables["Head"].Columns.Add("Stkpoint");
            ds.Tables["Head"].Columns.Add("ItemCat");
            ds.Tables["Head"].Columns.Add("Item");
            ds.Tables["Head"].Columns.Add("OrganizationName");
            ds.Tables["Head"].Columns.Add("Image1");
            ds.Tables["Head"].Columns.Add("PartName");
            ds.Tables["Head"].Columns.Add("ItemGroupname");
            ds.Tables["Head"].Columns.Add("ItemSubGroupname");


            //-------DT

            ds.Tables["Items"].Columns.Add("Item");
            ds.Tables["Items"].Columns.Add("PartNo");
            ds.Tables["Items"].Columns.Add("CurrentStk");
            ds.Tables["Items"].Columns.Add("Unit");


            OrganizationRepository repo = new OrganizationRepository();
            var Head = repo.GetOrganization(OrganizationId);

            DataRow dr = ds.Tables["Head"].NewRow();

            dr["Stkpoint"]         = Spname;
            dr["ItemCat"]          = ItmCatname;
            dr["Item"]             = Itmname;
            dr["PartName"]         = PartName;
            dr["ItemGroupname"]    = ItemGroupname;
            dr["ItemSubGroupname"] = ItemSubGroupname;
            dr["OrganizationName"] = Head.OrganizationName;
            dr["Image1"]           = Server.MapPath("~/App_images/") + Head.Image1;
            ds.Tables["Head"].Rows.Add(dr);


            ClosingStockRepository repo1 = new ClosingStockRepository();
            //var Items = repo1.GetSOVarianceDataDTPrint(from, to, itmid, itmName, SupId, SupName);
            var Items = repo1.GetCurrentStockDataDTPrint(stockPointId: Spid, itemCategoryId: ItmCatid, itemId: Itmid, OrganizationId: OrganizationId, partno: PartNo, itmGroup: ItemGroupId, itmSubgroup: ItemSubGroupId);


            foreach (var item in Items)
            {
                var SupplyOrderRegItem = new ClosingStock
                {
                    ItemName = item.ItemName,
                    PartNo   = item.PartNo,
                    Quantity = item.Quantity,
                    UnitName = item.UnitName,
                };

                DataRow dri = ds.Tables["Items"].NewRow();
                dri["Item"]       = SupplyOrderRegItem.ItemName;
                dri["PartNo"]     = SupplyOrderRegItem.PartNo;
                dri["CurrentStk"] = SupplyOrderRegItem.Quantity;
                dri["Unit"]       = SupplyOrderRegItem.UnitName;
                ds.Tables["Items"].Rows.Add(dri);
            }

            ds.WriteXml(Path.Combine(Server.MapPath("~/XML"), "CurrentStockReport.xml"), XmlWriteMode.WriteSchema);

            rd.SetDataSource(ds);

            Response.Buffer = false;
            Response.ClearContent();
            Response.ClearHeaders();


            try
            {
                Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
                stream.Seek(0, SeekOrigin.Begin);
                return(File(stream, "application/pdf", String.Format("CurrentStockReport.pdf")));
            }
            catch (Exception ex)
            {
                throw;
            }
        }