private List <WTQ1_TransferRequestDetails> GetTransferRequestDetail()
        {
            var list = TransferRequestDetails.Where(t => t.Quantity > 0);

            return(list.Select(d => new WTQ1_TransferRequestDetails()
            {
                ItemCode = d.ItemCode,
                Quantity = d.Quantity,
                WhsCode = Config.WhsCode,
                ItemName = d.ItemName,
                InvntryUom = d.InvntryUom,
                OnHand1 = d.OnHand1,
                CreatedDateL = DateTime.Now,
                CreatedByL = Config.CurrentUser,
                ModifiedByL = Config.CurrentUser,
                ModifiedDateL = DateTime.Now,
            }).ToList());
        }
        private void AddTransferRequestDetail()
        {
            var list = TransferRequestDetails.Where(t => t.Quantity > 0);

            foreach (var detail in list.Select(d => new WTQ1_TransferRequestDetails()
            {
                ItemCode = d.ItemCode,
                Quantity = d.Quantity,
                WhsCode = Config.WhsCode,
                ItemName = d.ItemName,
                InvntryUom = d.InvntryUom,
                OnHand1 = d.OnHand1,
                CreatedDateL = DateTime.Now,
                CreatedByL = Config.CurrentUser,
                ModifiedByL = Config.CurrentUser,
                ModifiedDateL = DateTime.Now,
            }))
            {
                TransferRequest.WTQ1_TransferRequestDetails.Add(detail);
            }
        }
        private void SavePendingChanges()
        {
            //Agregar los que no existen en la tabla detalles
            var existingIds = TransferRequest.WTQ1_TransferRequestDetails
                              .Select(t => t.ItemCode).ToList();

            var newDetails = TransferRequestDetails.ToList()
                             .Where(v => v.Quantity > 0 && !existingIds.Contains(v.ItemCode))
                             .ToList();

            TransferRequest.WTQ1_TransferRequestDetails
            .AddRange(newDetails);

            // todos los cambios en la colleccion detalles.
            var existingDetails = TransferRequestDetails.ToList()
                                  .Where(v => existingIds.Contains(v.ItemCode)).ToList();


            //Actualizar la cantidad de el producto seleccionado y modificado en la colleccion.
            foreach (var detail in existingDetails)
            {
                var d = TransferRequest.WTQ1_TransferRequestDetails.FirstOrDefault(c => c.ItemCode == detail.ItemCode);
                d.Quantity = detail.Quantity;
            }

            var codes = existingDetails.Where(q => q.Quantity == 0).Select(d => d.ItemCode).ToList();

            if (TransferRequest.WTQ1_TransferRequestDetails != null)
            {
                var toDelete = TransferRequest.WTQ1_TransferRequestDetails
                               .Where(d => codes.Contains(d.ItemCode))
                               .ToList();

                TransferRequestHelper.DeleteZeroQtyDetails(toDelete);
            }
        }