示例#1
0
        public void Save(RequisitionPurchaseDTO rpDTO)
        {
            PurchaseOrder rp = new PurchaseOrder();
            int           id;

            rp.No         = rpRepo.GenerateRpNo(rpDTO.Date);
            rp.Date       = rpDTO.Date;
            rp.CompanyId  = Sessions.CompanyId.Value;
            rp.VendorId   = rpDTO.VendorId;
            rp.ShipTo     = Sessions.CompanyId.Value;
            rp.PreparedBy = Common.GetCurrentUser.Id;
            rp.ApprovedBy = Common.GetCurrentUser.GeneralManagerId;
            rp.CheckedBy  = rpDTO.CheckedBy;
            rp.isRP       = true;

            context.PurchaseOrders.Add(rp);
            context.SaveChanges();

            id = rp.Id;

            rp.ItemPriceLogs = new List <ItemPriceLogs>();
            foreach (RequisitionPurchaseDTO.Item item in rpDTO.Items)
            {
                ItemPriceLogs itemLogs = new ItemPriceLogs();

                itemLogs.PurchaseOrderId = rp.Id;
                itemLogs.ItemId          = item.ItemId;
                itemLogs.UnitCost        = Convert.ToDecimal(item.UnitCost);
                itemLogs.Qty             = item.Quantity;
                itemLogs.Date            = DateTime.Now;

                rp.ItemPriceLogs.Add(itemLogs);
            }

            foreach (RequisitionPurchaseDTO.Item dtoItem in rpDTO.Items)
            {
                PurchaseOrderItem rpItem = new PurchaseOrderItem();

                rpItem.PurchaseOrderId = rp.Id;
                rpItem.ItemId          = dtoItem.ItemId;
                rpItem.UnitCost        = dtoItem.UnitCost;
                rpItem.Quantity        = dtoItem.Quantity;
                rpItem.Remarks         = dtoItem.Remarks;
                rpItem.Date            = DateTime.Now;

                context.PurchaseOrderItems.Add(rpItem);

                context.SaveChanges();

                InsertStockCard(rp.Id, dtoItem.ItemId, dtoItem.UnitCost, dtoItem.Quantity);
            }
        }
示例#2
0
        public void Save(PurchaseOrderDTO entry)
        {
            PurchaseOrder po = new PurchaseOrder();

            //po.No = poRepo.GeneratePoNumber();
            po.No = entry.No;

            po.Date     = Convert.ToDateTime(entry.Date);
            po.VendorId = entry.VendorId;
            po.ShipTo   = entry.ShipTo;
            po.Terms    = vendorRepo.GetById(entry.VendorId).Terms;

            po.PreparedBy = Common.GetCurrentUser.Id;
            po.ApprovedBy = Common.GetCurrentUser.GeneralManagerId;
            po.CheckedBy  = entry.CheckedBy;
            po.isRP       = false;
            po.CompanyId  = Sessions.CompanyId.Value;

            po.PurchaseOrderItems = new List <PurchaseOrderItem>();
            foreach (PurchaseOrderDTO.Item item in entry.Items)
            {
                PurchaseOrderItem poItem = new PurchaseOrderItem();
                poItem.PurchaseOrderId = po.Id;
                poItem.ItemId          = item.Id;
                Item _item = itemRepo.GetById(item.Id);

                poItem.UnitCost             = Convert.ToDecimal(item.UnitCost);
                poItem.Quantity             = item.Quantity;
                poItem.Remarks              = item.Remarks;
                poItem.Date                 = Convert.ToDateTime(entry.Date);
                poItem.RemainingBalanceDate = null;

                po.PurchaseOrderItems.Add(poItem);
            }

            // for FIFO price
            po.ItemPriceLogs = new List <ItemPriceLogs>();
            foreach (PurchaseOrderDTO.Item item in entry.Items)
            {
                ItemPriceLogs itemLogs = new ItemPriceLogs();
                Item          _item    = itemRepo.GetById(item.Id);

                itemLogs.PurchaseOrderId = po.Id;
                itemLogs.ItemId          = item.Id;
                itemLogs.UnitCost        = Convert.ToDecimal(item.UnitCost);
                itemLogs.Qty             = item.Quantity;
                itemLogs.Date            = DateTime.Now;
                itemLogs.CompanyId       = Sessions.CompanyId.Value;

                po.ItemPriceLogs.Add(itemLogs);
                UpdateItemType(item.Id, _item.TypeId, item.TypeId);
            }


            poRepo.Save(po);

            foreach (PurchaseOrderDTO.Item item in entry.Items)
            {
                Item _item = context.Items.Find(item.Id);
                if (_item.TypeId != item.TypeId)
                {
                    _item.TypeId = item.TypeId;
                    context.SaveChanges();
                }
            }
        }