Beispiel #1
0
        public int EPOPost(List <GarmentExternalPurchaseOrder> ListEPO, string user)
        {
            int Updated = 0;

            using (var transaction = this.dbContext.Database.BeginTransaction())
            {
                try
                {
                    var Ids      = ListEPO.Select(d => d.Id).ToList();
                    var listData = this.dbSet
                                   .Where(m => Ids.Contains(m.Id) && !m.IsDeleted)
                                   .Include(d => d.Items)
                                   .ToList();
                    listData.ForEach(m =>
                    {
                        EntityExtension.FlagForUpdate(m, user, "Facade");
                        m.IsPosted = true;

                        foreach (var item in m.Items)
                        {
                            GarmentInternalPurchaseOrderItem IPOItems = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(item.POId));

                            if (item.ProductId.ToString() == IPOItems.ProductId)
                            {
                                IPOItems.RemainingBudget += item.UsedBudget;
                                IPOItems.Status           = "Sudah diorder ke Supplier";
                            }

                            GarmentPurchaseRequestItem PRItems = this.dbContext.GarmentPurchaseRequestItems.FirstOrDefault(a => a.Id.Equals(IPOItems.GPRItemId));
                            PRItems.Status = "Sudah diorder ke Supplier";

                            EntityExtension.FlagForUpdate(item, user, "Facade");
                        }
                        //foreach (var item in m.Items)
                        //{
                        //    EntityExtension.FlagForUpdate(item, user, "Facade");

                        //}
                    });

                    Updated = dbContext.SaveChanges();
                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Updated);
        }
Beispiel #2
0
        public int EPOUnpost(int id, string user)
        {
            int Updated = 0;

            using (var transaction = this.dbContext.Database.BeginTransaction())
            {
                try
                {
                    var m = this.dbSet
                            .Include(d => d.Items)
                            .SingleOrDefault(epo => epo.Id == id && !epo.IsDeleted);

                    EntityExtension.FlagForUpdate(m, user, "Facade");
                    m.IsPosted = false;

                    foreach (var item in m.Items)
                    {
                        GarmentInternalPurchaseOrderItem IPOItems = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(a => a.GPOId.Equals(item.POId));

                        if (item.ProductId.ToString() == IPOItems.ProductId)
                        {
                            //IPOItems.RemainingBudget += item.UsedBudget;
                            IPOItems.Status = "Sudah dibuat PO Eksternal";
                        }

                        GarmentPurchaseRequestItem PRItems = this.dbContext.GarmentPurchaseRequestItems.FirstOrDefault(a => a.Id.Equals(IPOItems.GPRItemId));
                        PRItems.Status = "Sudah diterima Pembelian";

                        EntityExtension.FlagForUpdate(item, user, "Facade");
                    }

                    Updated = dbContext.SaveChanges();
                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Updated);
        }
        public GarmentPurchaseRequestItem CopyDataItem(GarmentPurchaseRequestItem data)
        {
            return(new GarmentPurchaseRequestItem
            {
                UId = data.UId,

                Id = data.Id,
                Active = data.Active,
                CreatedUtc = data.CreatedUtc,
                CreatedBy = data.CreatedBy,
                CreatedAgent = data.CreatedAgent,
                LastModifiedUtc = data.LastModifiedUtc,
                LastModifiedBy = data.LastModifiedBy,
                LastModifiedAgent = data.LastModifiedAgent,
                IsDeleted = data.IsDeleted,
                DeletedUtc = data.DeletedUtc,
                DeletedBy = data.DeletedBy,
                DeletedAgent = data.DeletedAgent,

                PO_SerialNumber = data.PO_SerialNumber,
                ProductId = data.ProductId,
                ProductCode = data.ProductCode,
                ProductName = data.ProductName,
                Quantity = data.Quantity,
                BudgetPrice = data.BudgetPrice,
                UomId = data.UomId,
                UomUnit = data.UomUnit,
                CategoryId = data.CategoryId,
                CategoryName = data.CategoryName,
                ProductRemark = data.ProductRemark,
                Status = data.Status,
                IsUsed = data.IsUsed,
                PriceUomId = data.PriceUomId,
                PriceUomUnit = data.PriceUomUnit,
                PriceConversion = data.PriceConversion,
            });
        }
        public async Task <int> Delete(int id, string user)
        {
            int Deleted = 0;

            using (var transaction = this.dbContext.Database.BeginTransaction())
            {
                try
                {
                    var model = this.dbSet
                                .Include(m => m.Items)
                                .ThenInclude(i => i.Details)
                                .SingleOrDefault(m => m.Id == id && !m.IsDeleted);

                    EntityExtension.FlagForDelete(model, user, USER_AGENT);
                    foreach (var item in model.Items)
                    {
                        EntityExtension.FlagForDelete(item, user, USER_AGENT);

                        foreach (var detail in item.Details)
                        {
                            GarmentExternalPurchaseOrderItem externalPurchaseOrderItem = this.dbContext.GarmentExternalPurchaseOrderItems.FirstOrDefault(s => s.Id.Equals(detail.EPOItemId));
                            GarmentInternalPurchaseOrder     internalPurchaseOrder     = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(detail.POId));
                            GarmentInternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(s => s.GPOId.Equals(detail.POId));

                            GarmentDeliveryOrderDetail deliveryOrderDetail = this.dbContext.GarmentDeliveryOrderDetails.FirstOrDefault(s => s.Id.Equals(detail.Id));
                            externalPurchaseOrderItem.DOQuantity = externalPurchaseOrderItem.DOQuantity - detail.DOQuantity;

                            if (externalPurchaseOrderItem.ReceiptQuantity == 0)
                            {
                                if (externalPurchaseOrderItem.DOQuantity == 0)
                                {
                                    GarmentPurchaseRequestItem purchaseRequestItem = this.dbContext.GarmentPurchaseRequestItems.FirstOrDefault(s => s.Id.Equals(detail.PRItemId));
                                    purchaseRequestItem.Status       = "Sudah diorder ke Supplier";
                                    internalPurchaseOrderItem.Status = "Sudah diorder ke Supplier";
                                }
                                else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity < externalPurchaseOrderItem.DealQuantity)
                                {
                                    internalPurchaseOrderItem.Status = "Barang sudah datang parsial";
                                }
                                else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity >= externalPurchaseOrderItem.DealQuantity)
                                {
                                    internalPurchaseOrderItem.Status = "Barang Sudah Datang Semua";
                                }
                            }

                            EntityExtension.FlagForDelete(detail, user, USER_AGENT);
                        }
                    }
                    Deleted = await dbContext.SaveChangesAsync();

                    await dbContext.SaveChangesAsync();

                    transaction.Commit();
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Deleted);
        }
        public async Task <int> Update(int id, GarmentDeliveryOrderViewModel vm, GarmentDeliveryOrder m, string user, int clientTimeZoneOffset = 7)
        {
            int Updated = 0;

            using (var transaction = dbContext.Database.BeginTransaction())
            {
                try
                {
                    var oldM = this.dbSet.AsNoTracking()
                               .Include(d => d.Items)
                               .ThenInclude(d => d.Details)
                               .SingleOrDefault(pr => pr.Id == id && !pr.IsDeleted);

                    if (oldM != null && oldM.Id == id)
                    {
                        EntityExtension.FlagForUpdate(m, user, USER_AGENT);

                        foreach (var vmItem in vm.items)
                        {
                            foreach (var modelItem in m.Items.Where(i => i.Id == vmItem.Id))
                            {
                                foreach (var item in oldM.Items.Where(i => i.EPOId == modelItem.EPOId).ToList())
                                {
                                    EntityExtension.FlagForUpdate(modelItem, user, USER_AGENT);

                                    CurrencyViewModel garmentCurrencyViewModel = GetCurrency(item.CurrencyCode, m.DODate);
                                    m.DOCurrencyId   = garmentCurrencyViewModel.Id;
                                    m.DOCurrencyCode = garmentCurrencyViewModel.Code;
                                    m.DOCurrencyRate = garmentCurrencyViewModel.Rate;

                                    foreach (var vmDetail in vmItem.fulfillments)
                                    {
                                        foreach (var modelDetail in modelItem.Details.Where(j => j.Id == vmDetail.Id))
                                        {
                                            foreach (var detail in item.Details.Where(j => j.EPOItemId == modelDetail.EPOItemId).ToList())
                                            {
                                                GarmentInternalPurchaseOrder     internalPurchaseOrder     = this.dbContext.GarmentInternalPurchaseOrders.FirstOrDefault(s => s.Id.Equals(modelDetail.POId));
                                                GarmentInternalPurchaseOrderItem internalPurchaseOrderItem = this.dbContext.GarmentInternalPurchaseOrderItems.FirstOrDefault(s => s.GPOId.Equals(modelDetail.POId));
                                                GarmentExternalPurchaseOrderItem externalPurchaseOrderItem = this.dbContext.GarmentExternalPurchaseOrderItems.FirstOrDefault(s => s.Id.Equals(modelDetail.EPOItemId));

                                                if (vmDetail.isSave == false)
                                                {
                                                    externalPurchaseOrderItem.DOQuantity = externalPurchaseOrderItem.DOQuantity - detail.DOQuantity;
                                                }
                                                else
                                                {
                                                    externalPurchaseOrderItem.DOQuantity = externalPurchaseOrderItem.DOQuantity - detail.DOQuantity + modelDetail.DOQuantity;
                                                    modelDetail.POItemId = (int)internalPurchaseOrderItem.Id;
                                                    modelDetail.PRItemId = internalPurchaseOrderItem.GPRItemId;
                                                    modelDetail.UnitId   = internalPurchaseOrder.UnitId;
                                                    modelDetail.UnitCode = internalPurchaseOrder.UnitCode;

                                                    modelDetail.QuantityCorrection         = modelDetail.DOQuantity;
                                                    modelDetail.PricePerDealUnitCorrection = modelDetail.PricePerDealUnit;
                                                    modelDetail.PriceTotalCorrection       = modelDetail.PriceTotal;
                                                }

                                                if (externalPurchaseOrderItem.ReceiptQuantity == 0)
                                                {
                                                    if (externalPurchaseOrderItem.DOQuantity == 0)
                                                    {
                                                        GarmentPurchaseRequestItem purchaseRequestItem = this.dbContext.GarmentPurchaseRequestItems.FirstOrDefault(s => s.Id.Equals(modelDetail.PRItemId));
                                                        purchaseRequestItem.Status       = "Sudah diorder ke Supplier";
                                                        internalPurchaseOrderItem.Status = "Sudah diorder ke Supplier";
                                                    }
                                                    else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity < externalPurchaseOrderItem.DealQuantity)
                                                    {
                                                        internalPurchaseOrderItem.Status = "Barang sudah datang parsial";
                                                    }
                                                    else if (externalPurchaseOrderItem.DOQuantity > 0 && externalPurchaseOrderItem.DOQuantity >= externalPurchaseOrderItem.DealQuantity)
                                                    {
                                                        internalPurchaseOrderItem.Status = "Barang Sudah Datang Semua";
                                                    }
                                                }

                                                EntityExtension.FlagForUpdate(modelDetail, user, USER_AGENT);
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        dbSet.Update(m);

                        Updated = await dbContext.SaveChangesAsync();

                        transaction.Commit();
                    }
                    else
                    {
                        throw new Exception("Invalid Id");
                    }
                }
                catch (Exception e)
                {
                    transaction.Rollback();
                    throw new Exception(e.Message);
                }
            }

            return(Updated);
        }