public JsonResult _SubmitPalleteSerials(List <string> serialList, int?pid, int?orderId, string DeliveryNo, int OrderDetailID, int?type)
        {
            int warehouseId = caCurrent.CurrentWarehouse().WarehouseId;

            GoodsReturnRequestSync goodsReturnRequestSync = new GoodsReturnRequestSync();

            List <PalleTrackingProcess> palleTrackingProcessList = new List <PalleTrackingProcess>();

            foreach (var pallet in serialList)
            {
                PalleTrackingProcess palleTrackingProcess = new PalleTrackingProcess();
                decimal quantity    = 0;
                var     palletdData = pallet.Split(new string[] { "#+#", "#+#" }, StringSplitOptions.RemoveEmptyEntries);
                if (palletdData.Length >= 2)
                {
                    int PalletTrackingId = 0;

                    if (!string.IsNullOrEmpty(palletdData[0]))
                    {
                        PalletTrackingId = int.Parse(palletdData[0]);
                        palleTrackingProcess.PalletTrackingId = PalletTrackingId;
                    }
                    if (!string.IsNullOrEmpty(palletdData[1]))
                    {
                        quantity = decimal.Parse(palletdData[1]);
                        palleTrackingProcess.ProcessedQuantity = quantity;
                    }
                }

                palleTrackingProcessList.Add(palleTrackingProcess);
            }

            goodsReturnRequestSync.PalleTrackingProcess = palleTrackingProcessList;
            goodsReturnRequestSync.ProductId            = pid ?? 0;
            goodsReturnRequestSync.OrderId                  = orderId ?? 0;
            goodsReturnRequestSync.deliveryNumber           = DeliveryNo;
            goodsReturnRequestSync.OrderDetailID            = OrderDetailID;
            goodsReturnRequestSync.InventoryTransactionType = type;
            goodsReturnRequestSync.tenantId                 = CurrentTenantId;
            goodsReturnRequestSync.warehouseId              = warehouseId;
            goodsReturnRequestSync.userId = CurrentUserId;

            int result = OrderService.ProcessPalletTrackingSerial(goodsReturnRequestSync);


            return(Json(result < 0 ? false : true, JsonRequestBehavior.AllowGet));
        }
        public JsonResult _SubmitPalleteSerials(List <string> serialList, int?pid, int?orderId, int?type, int?palletTrackingId, string groupToken, string deliveryNumber = null)
        {
            var _inventoryTransactionsService = DependencyResolver.Current.GetService <IOrderService>();
            int warehouseId = caCurrent.CurrentWarehouse().WarehouseId;
            List <PalleTrackingProcess> palleTrackingProcessList = new List <PalleTrackingProcess>();

            ViewBag.QuantityEnabled = true;
            if (orderId.HasValue)
            {
                foreach (var pallet in serialList)
                {
                    PalleTrackingProcess palleTrackingProcess = new PalleTrackingProcess();
                    decimal quantity    = 0;
                    var     palletdData = pallet.Split(new string[] { "#+#", "#+#" }, StringSplitOptions.RemoveEmptyEntries);
                    if (palletdData.Length >= 2)
                    {
                        int PalletTrackingId = 0;

                        if (!string.IsNullOrEmpty(palletdData[0]))
                        {
                            PalletTrackingId = int.Parse(palletdData[0]);
                            palleTrackingProcess.PalletTrackingId = PalletTrackingId;
                        }
                        if (!string.IsNullOrEmpty(palletdData[1]))
                        {
                            quantity = decimal.Parse(palletdData[1]);
                            palleTrackingProcess.ProcessedQuantity = quantity;
                        }
                    }

                    palleTrackingProcessList.Add(palleTrackingProcess);
                }
                GoodsReturnRequestSync goodsReturnRequestSync = new GoodsReturnRequestSync
                {
                    PalleTrackingProcess = palleTrackingProcessList,
                    ProductId            = pid ?? 0,
                    OrderId                  = orderId ?? 0,
                    PalletTrackingId         = palletTrackingId,
                    InventoryTransactionType = type,
                    tenantId                 = CurrentTenantId,
                    warehouseId              = warehouseId,
                    userId         = CurrentUserId,
                    deliveryNumber = deliveryNumber
                };
                _purchaseOrderService.ProcessPalletTrackingSerial(goodsReturnRequestSync, groupToken, true);
                return(Json(new { orderid = orderId ?? 0, productId = pid ?? 0, orderNumber = "", groupToken = groupToken }, JsonRequestBehavior.AllowGet));
            }
            else if (serialList == null && type == (int)InventoryTransactionTypeEnum.AdjustmentIn)
            {
                _inventoryTransactionsService.AddGoodsReturnPallet(serialList, "", pid ?? 0, type ?? 0, 0, orderId, CurrentTenantId, CurrentWarehouseId, CurrentUserId, palletTrackigId: palletTrackingId ?? 0);
            }

            else
            {
                if (serialList != null)
                {
                    string orderNumber = GenerateNextOrderNumber((InventoryTransactionTypeEnum)type);
                    if ((!orderId.HasValue && type == (int)InventoryTransactionTypeEnum.Wastage) || type == (int)InventoryTransactionTypeEnum.AdjustmentIn || type == (int)InventoryTransactionTypeEnum.AdjustmentOut)
                    {
                        foreach (var pallet in serialList)
                        {
                            PalleTrackingProcess palleTrackingProcess = new PalleTrackingProcess();
                            decimal quantity    = 0;
                            var     palletdData = pallet.Split(new string[] { "#+#", "#+#" }, StringSplitOptions.RemoveEmptyEntries);
                            if (palletdData.Length >= 2)
                            {
                                int PalletTrackingId = 0;

                                if (!string.IsNullOrEmpty(palletdData[0]))
                                {
                                    PalletTrackingId = int.Parse(palletdData[0]);
                                    palleTrackingProcess.PalletTrackingId = PalletTrackingId;
                                }
                                if (!string.IsNullOrEmpty(palletdData[1]))
                                {
                                    quantity = decimal.Parse(palletdData[1]);
                                    palleTrackingProcess.ProcessedQuantity = quantity;
                                }
                            }

                            palleTrackingProcessList.Add(palleTrackingProcess);
                        }
                        GoodsReturnRequestSync goodsReturnRequestSync = new GoodsReturnRequestSync
                        {
                            PalleTrackingProcess = palleTrackingProcessList,
                            ProductId            = pid ?? 0,
                            OrderId                  = orderId ?? 0,
                            PalletTrackingId         = palletTrackingId,
                            InventoryTransactionType = type,
                            tenantId                 = CurrentTenantId,
                            warehouseId              = warehouseId,
                            OrderNumber              = orderNumber,
                            userId         = CurrentUserId,
                            deliveryNumber = deliveryNumber
                        };
                        int result = _purchaseOrderService.ProcessPalletTrackingSerial(goodsReturnRequestSync, groupToken, true);
                        if (result > 0)
                        {
                            return(Json(new { orderid = orderId ?? 0, productId = pid ?? 0, orderNumber = orderNumber, groupToken = groupToken }, JsonRequestBehavior.AllowGet));
                        }
                    }

                    else
                    {
                        foreach (var pallet in serialList)
                        {
                            PalleTrackingProcess palleTrackingProcess = new PalleTrackingProcess();
                            decimal quantity    = 0;
                            var     palletdData = pallet.Split(new string[] { "#+#", "#+#" }, StringSplitOptions.RemoveEmptyEntries);
                            if (palletdData.Length >= 2)
                            {
                                int PalletTrackingId = 0;

                                if (!string.IsNullOrEmpty(palletdData[0]))
                                {
                                    PalletTrackingId = int.Parse(palletdData[0]);
                                    palleTrackingProcess.PalletTrackingId = PalletTrackingId;
                                }
                                if (!string.IsNullOrEmpty(palletdData[1]))
                                {
                                    quantity = decimal.Parse(palletdData[1]);
                                    palleTrackingProcess.ProcessedQuantity = quantity;
                                }
                            }

                            palleTrackingProcessList.Add(palleTrackingProcess);
                        }

                        GoodsReturnRequestSync goodsReturnRequestSync = new GoodsReturnRequestSync
                        {
                            PalleTrackingProcess = palleTrackingProcessList,
                            ProductId            = pid ?? 0,
                            OrderId                  = orderId ?? 0,
                            PalletTrackingId         = palletTrackingId,
                            InventoryTransactionType = type,
                            tenantId                 = CurrentTenantId,
                            warehouseId              = warehouseId,
                            OrderNumber              = orderNumber,
                            userId         = CurrentUserId,
                            deliveryNumber = deliveryNumber
                        };

                        _purchaseOrderService.ProcessPalletTrackingSerial(goodsReturnRequestSync, groupToken, true);
                    }

                    return(Json(new { orderid = orderId ?? 0, productId = pid ?? 0, orderNumber = orderNumber, groupToken = groupToken }, JsonRequestBehavior.AllowGet));
                }
            }

            return(Json(true, JsonRequestBehavior.AllowGet));
        }