public static object RegistroOrden(String clientes, String productos, String descripcion, String cantidad, String precio, String estado)
        {
            Object     objReturn = new Object();
            BaseEntity objBase   = new BaseEntity();

            try
            {
                #region Obtener Cliente
                JavaScriptSerializer sr = new JavaScriptSerializer();
                List <String>        lstClientesString = sr.Deserialize <List <String> >(clientes);
                List <Int32>         lstClientesInt    = new List <Int32>();
                if (lstClientesString.Count > 0)
                {
                    if (lstClientesString[0].Equals("multiselect-all"))
                    {
                        lstClientesString.RemoveAt(0);
                    }
                    lstClientesInt = lstClientesString.Select(Int32.Parse).ToList();
                }
                else
                {
                    lstClientesInt.Insert(0, 0);
                }
                #endregion

                #region Obtener Producto
                JavaScriptSerializer srp = new JavaScriptSerializer();
                List <String>        lstProductString = srp.Deserialize <List <String> >(productos);
                List <Int32>         lstProductsInt   = new List <Int32>();
                if (lstProductString.Count > 0)
                {
                    if (lstProductString[0].Equals("multiselect-all"))
                    {
                        lstProductString.RemoveAt(0);
                    }
                    lstProductsInt = lstProductString.Select(Int32.Parse).ToList();
                }
                else
                {
                    lstProductsInt.Insert(0, 0);
                }
                #endregion


                Int32   CustomerId = (lstClientesInt.Count > 0) ? lstClientesInt[0] : 0;
                Int32   ProductId  = (lstProductsInt.Count > 0) ? lstProductsInt[0] : 0;
                Decimal UnitPrice  = Convert.ToDecimal(precio);
                Int32   Quantity   = Convert.ToInt32(cantidad);
                Byte    Status     = Convert.ToByte(estado);

                AppResource obj = ResourceBL.Instance.AppResource_GetByID(ref objBase, ProductId);
                if (objBase.Errors.Count == 0)
                {
                    if (obj != null)
                    {
                        OrderHeader orderHeader = new OrderHeader();
                        obj.NameResource = Config.Impremtawendomain + obj.NameResource;

                        OrderDetail Detalle = new OrderDetail();
                        Detalle.Product           = obj;
                        Detalle.ProductId         = ProductId;
                        Detalle.Product.UnitPrice = UnitPrice;
                        Detalle.Quantity          = Quantity;
                        Detalle.CreatedBy         = CustomerId;
                        Detalle.UpdatedBy         = CustomerId;
                        Detalle.Status            = (Status == 1) ? Convert.ToByte(EnumStatus.Enabled) : Convert.ToByte(0);

                        orderHeader.IsCotization = 1;
                        orderHeader.Description  = descripcion;
                        orderHeader.ListOrderDetail.Add(Detalle);
                        Detalle.CalculateTotalPricexProduct();
                        orderHeader.CalculateTotals();

                        orderHeader.Customer            = new Customer();
                        orderHeader.Customer.CustomerId = CustomerId;
                        tBaseDetailOrderList objListDetail = new tBaseDetailOrderList();

                        for (int i = 0; i < orderHeader.ListOrderDetail.Count; i++)
                        {
                            objListDetail.Add(new tBaseDetailOrder()
                            {
                                ProductId = orderHeader.ListOrderDetail[i].Product.Id,
                                Price     = orderHeader.ListOrderDetail[i].Product.UnitPrice,
                                Quantity  = orderHeader.ListOrderDetail[i].Quantity,
                                CreatedBy = orderHeader.Customer.CustomerId,
                                UpdatedBy = orderHeader.Customer.CustomerId,
                                Status    = Convert.ToByte(EnumStatus.Disabled)
                            });
                        }

                        Boolean success = OrderBL.Instance.Insertar_Pedido(ref objBase, ref orderHeader, objListDetail);
                        if (success)
                        {
                            String UrlPaymentOrder = String.Format("{0}?ordid={1}", Config.impremtawendomainReview,
                                                                   HttpUtility.UrlEncode(Encryption.Encrypt(Convert.ToString(orderHeader.OrderId))));
                            objReturn = new
                            {
                                Result          = "Ok",
                                Msg             = "Orden Registrada correctamente.",
                                UrlPaymentOrder = UrlPaymentOrder
                            };
                        }
                        else
                        {
                            objReturn = new
                            {
                                Result = "NoOk",
                                Msg    = "No se pudo registrar la Orden.",
                            };
                        }
                    }
                }
                else
                {
                    objReturn = new
                    {
                        Result = "NoOk",
                        Msg    = "No se pudo registrar la Orden.",
                    };
                }
            }
            catch (Exception exception)
            {
                objReturn = new
                {
                    Result = "NoOk",
                    Msg    = "No se pudo registrar la Orden.",
                };
            }
            return(objReturn);
        }
        public static Object CartProduct_UpdateQuantity(dynamic data)
        {
            String Ok        = "Ok";
            String NoOk      = "NoOk";
            Object objReturn = new { Result = NoOk };

            try
            {
                String        ProductId     = data["ProductId"];
                String        Quantity      = data["ProductQuantity"];
                List <Object> lstItemsCount = new List <Object>();

                if (!Int32.TryParse(ProductId, out int productid) || productid < 0)
                {
                    return(objReturn = new { Result = NoOk, Message = "Producto Incorrecto." });
                }
                if (!Int32.TryParse(Quantity, out int quantity) || quantity < 0)
                {
                    return(objReturn = new { Result = NoOk, Message = "Cantidad Incorrecta." });
                }

                OrderHeader ObjOrderHeader = BaseSession.SsOrderxCore;
                var         ProductExist   = ObjOrderHeader.ListOrderDetail.Any(p => p.Product.ID == productid);
                if (!ProductExist && ProductId != "00")
                {
                    objReturn = new
                    {
                        Result      = NoOk,
                        Msg         = "El producto no se encuentra agregado.",
                        OrderHeader = ""
                    };
                }
                else
                {
                    OrderDetail DetailSelect = new OrderDetail();
                    for (int i = 0; i < ObjOrderHeader.ListOrderDetail.Count; i++)
                    {
                        if (ObjOrderHeader.ListOrderDetail[i].Product.ID == productid)
                        {
                            ObjOrderHeader.ListOrderDetail[i].Quantity = quantity;
                            ObjOrderHeader.CalculateTotalPricexProduct(ObjOrderHeader.ListOrderDetail[i]);
                            DetailSelect = ObjOrderHeader.ListOrderDetail[i];
                        }
                    }

                    //Remover toda la tabla
                    if (quantity == 0 && ProductId == "00")
                    {
                        ObjOrderHeader.ListOrderDetail = null;
                    }
                    //Remove producto seleccionado
                    if (quantity == 0 && ProductId != "00")
                    {
                        ObjOrderHeader.ListOrderDetail.Remove(ObjOrderHeader.ListOrderDetail.Single(p => p.Product.ID == productid));
                    }

                    ObjOrderHeader.CalculateTotals();
                    lstItemsCount.Add(ObjOrderHeader.ListOrderDetail);
                    BaseSession.SsOrderxCore = ObjOrderHeader;
                    DetailSelect.ProductId   = Convert.ToInt32(ProductId);

                    Object OrderHeader = new
                    {
                        Ordertotal    = ObjOrderHeader.Ordertotal,
                        SubTotal      = ObjOrderHeader.SubTotal,
                        DeliveryTotal = ObjOrderHeader.DeliveryTotal,
                        CustomerId    = ObjOrderHeader.Customer == null ? 0 : ObjOrderHeader.Customer.ID,
                        CustomerName  = ObjOrderHeader.Customer == null ? "" : ObjOrderHeader.Customer.FullName,
                        Detail        = DetailSelect,
                        lstItemsCount = lstItemsCount
                    };
                    JavaScriptSerializer serializer = new JavaScriptSerializer();
                    String sJSON = serializer.Serialize(OrderHeader);

                    objReturn = new
                    {
                        Result      = Ok,
                        Msg         = "Cantidad actualizada correctamente.",
                        OrderHeader = sJSON.ToString()
                    };
                }
            }
            catch (Exception ex)
            {
                objReturn = new
                {
                    Result = NoOk,
                    Msg    = "Ocurrio un problema actualizando la cantidad."
                };
            }
            return(objReturn);
        }
        public static Object AddProduct(dynamic objProd)
        {
            Object     objReturn = new { Result = "NoOk" };
            BaseEntity objBase   = new BaseEntity();

            try
            {
                Products obj       = null;
                String   ProductId = Encryption.Decrypt(HttpUtility.UrlDecode(objProd["ProductId"]));
                obj = ProductBL.Instance.Products_GetList_ById_Ecommerce(ref objBase, Convert.ToInt32(ProductId));

                if (objBase.Errors.Count == 0)
                {
                    if (obj != null)
                    {
                        obj.NameResource = Config.ProductDomainRuta + obj.NameResource;
                        OrderHeader orderHeader  = BaseSession.SsOrderxCore;
                        var         ProductExist = orderHeader.ListOrderDetail.Any(p => p.Product.ID == obj.ID);
                        if (ProductExist)
                        {
                            objReturn = new
                            {
                                Result = "NoOk",
                                Msg    = "El producto ya se encuentra agregado.",
                                Value  = -1
                            };
                        }
                        else
                        {
                            OrderDetail Detalle = new OrderDetail()
                            {
                                Product  = obj,
                                Quantity = 1,
                            };

                            orderHeader.ListOrderDetail.Add(Detalle);
                            Detalle.CalculateTotalPricexProduct();
                            orderHeader.CalculateTotals();

                            if (orderHeader != null && orderHeader.ListOrderDetail != null && orderHeader.ListOrderDetail.Count > 0)
                            {
                                List <Object> lstDetail = new List <Object>();
                                for (int i = 0; i < orderHeader.ListOrderDetail.Count; i++)
                                {
                                    Object objProduct = new
                                    {
                                        ProductId    = orderHeader.ListOrderDetail[i].Product.ID,
                                        ProductName  = orderHeader.ListOrderDetail[i].Product.Name,
                                        Category     = orderHeader.ListOrderDetail[i].Product.category.Name,
                                        UnitPrice    = orderHeader.ListOrderDetail[i].Product.UnitPrice,
                                        NameResource = orderHeader.ListOrderDetail[i].Product.NameResource
                                    };

                                    Object Detail = new
                                    {
                                        Product    = objProduct,
                                        Quantity   = orderHeader.ListOrderDetail[i].Quantity,
                                        TotalPrice = orderHeader.ListOrderDetail[i].Totalprice,
                                    };

                                    lstDetail.Add(Detail);
                                }

                                Object OrderHeader = new
                                {
                                    Ordertotal    = orderHeader.Ordertotal,
                                    SubTotal      = orderHeader.SubTotal,
                                    DeliveryTotal = orderHeader.DeliveryTotal,
                                    CustomerId    = orderHeader.Customer == null ? 0 : orderHeader.Customer.ID,
                                    CustomerName  = orderHeader.Customer == null ? "" : orderHeader.Customer.FullName,
                                    Detail        = lstDetail
                                };

                                JavaScriptSerializer serializer = new JavaScriptSerializer();
                                String sJSON = serializer.Serialize(OrderHeader);

                                BaseSession.SsOrderxCore = orderHeader;

                                objReturn = new
                                {
                                    Result = "Ok",
                                    Msg    = "Agregado correctamente.",
                                    ListProductToCartHeader = sJSON.ToString()
                                };
                            }
                        }
                    }
                    else
                    {
                        objReturn = new
                        {
                            Result = "NoOk",
                            Msg    = "No se pudo agregar el producto."
                        };
                    }
                }
                else
                {
                    objReturn = new
                    {
                        Result = "NoOk",
                        Msg    = "Ocurrio un problema agregando el producto."
                    };
                }
            }
            catch (Exception ex)
            {
                objReturn = new
                {
                    Result = "NoOk",
                    Msg    = "Ocurrio un problema agregando el producto."
                };
            }
            return(objReturn);
        }