Ejemplo n.º 1
0
        public List <ExternalTransferOrderDetail> GetNewData(InternalTransferOrder internalTransferOrder)
        {
            List <ExternalTransferOrderDetail> list = new List <ExternalTransferOrderDetail>();

            foreach (InternalTransferOrderDetail internalTransferOrderDetail in internalTransferOrder.InternalTransferOrderDetails)
            {
                ExternalTransferOrderDetail externalTransferOrderDetail = new ExternalTransferOrderDetail();

                externalTransferOrderDetail.ITODetailId     = internalTransferOrderDetail.Id;
                externalTransferOrderDetail.TRDetailId      = internalTransferOrderDetail.TRDetailId;
                externalTransferOrderDetail.ProductId       = internalTransferOrderDetail.ProductId;
                externalTransferOrderDetail.ProductCode     = internalTransferOrderDetail.ProductCode;
                externalTransferOrderDetail.ProductName     = internalTransferOrderDetail.ProductName;
                externalTransferOrderDetail.DefaultQuantity = internalTransferOrderDetail.Quantity;
                externalTransferOrderDetail.DefaultUomId    = internalTransferOrderDetail.UomId;
                externalTransferOrderDetail.DefaultUomUnit  = internalTransferOrderDetail.UomUnit;
                externalTransferOrderDetail.DealQuantity    = internalTransferOrderDetail.Quantity;
                externalTransferOrderDetail.DealUomId       = internalTransferOrderDetail.UomId;
                externalTransferOrderDetail.DealUomUnit     = internalTransferOrderDetail.UomUnit;
                externalTransferOrderDetail.Convertion      = 1;
                externalTransferOrderDetail.Price           = 2000;
                externalTransferOrderDetail.Grade           = internalTransferOrderDetail.Grade;
                externalTransferOrderDetail.ProductRemark   = internalTransferOrderDetail.ProductRemark;

                list.Add(externalTransferOrderDetail);
            }

            return(list);
        }
Ejemplo n.º 2
0
        public UnitViewModel GetFromExternalTransferOrderByExternalTransferOrderId(int Id)
        {
            InternalTransferOrder internalTransferOrder = this.DbContext.InternalTransferOrders.FirstOrDefault(p => p.Id.Equals(Id));

            return(new UnitViewModel()
            {
                _id = internalTransferOrder.UnitId,
                code = internalTransferOrder.UnitCode,
                name = internalTransferOrder.UnitName,
            });
        }
        public override async Task <int> CreateModel(ExternalTransferOrder Model)
        {
            int Created = 0;

            using (var Transaction = this.DbContext.Database.BeginTransaction())
            {
                try
                {
                    Model.ETONo = await this.GenerateExternalTransferOrderNo(Model);

                    Created = await this.CreateAsync(Model);

                    foreach (var item in Model.ExternalTransferOrderItems)
                    {
                        foreach (var detail in item.ExternalTransferOrderDetails)
                        {
                            TransferRequestDetail transferRequestDetail = this.DbContext.TransferRequestDetails.FirstOrDefault(s => s.Id == detail.TRDetailId);
                            transferRequestDetail.Status             = "Sudah dibuat TO Eksternal";
                            transferRequestDetail._LastModifiedUtc   = DateTime.UtcNow;
                            transferRequestDetail._LastModifiedAgent = "Service";
                            transferRequestDetail._LastModifiedBy    = this.Username;

                            InternalTransferOrderDetail internalTransferOrderDetail = this.DbContext.InternalTransferOrderDetails.FirstOrDefault(s => s.Id == detail.ITODetailId);
                            internalTransferOrderDetail.Status             = "Sudah dibuat TO Eksternal";
                            internalTransferOrderDetail._LastModifiedUtc   = DateTime.UtcNow;
                            internalTransferOrderDetail._LastModifiedAgent = "Service";
                            internalTransferOrderDetail._LastModifiedBy    = this.Username;
                        }

                        InternalTransferOrder internalTransferOrder = this.DbContext.InternalTransferOrders.FirstOrDefault(s => s.Id == item.ITOId);
                        internalTransferOrder.IsPost             = true;
                        internalTransferOrder._LastModifiedUtc   = DateTime.UtcNow;
                        internalTransferOrder._LastModifiedAgent = "Service";
                        internalTransferOrder._LastModifiedBy    = this.Username;
                    }
                    this.DbContext.SaveChanges();

                    Transaction.Commit();
                }
                catch (ServiceValidationExeption e)
                {
                    throw new ServiceValidationExeption(e.ValidationContext, e.ValidationResults);
                }
                catch (Exception)
                {
                    Transaction.Rollback();
                }
            }

            return(Created);
        }
        public bool Cancel(int Id)
        {
            bool IsSuccessful = false;

            using (var Transaction = this.DbContext.Database.BeginTransaction())
            {
                try
                {
                    var data = this.DbSet
                               .Include(d => d.ExternalTransferOrderItems)
                               .ThenInclude(d => d.ExternalTransferOrderDetails)
                               .FirstOrDefault(tr => tr.Id == Id && tr._IsDeleted == false);
                    data.IsCanceled         = true;
                    data._LastModifiedUtc   = DateTime.UtcNow;
                    data._LastModifiedAgent = "Service";
                    data._LastModifiedBy    = this.Username;

                    foreach (var item in data.ExternalTransferOrderItems)
                    {
                        InternalTransferOrder internalTransferOrder = this.DbContext.InternalTransferOrders.FirstOrDefault(s => s.Id == item.ITOId);
                        internalTransferOrder.IsCanceled         = true;
                        internalTransferOrder._LastModifiedUtc   = DateTime.UtcNow;
                        internalTransferOrder._LastModifiedAgent = "Service";
                        internalTransferOrder._LastModifiedBy    = this.Username;

                        TransferRequest transferRequest = this.DbContext.TransferRequests.FirstOrDefault(s => s.Id == item.TRId);
                        transferRequest.IsCanceled         = true;
                        transferRequest._LastModifiedUtc   = DateTime.UtcNow;
                        transferRequest._LastModifiedAgent = "Service";
                        transferRequest._LastModifiedBy    = this.Username;
                    }

                    this.DbContext.SaveChanges();

                    IsSuccessful = true;
                    Transaction.Commit();
                }
                catch (DbUpdateConcurrencyException)
                {
                    Transaction.Rollback();
                    throw;
                }
            }

            return(IsSuccessful);
        }
        public ExternalTransferOrderItem GetNewData()
        {
            Task <InternalTransferOrder> internalTransferOrderTask = Task.Run(() => internalTransferOrderDataUtil.GetTestData());

            internalTransferOrderTask.Wait();

            InternalTransferOrder internalTransferOrder = internalTransferOrderTask.Result;

            return(new ExternalTransferOrderItem
            {
                ITOId = internalTransferOrder.Id,
                ITONo = internalTransferOrder.ITONo,
                TRId = internalTransferOrder.Id,
                TRNo = internalTransferOrder.TRNo,
                UnitId = internalTransferOrder.UnitId,
                UnitCode = internalTransferOrder.UnitCode,
                UnitName = internalTransferOrder.UnitName,
                ExternalTransferOrderDetails = externalTransferOrderDetailDataUtil.GetNewData(internalTransferOrder)
            });
        }
        public override async Task <int> DeleteModel(int Id)
        {
            int Deleted = 0;

            using (var Transaction = this.DbContext.Database.BeginTransaction())
            {
                try
                {
                    //ExternalTransferOrder externalTransferOrder = await this.ReadModelById(Id);
                    ExternalTransferOrderItemService externalTransferOrderItemService = ServiceProvider.GetService <ExternalTransferOrderItemService>();
                    externalTransferOrderItemService.Username = this.Username;
                    ExternalTransferOrderDetailService externalTransferOrderDetailService = ServiceProvider.GetService <ExternalTransferOrderDetailService>();
                    externalTransferOrderDetailService.Username = this.Username;

                    HashSet <int> ExternalTransferOrderItemIds = new HashSet <int>(
                        this.DbContext.ExternalTransferOrderItems
                        .Where(p => p.ETOId.Equals(Id))
                        .Select(p => p.Id)
                        );

                    foreach (int itemId in ExternalTransferOrderItemIds)
                    {
                        HashSet <int> ExternalTransferOrderDetailIds = new HashSet <int>(
                            this.DbContext.ExternalTransferOrderDetails
                            .Where(p => p.ETOItemId.Equals(itemId))
                            .Select(p => p.Id)
                            );

                        foreach (int detailId in ExternalTransferOrderDetailIds)
                        {
                            await externalTransferOrderDetailService.DeleteModel(detailId);

                            ExternalTransferOrderItem item = this.DbContext.ExternalTransferOrderItems
                                                             .Include(d => d.ExternalTransferOrderDetails)
                                                             .FirstOrDefault(p => p.Id.Equals(itemId));

                            if (item != null)
                            {
                                foreach (var detail in item.ExternalTransferOrderDetails)
                                {
                                    TransferRequestDetail transferRequestDetail = this.DbContext.TransferRequestDetails.FirstOrDefault(s => s.Id == detail.TRDetailId);
                                    transferRequestDetail.Status = "Sudah diterima Pembelian";

                                    InternalTransferOrderDetail internalTransferOrderDetail = this.DbContext.InternalTransferOrderDetails.FirstOrDefault(s => s.Id == detail.ITODetailId);
                                    internalTransferOrderDetail.Status = "TO Internal belum diorder";
                                }

                                InternalTransferOrder internalTransferOrder = this.DbContext.InternalTransferOrders.FirstOrDefault(s => s.Id == item.ITOId);
                                internalTransferOrder.IsPost = false;
                            }
                        }

                        await externalTransferOrderItemService.DeleteModel(itemId);
                    }

                    Deleted = await this.DeleteAsync(Id);

                    this.DbContext.SaveChanges();
                    Transaction.Commit();
                }
                catch (Exception)
                {
                    Transaction.Rollback();
                }
            }

            return(Deleted);
        }
        public override async Task <int> UpdateModel(int Id, ExternalTransferOrder Model)
        {
            int Updated = 0;

            using (var Transaction = this.DbContext.Database.BeginTransaction())
            {
                try
                {
                    ExternalTransferOrderItemService externalTransferOrderItemService = ServiceProvider.GetService <ExternalTransferOrderItemService>();
                    externalTransferOrderItemService.Username = this.Username;
                    ExternalTransferOrderDetailService externalTransferOrderDetailService = ServiceProvider.GetService <ExternalTransferOrderDetailService>();
                    externalTransferOrderDetailService.Username = this.Username;

                    HashSet <int> ExternalTransferOrderItemIds = new HashSet <int>(
                        this.DbContext.ExternalTransferOrderItems
                        .Where(p => p.ETOId.Equals(Id))
                        .Select(p => p.Id)
                        );

                    foreach (int itemId in ExternalTransferOrderItemIds)
                    {
                        HashSet <int> ExternalTransferOrderDetailIds = new HashSet <int>(
                            this.DbContext.ExternalTransferOrderDetails
                            .Where(p => p.ETOItemId.Equals(itemId))
                            .Select(p => p.Id)
                            );

                        ExternalTransferOrderItem externalTransferOrderItem = Model.ExternalTransferOrderItems.FirstOrDefault(p => p.Id.Equals(itemId));

                        // cek item apakah dihapus (sesuai data yang diubah)
                        if (externalTransferOrderItem == null)
                        {
                            ExternalTransferOrderItem item = this.DbContext.ExternalTransferOrderItems
                                                             .Include(d => d.ExternalTransferOrderDetails)
                                                             .FirstOrDefault(p => p.Id.Equals(itemId));

                            if (item != null)
                            {
                                foreach (var detail in item.ExternalTransferOrderDetails)
                                {
                                    TransferRequestDetail transferRequestDetail = this.DbContext.TransferRequestDetails.FirstOrDefault(s => s.Id == detail.TRDetailId);
                                    transferRequestDetail.Status = "Sudah diterima Pembelian";

                                    InternalTransferOrderDetail internalTransferOrderDetail = this.DbContext.InternalTransferOrderDetails.FirstOrDefault(s => s.Id == detail.ITODetailId);
                                    internalTransferOrderDetail.Status = "TO Internal belum diorder";
                                }

                                InternalTransferOrder internalTransferOrder = this.DbContext.InternalTransferOrders.FirstOrDefault(s => s.Id == item.ITOId);
                                internalTransferOrder.IsPost = false;
                            }

                            foreach (int detailId in ExternalTransferOrderDetailIds)
                            {
                                ExternalTransferOrderDetail externalTransferOrderDetail = this.DbContext.ExternalTransferOrderDetails.FirstOrDefault(p => p.Id.Equals(detailId));

                                await externalTransferOrderDetailService.DeleteModel(detailId);
                            }

                            await externalTransferOrderItemService.DeleteModel(itemId);
                        }
                        else
                        {
                            await externalTransferOrderItemService.UpdateModel(itemId, externalTransferOrderItem);

                            foreach (int detailId in ExternalTransferOrderDetailIds)
                            {
                                ExternalTransferOrderDetail externalTransferOrderDetail = externalTransferOrderItem.ExternalTransferOrderDetails.FirstOrDefault(p => p.Id.Equals(detailId));

                                await externalTransferOrderDetailService.UpdateModel(detailId, externalTransferOrderDetail);
                            }
                        }
                    }

                    Updated = await this.UpdateAsync(Id, Model);

                    foreach (ExternalTransferOrderItem item in Model.ExternalTransferOrderItems)
                    {
                        if (item.Id == 0)
                        {
                            await externalTransferOrderItemService.CreateModel(item);

                            foreach (var detail in item.ExternalTransferOrderDetails)
                            {
                                TransferRequestDetail transferRequestDetail = this.DbContext.TransferRequestDetails.FirstOrDefault(s => s.Id == detail.TRDetailId);
                                transferRequestDetail.Status = "Sudah dibuat TO Eksternal";

                                InternalTransferOrderDetail internalTransferOrderDetail = this.DbContext.InternalTransferOrderDetails.FirstOrDefault(s => s.Id == detail.ITODetailId);
                                internalTransferOrderDetail.Status = "Sudah dibuat TO Eksternal";
                            }

                            InternalTransferOrder internalTransferOrder = this.DbContext.InternalTransferOrders.FirstOrDefault(s => s.Id == item.ITOId);
                            internalTransferOrder.IsPost = true;
                        }
                    }

                    this.DbContext.SaveChanges();

                    Transaction.Commit();
                }
                catch (Exception)
                {
                    Transaction.Rollback();
                }
            }

            return(Updated);
        }