Esempio n. 1
0
        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);
                    TransferDeliveryOrderItemService transferDeliveryOrderItemService = ServiceProvider.GetService <TransferDeliveryOrderItemService>();
                    transferDeliveryOrderItemService.Username = this.Username;
                    TransferDeliveryOrderDetailService transferDeliveryOrderDetailService = ServiceProvider.GetService <TransferDeliveryOrderDetailService>();
                    transferDeliveryOrderDetailService.Username = this.Username;

                    HashSet <int> TransferDeliveryOrderItemIds = new HashSet <int>(
                        this.DbContext.TransferDeliveryOrderItems
                        .Where(p => p.DOId.Equals(Id))
                        .Select(p => p.Id)
                        );

                    foreach (int itemId in TransferDeliveryOrderItemIds)
                    {
                        HashSet <int> TransferDeliveryOrderDetailIds = new HashSet <int>(
                            this.DbContext.TransferDeliveryOrderDetails
                            .Where(p => p.DOItemId.Equals(itemId))
                            .Select(p => p.Id)
                            );

                        foreach (int detailId in TransferDeliveryOrderDetailIds)
                        {
                            await transferDeliveryOrderDetailService.DeleteModel(detailId);

                            TransferDeliveryOrderItem item = this.DbContext.TransferDeliveryOrderItems
                                                             .Include(d => d.transferDeliveryOrderDetail)
                                                             .FirstOrDefault(p => p.Id.Equals(itemId));

                            if (item != null)
                            {
                                foreach (var detail in item.transferDeliveryOrderDetail)
                                {
                                    ExternalTransferOrderDetail externalTransferOrderDetail = this.DbContext.ExternalTransferOrderDetails.FirstOrDefault(s => s.Id == detail.ETODetailId);
                                    externalTransferOrderDetail.DOQuantity         = (externalTransferOrderDetail.DOQuantity) - (detail.DOQuantity);
                                    externalTransferOrderDetail.RemainingQuantity  = (externalTransferOrderDetail.RemainingQuantity) + (detail.DOQuantity);
                                    externalTransferOrderDetail._LastModifiedUtc   = DateTime.UtcNow;
                                    externalTransferOrderDetail._LastModifiedAgent = "Service";
                                    externalTransferOrderDetail._LastModifiedBy    = this.Username;

                                    if (externalTransferOrderDetail.DealQuantity == detail.RemainingQuantity)
                                    {
                                        TransferRequestDetail transRequestDetail = this.DbContext.TransferRequestDetails.FirstOrDefault(s => s.Id == detail.TRDetailId);
                                        transRequestDetail.Status             = "Sudah diorder ke Penjualan";
                                        transRequestDetail._LastModifiedUtc   = DateTime.UtcNow;
                                        transRequestDetail._LastModifiedAgent = "Service";
                                        transRequestDetail._LastModifiedBy    = this.Username;

                                        InternalTransferOrderDetail internTransferOrderDetail = this.DbContext.InternalTransferOrderDetails.FirstOrDefault(s => s.Id == detail.ITODetailId);
                                        transRequestDetail.Status             = "Sudah diorder ke Penjualan";
                                        transRequestDetail._LastModifiedUtc   = DateTime.UtcNow;
                                        transRequestDetail._LastModifiedAgent = "Service";
                                        transRequestDetail._LastModifiedBy    = this.Username;
                                    }
                                    else if (externalTransferOrderDetail.RemainingQuantity <= 0)
                                    {
                                        TransferRequestDetail transRequestDetail = this.DbContext.TransferRequestDetails.FirstOrDefault(s => s.Id == detail.TRDetailId);
                                        transRequestDetail.Status             = "Sudah diorder semua ke Unit Pengirim";
                                        transRequestDetail._LastModifiedUtc   = DateTime.UtcNow;
                                        transRequestDetail._LastModifiedAgent = "Service";
                                        transRequestDetail._LastModifiedBy    = this.Username;

                                        InternalTransferOrderDetail internTransferOrderDetail = this.DbContext.InternalTransferOrderDetails.FirstOrDefault(s => s.Id == detail.ITODetailId);
                                        transRequestDetail.Status             = "Sudah diorder semua ke Unit Pengirim";
                                        transRequestDetail._LastModifiedUtc   = DateTime.UtcNow;
                                        transRequestDetail._LastModifiedAgent = "Service";
                                        transRequestDetail._LastModifiedBy    = this.Username;
                                    }
                                    else if (externalTransferOrderDetail.RemainingQuantity > 0)
                                    {
                                        TransferRequestDetail transRequestDetail = this.DbContext.TransferRequestDetails.FirstOrDefault(s => s.Id == detail.TRDetailId);
                                        transRequestDetail.Status             = "Sudah diorder sebagian ke Unit Pengirim";
                                        transRequestDetail._LastModifiedUtc   = DateTime.UtcNow;
                                        transRequestDetail._LastModifiedAgent = "Service";
                                        transRequestDetail._LastModifiedBy    = this.Username;

                                        InternalTransferOrderDetail internTransferOrderDetail = this.DbContext.InternalTransferOrderDetails.FirstOrDefault(s => s.Id == detail.ITODetailId);
                                        transRequestDetail.Status             = "Sudah diorder sebagian ke Unit Pengirim";
                                        transRequestDetail._LastModifiedUtc   = DateTime.UtcNow;
                                        transRequestDetail._LastModifiedAgent = "Service";
                                        transRequestDetail._LastModifiedBy    = this.Username;
                                    }
                                }
                            }
                        }

                        await transferDeliveryOrderItemService.DeleteModel(itemId);
                    }

                    Deleted = await this.DeleteAsync(Id);

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

            return(Deleted);
        }
Esempio n. 2
0
        public TransferDeliveryOrder MapToModel(TransferDeliveryOrderViewModel viewModel)
        {
            TransferDeliveryOrder model = new TransferDeliveryOrder();

            PropertyCopier <TransferDeliveryOrderViewModel, TransferDeliveryOrder> .Copy(viewModel, model);

            model.DONo              = viewModel.DONo;
            model.DOdate            = (DateTime)viewModel.DODate;
            model.SupplierId        = viewModel.Supplier._id ?? "";
            model.SupplierCode      = viewModel.Supplier.code;
            model.SupplierName      = viewModel.Supplier.name;
            model.OrderDivisionId   = viewModel.Division._id;
            model.OrderDivisionCode = viewModel.Division.code;
            model.OrderDivisionName = viewModel.Division.name;
            model.Remark            = viewModel.Remark;
            model.IsPosted          = viewModel.IsPosted;

            model.TransferDeliveryOrderItem = new List <TransferDeliveryOrderItem>();

            foreach (TransferDeliveryOrderItemViewModel transferDeliveryOrderItemViewModel in viewModel.items)
            {
                TransferDeliveryOrderItem transferDeliveryOrderItem = new TransferDeliveryOrderItem();

                PropertyCopier <TransferDeliveryOrderItemViewModel, TransferDeliveryOrderItem> .Copy(transferDeliveryOrderItemViewModel, transferDeliveryOrderItem);

                transferDeliveryOrderItem.DOId  = transferDeliveryOrderItemViewModel.DOId;
                transferDeliveryOrderItem.ETOId = transferDeliveryOrderItemViewModel.ETOId;
                transferDeliveryOrderItem.ETONo = transferDeliveryOrderItemViewModel.ETONo;
                transferDeliveryOrderItem.ITOId = transferDeliveryOrderItemViewModel.ITOId;
                transferDeliveryOrderItem.ITONo = transferDeliveryOrderItemViewModel.ITONo;

                transferDeliveryOrderItem.transferDeliveryOrderDetail = new List <TransferDeliveryOrderDetail>();
                foreach (TransferDeliveryOrderDetailViewModel transferDeliveryOrderDetailViewModel in transferDeliveryOrderItemViewModel.details)
                {
                    TransferDeliveryOrderDetail transferDeliveryOrderDetail = new TransferDeliveryOrderDetail();
                    PropertyCopier <TransferDeliveryOrderDetailViewModel, TransferDeliveryOrderDetail> .Copy(transferDeliveryOrderDetailViewModel, transferDeliveryOrderDetail);

                    transferDeliveryOrderDetail.DOItemId              = transferDeliveryOrderDetailViewModel.DOItemId;
                    transferDeliveryOrderDetail.ETODetailId           = transferDeliveryOrderDetailViewModel.ETODetailId;
                    transferDeliveryOrderDetail.ITODetailId           = transferDeliveryOrderDetailViewModel.ITODetailId;
                    transferDeliveryOrderDetail.TRDetailId            = transferDeliveryOrderDetailViewModel.TRDetailId;
                    transferDeliveryOrderDetail.TRId                  = transferDeliveryOrderDetailViewModel.TRId;
                    transferDeliveryOrderDetail.TRNo                  = transferDeliveryOrderDetailViewModel.TRNo;
                    transferDeliveryOrderDetail.UnitId                = transferDeliveryOrderDetailViewModel.UnitId;
                    transferDeliveryOrderDetail.UnitCode              = transferDeliveryOrderDetailViewModel.UnitCode;
                    transferDeliveryOrderDetail.UnitName              = transferDeliveryOrderDetailViewModel.UnitName;
                    transferDeliveryOrderDetail.ProductId             = transferDeliveryOrderDetailViewModel.ProductId;
                    transferDeliveryOrderDetail.ProductCode           = transferDeliveryOrderDetailViewModel.ProductCode;
                    transferDeliveryOrderDetail.ProductName           = transferDeliveryOrderDetailViewModel.ProductName;
                    transferDeliveryOrderDetail.Grade                 = transferDeliveryOrderDetailViewModel.Grade;
                    transferDeliveryOrderDetail.ProductRemark         = transferDeliveryOrderDetailViewModel.ProductRemark;
                    transferDeliveryOrderDetail.RequestedQuantity     = transferDeliveryOrderDetailViewModel.RequestedQuantity;
                    transferDeliveryOrderDetail.UomId                 = transferDeliveryOrderDetailViewModel.UomId;
                    transferDeliveryOrderDetail.UomUnit               = transferDeliveryOrderDetailViewModel.UomUnit;
                    transferDeliveryOrderDetail.DOQuantity            = transferDeliveryOrderDetailViewModel.DOQuantity;
                    transferDeliveryOrderDetail.ShippingOrderQuantity = transferDeliveryOrderDetailViewModel.ShippingOrderQuantity;
                    transferDeliveryOrderDetail.RemainingQuantity     = transferDeliveryOrderDetailViewModel.RemainingQuantity;

                    transferDeliveryOrderItem.transferDeliveryOrderDetail.Add(transferDeliveryOrderDetail);
                }
                model.TransferDeliveryOrderItem.Add(transferDeliveryOrderItem);
            }

            return(model);
        }