示例#1
0
        public void Insert(StockItemPurchaseModel model)
        {
            EHMSEntities ent = new EHMSEntities();
            var          obj = AutoMapper.Mapper.Map <StockItemPurchaseModel, StockItemPurchase>(model);

            obj.Status      = true;
            obj.CreatedBy   = 1;
            obj.CreatedDate = DateTime.Now;
            ent.StockItemPurchases.Add(obj);
            ent.SaveChanges();

            int id = ent.StockItemPurchases.Where(x => x.ItemPurchaseId == ent.StockItemPurchases.Max(y => y.ItemPurchaseId)).SingleOrDefault().ItemPurchaseId;

            foreach (var item in model.StockItemEntryList)
            {
                StockItemPurchaseDetail PurchaseDetail = new StockItemPurchaseDetail();
                var StockItemMaster = ent.StockItemMasters.Where(x => x.StockItemEntryId == item.StockItemEntryId).SingleOrDefault();
                var purchaseorder   = (from po in ent.StockPurchaseOrders
                                       join pd in ent.StockPurchaseOrderDetails
                                       on po.PurchaseOrderId equals pd.PurchaseOrderId
                                       where po.PurchaseOrderNo == model.ItemOrderId && pd.ItemId == item.StockItemEntryId
                                       select pd).SingleOrDefault();
                PurchaseDetail.ItemPurchaseId   = id;
                PurchaseDetail.StockItemEntryId = item.StockItemEntryId;
                PurchaseDetail.StockUnitId      = ent.SetupStockItemEntries.Where(x => x.StockItemEntryId == item.StockItemEntryId).SingleOrDefault().StockUnitId;
                PurchaseDetail.Quantity         = item.Quantity;
                PurchaseDetail.Rate             = item.Rate;
                PurchaseDetail.TotalAmount      = item.Quantity * item.Rate;
                PurchaseDetail.BatchNo          = item.BatchNo;
                PurchaseDetail.ExpiryDate       = item.ExpiryDate;
                PurchaseDetail.SupplierId       = model.StockSupplierId;
                PurchaseDetail.WarrentyDate     = item.WarrentyDate;
                PurchaseDetail.ManufacturedDate = item.ManufacturedDate;


                if (item.QuotQty == item.Quantity)
                {
                    purchaseorder.Status           = false;
                    ent.Entry(purchaseorder).State = System.Data.EntityState.Modified;
                }
                //else
                //{
                //    purchaseorder.Quantity = purchaseorder.Quantity - item.Quantity;
                //}
                StockItemMaster.Quantity         = StockItemMaster.Quantity + item.Quantity;
                ent.Entry(StockItemMaster).State = System.Data.EntityState.Modified;
                ent.StockItemPurchaseDetails.Add(PurchaseDetail);
            }
            ent.SaveChanges();
            //Automatic post jv
            int    VoucherNumberInt = HospitalManagementSystem.Utility.getMaxVoucherNumber("PV", 7);
            string VoucherNumber    = "PV" + "-" + Utility.GetCurrentFiscalYearNameInBS() + "-" + VoucherNumberInt.ToString();

            var objJVMaster = new JVMaster()
            {
                AccountNumber   = "1",
                BillNumber      = "123",
                VerifiedBy      = 45,
                TransactionDate = DateTime.Today,
                TotalAmount     = model.TotalAmount,
                Status          = false,
                Narration1      = "From Stock",
                Narration2      = "From Stock",
                JvType          = "PV",
                CreatedBy       = HospitalManagementSystem.Utility.GetCurrentLoginUserId(),
                CreatedDate     = DateTime.Today,
                FiscalYearId    = HospitalManagementSystem.Utility.GetCurrentFiscalYearID(),
                JvNumber        = VoucherNumber,
                FormName        = "Stock"
            };

            ent.JVMasters.Add(objJVMaster);
            ent.SaveChanges();

            int PaymentMode = model.PaymentType;//Cash or bank, credit (paryt name)
            //Dr Amount
            string AccountHeadName      = "";
            string AccountHeadNameParty = "";
            int    FeeTypeIdInt         = Convert.ToInt32(0);
            int    FeeTypeSubIDInt      = Convert.ToInt32(0);



            if (PaymentMode == 372)//credit
            {
                AccountHeadNameParty = HospitalManagementSystem.Utility.GetFeeTypeNameFromId(1831) + "-" + HospitalManagementSystem.Utility.GetFeeTypeNameFromId(1832);
                AccountHeadName      = HospitalManagementSystem.Utility.GetFeeTypeNameFromId(1833);
                FeeTypeIdInt         = 1831;
                FeeTypeSubIDInt      = 1832;
            }
            else if (PaymentMode == 373)//cash
            {
                AccountHeadNameParty = "CASH";
                AccountHeadName      = HospitalManagementSystem.Utility.GetFeeTypeNameFromId(1833);
                FeeTypeIdInt         = 372;
                FeeTypeSubIDInt      = 0;
            }
            else//bank
            {
                AccountHeadNameParty = "BANK";
                AccountHeadName      = HospitalManagementSystem.Utility.GetFeeTypeNameFromId(1833);
                FeeTypeSubIDInt      = 0;
            }



            var ObjJvDetails = new JVDetail()
            {
                BillNumber      = "",
                CrAmount        = Convert.ToDecimal(0),
                DrAmount        = model.TotalAmount,
                CreatedBy       = HospitalManagementSystem.Utility.GetCurrentLoginUserId(),
                CreatedDate     = DateTime.Today,
                DrOrCr          = "Dr",
                FeeTypeId       = 1833,
                FeeTypeName     = AccountHeadName,
                FeeTypeSubId    = 0,
                JVMasterId      = objJVMaster.JvMasterId,
                Narration       = "Post From stock",
                TransactionDate = DateTime.Today,
            };

            ent.JVDetails.Add(ObjJvDetails);

            //CR Amount

            var ObjJvDetailsCr = new JVDetail()
            {
                BillNumber      = "",
                CrAmount        = model.TotalAmount,
                DrAmount        = Convert.ToDecimal(0),
                CreatedBy       = HospitalManagementSystem.Utility.GetCurrentLoginUserId(),
                CreatedDate     = DateTime.Today,
                DrOrCr          = "Cr",
                FeeTypeId       = FeeTypeIdInt,//Party name (suppliers)
                FeeTypeName     = AccountHeadNameParty,
                FeeTypeSubId    = FeeTypeSubIDInt,
                JVMasterId      = objJVMaster.JvMasterId,
                Narration       = "Post From stock",
                TransactionDate = DateTime.Today,
            };

            ent.JVDetails.Add(ObjJvDetailsCr);


            SetupVoucherNumber vouchernumber = (from x in ent.SetupVoucherNumbers
                                                where x.JvType == "PV" && x.FiscalYear == 7
                                                select x).First();

            vouchernumber.VoucherNo = vouchernumber.VoucherNo + 1;
            ent.SaveChanges();
        }
示例#2
0
        public void Udate(int id, StockItemPurchaseModel model)
        {
            EHMSEntities ent = new EHMSEntities();
            var          obj = ent.StockItemPurchases.Where(x => x.ItemPurchaseId == id).SingleOrDefault();

            model.ItemPurchaseId = obj.ItemPurchaseId;
            AutoMapper.Mapper.Map(model, obj);

            obj.Status      = true;
            obj.CreatedBy   = 1;
            obj.CreatedDate = DateTime.Now;


            ent.Entry(obj).State = System.Data.EntityState.Modified;

            foreach (var item in ent.StockItemPurchaseDetails.Where(x => x.ItemPurchaseId == model.ItemPurchaseId).ToList())
            {
                ent.StockItemPurchaseDetails.Remove(item);
                var purchaseorder = (from po in ent.StockPurchaseOrders
                                     join pd in ent.StockPurchaseOrderDetails
                                     on po.PurchaseOrderId equals pd.PurchaseOrderId
                                     where po.PurchaseOrderNo == model.ItemOrderId && pd.ItemId == item.StockItemEntryId
                                     select pd).SingleOrDefault();
                var objItem = ent.StockItemMasters.Where(x => x.StockItemEntryId == item.StockItemEntryId).SingleOrDefault();
                objItem.Quantity = objItem.Quantity - item.Quantity;

                purchaseorder.Quantity         = purchaseorder.Quantity + item.Quantity;
                ent.Entry(objItem).State       = System.Data.EntityState.Modified;
                ent.Entry(purchaseorder).State = System.Data.EntityState.Modified;
            }
            try
            {
                foreach (var item in model.StockItemEntryList)
                {
                    StockItemPurchaseDetail PurchaseDetail = new StockItemPurchaseDetail();
                    var purchaseorder = (from po in ent.StockPurchaseOrders
                                         join pd in ent.StockPurchaseOrderDetails
                                         on po.PurchaseOrderId equals pd.PurchaseOrderId
                                         where po.PurchaseOrderNo == model.ItemOrderId && pd.ItemId == item.StockItemEntryId
                                         select pd).SingleOrDefault();
                    var StockItemMaster = ent.StockItemMasters.Where(x => x.StockItemEntryId == item.StockItemEntryId).SingleOrDefault();
                    PurchaseDetail.ItemPurchaseId   = id;
                    PurchaseDetail.StockItemEntryId = item.StockItemEntryId;
                    PurchaseDetail.StockUnitId      = ent.SetupStockItemEntries.Where(x => x.StockItemEntryId == item.StockItemEntryId).SingleOrDefault().StockUnitId;
                    PurchaseDetail.Quantity         = item.Quantity;
                    PurchaseDetail.Rate             = item.Rate;
                    PurchaseDetail.TotalAmount      = item.Quantity * item.Rate;
                    if (item.QuotQty == item.Quantity)
                    {
                        purchaseorder.Status           = false;
                        ent.Entry(purchaseorder).State = System.Data.EntityState.Modified;
                    }
                    else
                    {
                        purchaseorder.Quantity = purchaseorder.Quantity - item.Quantity;
                    }
                    StockItemMaster.Quantity         = StockItemMaster.Quantity + item.Quantity;
                    ent.Entry(StockItemMaster).State = System.Data.EntityState.Modified;
                    ent.StockItemPurchaseDetails.Add(PurchaseDetail);
                }
            }
            catch
            {
            }
            ent.SaveChanges();
        }