예제 #1
0
        internal IEnumerable <Models.Mesa> GetMesas(short emp_codi, long ptv_cont, long ptv_nmei, long ptv_nmef)
        {
            try
            {
                List <SQLParams> sqlPrms = new List <SQLParams>()
                {
                    new SQLParams("emp_codi", emp_codi),
                    new SQLParams("pvt_cont", ptv_cont),
                };

                StringBuilder sql = new StringBuilder();
                sql.AppendLine(" SELECT DISTINCT sp_mesas.mes_nume FROM sp_turno,sp_tepos,sp_ptvta,sp_mesas ");
                sql.AppendLine(" WHERE sp_ptvta.emp_codi = sp_tepos.emp_codi                                ");
                sql.AppendLine(" AND sp_ptvta.ptv_cont = sp_tepos.ptv_cont                                  ");
                sql.AppendLine(" AND sp_turno.emp_codi = sp_tepos.emp_codi                                  ");
                sql.AppendLine(" AND sp_turno.tep_CONT = sp_tepos.tep_cont                                  ");
                sql.AppendLine(" AND sp_turno.emp_codi = sp_mesas.emp_codi                                  ");
                sql.AppendLine(" AND sp_turno.tur_cont = sp_mesas.tur_cont                                  ");
                sql.AppendLine(" AND sp_ptvta.emp_codi = @emp_codi AND sp_ptvta.ptv_cont = @pvt_cont        ");

                IEnumerable <Models.sp_mesas> data = new DbConnection().GetList <Models.sp_mesas>(sql.ToString(), sqlPrms);
                //consultamos las mesas ocupadas
                List <Models.Mesa> mesas = new List <Models.Mesa>();
                if (ptv_nmef > 0)
                {
                    for (long i = ptv_nmei; i <= ptv_nmef; i++)
                    {
                        if (data == null || !data.Any(o => o.mes_nume == i))
                        {
                            mesas.Add(new Models.Mesa()
                            {
                                mes_nume = i
                            });
                        }
                    }
                }
                return(mesas);
            }
            catch (Exception ex)
            {
                ExceptionManager.Throw(this.GetType().ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, ex);
                return(null);
            }
        }
예제 #2
0
        internal IEnumerable <Models.PTVTA> GetPtvta(short emp_codi)
        {
            try
            {
                List <SQLParams> sqlPrms = new List <SQLParams>()
                {
                    new SQLParams("emp_codi", emp_codi),
                    new SQLParams("ptv_esta", "A"),
                };
                StringBuilder sql = new StringBuilder();
                sql.AppendLine("SELECT * FROM sp_ptvta WHERE emp_codi = @emp_codi AND ptv_esta = @ptv_esta AND ptv_nmef > 0");
                //string sql = "SELECT * FROM sp_ptvta WHERE emp_codi = @emp_codi AND ptv_esta = @ptv_esta AND ptv_nmef > 0"; //DBHelper.SelectQueryString<Models.PTVTA>(sqlPrms);

                //sql.AppendLine(" SELECT pt.* FROM sp_ptvta pt                                                      ");
                //sql.AppendLine(" INNER JOIN PV_MESSL me ON pt.emp_codi = me.EMP_CODI AND pt.ptv_cont = me.BOD_CONT ");
                //sql.AppendLine(" WHERE pt.emp_codi = @emp_codi AND pt.ptv_esta = @ptv_esta AND pt.ptv_nmef > 0     ");

                IEnumerable <Models.PTVTA> data = new DbConnection().GetList <Models.PTVTA>(sql.ToString(), sqlPrms);
                //consultamos las mesas ocupadas
                if (data != null && data.Any())
                {
                    foreach (Models.PTVTA ptv in data)
                    {
                        //buscamos que tenga turno abierto
                        sqlPrms.Clear();

                        sqlPrms.Add(new SQLParams("emp_codi", emp_codi));
                        sqlPrms.Add(new SQLParams("ptv_cont", ptv.ptv_cont));
                        sqlPrms.Add(new SQLParams("tur_esta", "A"));

                        sql.Clear();

                        sql.AppendLine(" SELECT sp_ptvta.ptv_cont FROM sp_turno,sp_tepos,sp_ptvta                                        ");
                        sql.AppendLine(" WHERE sp_ptvta.emp_codi = sp_tepos.emp_codi                                                     ");
                        sql.AppendLine(" and sp_ptvta.ptv_cont = sp_tepos.ptv_cont                                                       ");
                        sql.AppendLine(" and sp_turno.emp_codi = sp_tepos.emp_codi                                                       ");
                        sql.AppendLine(" and sp_turno.tep_cont = sp_tepos.tep_cont                                                       ");
                        sql.AppendLine(" and sp_ptvta.emp_codi = @emp_codi and sp_ptvta.ptv_cont = @ptv_cont AND sp_turno.tur_esta = @tur_esta ");

                        IEnumerable <Models.sp_turno> sp_turno = new DbConnection().GetList <Models.sp_turno>(sql.ToString(), sqlPrms);
                        if (sp_turno == null || !sp_turno.Any())
                        {
                            ptv.numMesas = 0;
                            continue;
                        }

                        //mesas parametrizadas
                        sqlPrms.Clear();
                        sqlPrms.Add(new SQLParams("emp_codi", emp_codi));
                        sqlPrms.Add(new SQLParams("ptv_cont", ptv.ptv_cont));
                        sql.Clear();

                        sql.AppendLine(" SELECT * FROM PV_MESSL ME                              ");
                        sql.AppendLine(" INNER JOIN GN_ITEMS AS IT ON IT.ITE_CONT = ME.ITE_CONT ");
                        sql.AppendLine(" WHERE EMP_CODI = @emp_codi AND BOD_CONT = @ptv_cont    ");


                        List <Models.pv_messl> pv_messl = new DbConnection().GetList <Models.pv_messl>(sql.ToString(), sqlPrms);
                        if (pv_messl == null || !pv_messl.Any())
                        {
                            //si no se encuentran mesas parametrizadas entonces no se debe mostrar el punto de venta
                            ptv.numMesas = 0;
                            continue;
                        }

                        //buscamos las mesas no disponibles parametrizadas en el web.config
                        string ItemsMesasNoDisponibles = System.Configuration.ConfigurationManager
                                                         .AppSettings.Get("ItemsMesasNoDisponibles");

                        if (ItemsMesasNoDisponibles != null && ItemsMesasNoDisponibles.Trim().Length > 0)
                        {
                            string[] ItemsNoDisponibles = ItemsMesasNoDisponibles.Split(';')
                                                          .Select(o => o.Trim()).ToArray();
                            foreach (string mesa in ItemsNoDisponibles)
                            {
                                pv_messl.RemoveAll(o => o.ITE_CODI.Equals(mesa));
                            }

                            if (pv_messl == null || !pv_messl.Any())
                            {
                                ptv.numMesas = 0;
                                continue;
                            }
                        }

                        sqlPrms.Clear();
                        //Mesas Ocupadas
                        sqlPrms.Add(new SQLParams("emp_codi", emp_codi));
                        sqlPrms.Add(new SQLParams("ptv_cont", ptv.ptv_cont));
                        sql.Clear();

                        sql.AppendLine(" SELECT DISTINCT sp_mesas.mes_nume FROM sp_turno,sp_tepos,sp_ptvta,sp_mesas ");
                        sql.AppendLine(" WHERE sp_ptvta.emp_codi = sp_tepos.emp_codi                                ");
                        sql.AppendLine(" and sp_ptvta.ptv_cont = sp_tepos.ptv_cont                                  ");
                        sql.AppendLine(" and sp_turno.emp_codi = sp_tepos.emp_codi                                  ");
                        sql.AppendLine(" and sp_turno.tep_cont = sp_tepos.tep_cont                                  ");
                        sql.AppendLine(" and sp_turno.emp_codi = sp_mesas.emp_codi                                  ");
                        sql.AppendLine(" and sp_turno.tur_cont = sp_mesas.tur_cont                                  ");
                        sql.AppendLine(" and sp_ptvta.emp_codi = @emp_codi and sp_ptvta.ptv_cont = @ptv_cont        ");

                        IEnumerable <Models.sp_mesas> sp_mesas = new DbConnection().GetList <Models.sp_mesas>(sql.ToString(), sqlPrms);
                        if (sp_mesas != null && sp_mesas.Any())
                        {
                            //if (ptv.ptv_nmef > 0)
                            //    ptv.numMesas = Math.Abs(ptv.ptv_nmef - ptv.ptv_nmei) + 1 - sp_mesas.Count();
                            //else
                            //    ptv.numMesas = Math.Abs(ptv.ptv_nmef - ptv.ptv_nmei) + 1;
                            ptv.numMesas = pv_messl.Count - sp_mesas.Count();
                        }
                        else
                        {
                            //if (ptv.ptv_nmef > 0)
                            //    ptv.numMesas = Math.Abs(ptv.ptv_nmef - ptv.ptv_nmei) + 1;
                            //else
                            //    ptv.numMesas = 0;
                            ptv.numMesas = pv_messl.Count;
                        }
                        ptv.totaMesas = pv_messl.Count;
                    }


                    //foreach (Models.PTVTA ptv in data)
                    //{
                    //    sqlPrms.Clear();
                    //    sqlPrms.Add(new SQLParams("emp_codi", emp_codi));
                    //    sqlPrms.Add(new SQLParams("ptv_cont", ptv.ptv_cont));

                    //    StringBuilder sqlx = new StringBuilder();

                    //    sqlx.AppendLine(" SELECT DISTINCT sp_mesas.mes_nume FROM sp_turno,sp_tepos,sp_ptvta,sp_mesas ");
                    //    sqlx.AppendLine(" WHERE sp_ptvta.emp_codi = sp_tepos.emp_codi                                ");
                    //    sqlx.AppendLine(" and sp_ptvta.ptv_cont = sp_tepos.ptv_cont                                  ");
                    //    sqlx.AppendLine(" and sp_turno.emp_codi = sp_tepos.emp_codi                                  ");
                    //    sqlx.AppendLine(" and sp_turno.tep_cont = sp_tepos.tep_cont                                  ");
                    //    sqlx.AppendLine(" and sp_turno.emp_codi = sp_mesas.emp_codi                                  ");
                    //    sqlx.AppendLine(" and sp_turno.tur_cont = sp_mesas.tur_cont                                  ");
                    //    sqlx.AppendLine(" and sp_ptvta.emp_codi = @emp_codi and sp_ptvta.ptv_cont = @ptv_cont        ");

                    //    IEnumerable<Models.sp_mesas> sp_mesas = new DbConnection().GetList<Models.sp_mesas>(sqlx.ToString(), sqlPrms);
                    //    if (sp_mesas != null && sp_mesas.Any())
                    //    {
                    //        if (ptv.ptv_nmef > 0)
                    //            ptv.numMesas = Math.Abs(ptv.ptv_nmef - ptv.ptv_nmei) + 1 - sp_mesas.Count();
                    //        else
                    //            ptv.numMesas = Math.Abs(ptv.ptv_nmef - ptv.ptv_nmei) + 1;
                    //    }
                    //    else
                    //    {
                    //        if (ptv.ptv_nmef > 0)
                    //            ptv.numMesas = Math.Abs(ptv.ptv_nmef - ptv.ptv_nmei) + 1;
                    //        else
                    //            ptv.numMesas = 0;
                    //    }
                    //    ptv.totaMesas = Math.Abs(ptv.ptv_nmef - ptv.ptv_nmei) + 1;
                    //}
                }



                return(data == null ? null : data.Where(o => o.numMesas > 0).ToList());
            }
            catch (Exception ex)
            {
                ExceptionManager.Throw(this.GetType().ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, ex);
                return(null);
            }
        }