public void SaveAgregaOrdenAMesa(int Mesa)
        {
            MesasDisponibles newMesa = new MesasDisponibles();
            DateTime         xDate   = DateTime.Now;

            newMesa.IDMesa      = Mesa;
            newMesa.FechaInicio = xDate;
            newMesa.FechaFin    = xDate;
            contex.mesasdisponibles.Add(newMesa);
            contex.SaveChanges();
            Documentos newDoc = new Documentos();

            newDoc.ID            = Guid.NewGuid();
            newDoc.IDTipo        = 1;
            newDoc.IDCliente     = new Guid();
            newDoc.IDMesa        = newMesa.ID;
            newDoc.Nombre        = Mesa.ToString() + "-" + xDate.ToString("HHMM");
            newDoc.Observaciones = "";
            newDoc.Total         = 0;
            newDoc.IVA           = 0;
            newDoc.IDUsuario     = 0;
            newDoc.Fecha         = xDate;
            newDoc.FechaEntrega  = xDate;
            newDoc.Pago          = 0;
            newDoc.Estatus       = "A";
            contex.Documentos.Add(newDoc);
            contex.SaveChanges();
        }
        public List <string> GuardaNewBlankPedido(Guid IDCliente, int IDUser, string IDMesa)
        {
            string SeGuardo = "Error al Guardar, favor de intentarlo de nuevo";

            DateTime fecha   = DateTime.Now;
            DateTime useDate = fecha;;

            MesasDisponibles NewMesa = new MesasDisponibles();

            NewMesa.IDMesa      = Convert.ToInt32(IDMesa);
            NewMesa.FechaInicio = fecha;
            NewMesa.FechaFin    = fecha;
            contex.mesasdisponibles.Add(NewMesa);
            contex.SaveChanges();


            Guid       xID        = Guid.NewGuid();
            Documentos documentos = new Documentos();

            documentos.ID            = xID;
            documentos.IDCliente     = IDCliente;
            documentos.IDTipo        = 1;
            documentos.IDMesa        = NewMesa.ID;
            documentos.Observaciones = "";
            documentos.Fecha         = fecha;
            documentos.FechaEntrega  = useDate;
            documentos.Total         = 0;
            documentos.IVA           = 0;
            documentos.IDUsuario     = IDUser;
            documentos.Pago          = 0;
            documentos.Estatus       = "A";
            contex.Documentos.Add(documentos);
            contex.SaveChanges();
            List <string> xReturn = new List <string>();

            xReturn.Add(xID.ToString());
            xReturn.Add(NewMesa.ID.ToString());
            return(xReturn);
        }
        public void GuardaTransferPedido(string idPed, string IDMesa)
        {
            DateTime fecha   = DateTime.Now;
            DateTime useDate = fecha;;

            MesasDisponibles NewMesa = new MesasDisponibles();

            NewMesa.IDMesa      = Convert.ToInt32(IDMesa);
            NewMesa.FechaInicio = fecha;
            NewMesa.FechaFin    = fecha;
            contex.mesasdisponibles.Add(NewMesa);
            contex.SaveChanges();

            Guid xID = Guid.Parse(idPed);

            var consulta = from datos in contex.Documentos
                           where datos.ID == xID
                           select datos;


            Documentos documentos = consulta.FirstOrDefault();

            documentos.IDMesa = NewMesa.ID;
            contex.SaveChanges();

            var consultaPartida = from datos in contex.DocPartidas
                                  where datos.IDDoc == xID
                                  select datos;

            List <DocPartidas> docPartidas = consultaPartida.ToList();

            foreach (var xPartida in docPartidas)
            {
                xPartida.IDMesa = NewMesa.ID;
                contex.SaveChanges();
            }
        }
        public string GuardaPedido(List <ProductosPedidos> productos, Guid IDCliente, int IDUser, double subTotal, string hasDate, string IDDocumento, string IDMesa)
        {
            string                  SeGuardo         = "Error al Guardar, favor de intentarlo de nuevo";
            bool                    NewElement       = true;
            DocPartidas             xdocPartidas     = null;
            DocPartidasPersonalizar docPPersonalizar = null;

            DateTime fecha   = DateTime.Now;
            DateTime useDate = fecha;;

            if (hasDate != null)
            {
                if (hasDate.Length > 0)
                {
                    useDate = Convert.ToDateTime(hasDate);
                    if (DateTime.Compare(DateTime.Now.AddMinutes(15), useDate) > 0)
                    {
                        return("Sólo se puede programar con al menos 15 minutos de diferencia");
                    }
                    useDate = useDate.AddMinutes(-90);
                }
            }

            MesasDisponibles NewMesa = new MesasDisponibles();

            if (IDMesa != null)
            {
                NewMesa.IDMesa      = Convert.ToInt32(IDMesa);
                NewMesa.FechaInicio = fecha;
                NewMesa.FechaFin    = fecha;
                contex.mesasdisponibles.Add(NewMesa);
                contex.SaveChanges();
            }

            Guid       xID        = Guid.NewGuid();
            Documentos documentos = new Documentos();

            if (IDDocumento != null)
            {
                if (IDDocumento.Length > 0)
                {
                    xID        = Guid.Parse(IDDocumento);
                    documentos = contex.Documentos.Where(x => x.ID == xID).FirstOrDefault();
                }
            }
            documentos.ID            = xID;
            documentos.IDCliente     = IDCliente;
            documentos.IDTipo        = 1;
            documentos.IDMesa        = IDMesa != null ? NewMesa.ID : 0;
            documentos.Observaciones = "";
            documentos.Fecha         = fecha;
            documentos.FechaEntrega  = useDate;
            documentos.Total         = subTotal * 1.16;
            documentos.IVA           = subTotal * 0.16;
            documentos.IDUsuario     = IDUser;
            documentos.Pago          = 0;
            if (IDDocumento == null)
            {
                contex.Documentos.Add(documentos);
            }
            contex.SaveChanges();



            int xPartida = 1;

            foreach (ProductosPedidos xPedido in productos)
            {
                NewElement = true;
                if (IDDocumento != null)
                {
                    if (IDDocumento.Length > 0)
                    {
                        xdocPartidas = contex.DocPartidas.Where(x => x.IDDoc == xID && x.IDProd == xPedido.ID).FirstOrDefault();
                        NewElement   = false;
                    }
                }
                if (xdocPartidas == null)
                {
                    xdocPartidas          = new DocPartidas();
                    NewElement            = true;
                    xdocPartidas.IDDoc    = xID;
                    xdocPartidas.NPartida = xPartida;
                    xdocPartidas.IDProd   = xPedido.ID;
                    xdocPartidas.IDMesa   = IDMesa != null?Convert.ToInt32(IDMesa) : 0;

                    xdocPartidas.Descripcion   = xPedido.Descripcion;
                    xdocPartidas.Cantidad      = xPedido.Cantidad;
                    xdocPartidas.Surtido       = xPedido.Surtido > 0 ? xPedido.Surtido : 0;
                    xdocPartidas.UnidadMedida  = xPedido.UnidadMedida;
                    xdocPartidas.Observaciones = xPedido.Observaciones != null ? xPedido.Observaciones : "";
                    xdocPartidas.Precio        = xPedido.Precio;
                    xdocPartidas.IVA           = xPedido.IVA;
                }
                if (IDDocumento == null || NewElement)
                {
                    contex.DocPartidas.Add(xdocPartidas);
                }
                contex.SaveChanges();
                List <int> idProdPersonalizado = new List <int>();
                idProdPersonalizado.Add(xdocPartidas.IDProd);
                List <ComplementoProductos> DatosProductosComplementarios = BuscarProductosComplementarios(idProdPersonalizado);
                if (xPedido.ComplementodeProducto != null)
                {
                    foreach (ComplementoProductos xComplemento in xPedido.ComplementodeProducto)
                    {
                        if (xComplemento.Seleccionado != DatosProductosComplementarios.Find(x => x.idComplemento == xComplemento.idComplemento).Seleccionado)
                        {
                            if (IDDocumento != null)
                            {
                                if (IDDocumento.Length > 0)
                                {
                                    docPPersonalizar = contex.docPartidasPersonalizars.Where(x => x.IDDoc == xID && x.IDProdPersonalizado == xPedido.ID && x.IDProdAgregado == xPedido.ComplementodeProducto.Find(y => y.idProducto == xPedido.ID && y.idComplemento == xComplemento.idComplemento).idComplemento).FirstOrDefault();
                                    if (docPPersonalizar == null)
                                    {
                                        docPPersonalizar = new DocPartidasPersonalizar();
                                    }
                                }
                            }
                            else
                            {
                                docPPersonalizar = new DocPartidasPersonalizar();
                            }
                            docPPersonalizar.IDDoc               = xID;
                            docPPersonalizar.NPartida            = xPartida;
                            docPPersonalizar.IDProdPersonalizado = xPedido.ID;
                            docPPersonalizar.IDProdAgregado      = xComplemento.idComplemento;
                            docPPersonalizar.Descripcion         = xComplemento.Descripcion;
                            docPPersonalizar.Cantidad            = xComplemento.cantidad * (xComplemento.Seleccionado ? 1 : -1);
                            docPPersonalizar.UnidadMedida        = xComplemento.UnidadMedida;
                            docPPersonalizar.Precio              = xComplemento.Precio;
                            docPPersonalizar.IVA = xComplemento.Precio * 0.16;
                            if (IDDocumento == null)
                            {
                                contex.docPartidasPersonalizars.Add(docPPersonalizar);
                            }
                            contex.SaveChanges();
                        }
                    }
                }
                xPartida++;
            }
            return("GUID:" + xID.ToString());
        }