コード例 #1
0
        public ResultadoTrama EnvioTotales(string[] data)
        {
            try
            {
                //desglosar mensaje
                string _FechaActual = DateTime.Now.ToString("yyyy-MM-dd H:mm:ss");
                string cara = data[1];
                decimal galon_m1 = (Convert.ToDecimal(data[2])/1000);
                int dinero_m1 = Convert.ToInt32(data[3]);
                int ppu_m1 = Convert.ToInt32(data[4]);
                decimal galon_m2 = (Convert.ToDecimal(data[5])/1000);
                int dinero_m2 = Convert.ToInt32(data[6]);
                int ppu_m2 = Convert.ToInt32(data[7]);
                decimal galon_m3 = (Convert.ToDecimal(data[8])/1000);
                int dinero_m3 = Convert.ToInt32(data[9]);
                int ppu_m3 = Convert.ToInt32(data[10]);
                string idProducto;
                string usuarioIslero;
                string idXbeeDispensador;
                DataTable dtPosicion;
                DataTable dtVentasTotales;
                bool RealizoVentaTotal = false;
                string ventaGalones = "";
                string ventaDinero = "";
                bool esCredito = false;
                int ImprimeTiquete = 0;

                string serialFidelizado = "";
                string serialCredito = "";
                int descuentoCredito = 0;
                ////Capturo si es venta fidelizado
                //if (instancia.ListaFidelizadosCreditosPendientes.Count > 0)
                //{
                //    FidelizadoCreditoPendiente objFidelizado = instancia.ListaFidelizadosCreditosPendientes.Find(item => item.cara == cara && item.tipoSolicitud == ETipoSolicitudSerial.Fidelizado);
                //    if (objFidelizado != null)
                //    {
                //        serialFidelizado = objFidelizado.serial;
                //        instancia.ListaFidelizadosCreditosPendientes.Remove(objFidelizado);
                //    }
                //    FidelizadoCreditoPendiente objCredito = instancia.ListaFidelizadosCreditosPendientes.Find(item => item.cara == cara && item.tipoSolicitud == ETipoSolicitudSerial.Credito);
                //    if (objCredito != null)
                //    {
                //        esCredito = true;
                //        serialCredito = objCredito.serial;
                //        descuentoCredito = objCredito.descuento;
                //        instancia.ListaFidelizadosCreditosPendientes.Remove(objCredito);
                //    }
                //}

                //obtengo el id de la posición por la cara, y traigo el idProducto tambien
                //Obtengo el ultimo registro de ventas en la cara
                using (ModeloPOS modPOS = new ModeloPOS())
                {
                    dtPosicion = modPOS.ObtenerPosicionesPorCara(cara);

                    if (dtPosicion != null && dtPosicion.Rows.Count > 0)
                    {
                        idProducto = dtPosicion.Rows[0]["idProducto"].ToString();
                        idXbeeDispensador = dtPosicion.Rows[0]["idXbee"].ToString();
                        var DatosTurno = modPOS.ObtenerTurnoPorPosicionyEstado(dtPosicion.Rows[0]["idPosicion"].ToString());
                        if (DatosTurno != null && DatosTurno.Rows.Count>0)
                        {
                            usuarioIslero = DatosTurno.Rows[0]["idUsuario"].ToString();
                        }
                        else
                        {
                            return new ResultadoTrama(false, null, "No se pudo obtener los datos de un turno abierto para esta cara");
                        }
                    }
                    else
                    {
                        return new ResultadoTrama(false, null, "No se pudo obtener el id del producto de la posición");
                    }
                    dtVentasTotales = modPOS.ObtenerTotalesVentaPorCara(cara);

                    if (dtVentasTotales == null) return new ResultadoTrama(false, null, "Hubo error obteniendo los valores de las ventas totales");
                    if (dtVentasTotales.Rows.Count > 0)
                    {
                        //detectamos si en alguna de las mangueras hubo cambios para insertar en la tabla de ventas
                        if (Convert.ToDecimal(dtVentasTotales.Rows[0]["g1"]) != galon_m1)
                        {
                            RealizoVentaTotal = true;
                            decimal difGalon = (galon_m1 - Convert.ToDecimal(dtVentasTotales.Rows[0]["g1"]));
                            int difDinero = (dinero_m1 - Convert.ToInt32(dtVentasTotales.Rows[0]["p1"]));
                            ventaGalones = difGalon.ToString();
                            ventaDinero = difDinero.ToString();
                            using (ModeloDispensador modDIS = new ModeloDispensador())
                            {
                                DataTable dtPosicionProductoCorrecto;
                                dtPosicionProductoCorrecto = modPOS.ObtenerPosicionesPorCarayManguera(cara,"1");
                                if (dtPosicionProductoCorrecto.Rows.Count == 0) return new ResultadoTrama(false, null, "No se encontro producto en la cara " + cara + " manguera 1");
                                ImprimeTiquete = modDIS.GuardaVenta(dtPosicionProductoCorrecto.Rows[0]["idProducto"].ToString(), cara, "1", difDinero.ToString(), difGalon.ToString(), ppu_m1.ToString(), _FechaActual, usuarioIslero, idXbeeDispensador, serialFidelizado,serialCredito,descuentoCredito);
                            }
                        }
                        if (Convert.ToDecimal(dtVentasTotales.Rows[0]["g2"]) != galon_m2)
                        {
                            DataTable dtPosicionProductoCorrecto;
                            dtPosicionProductoCorrecto = modPOS.ObtenerPosicionesPorCarayManguera(cara, "2");
                            if (dtPosicionProductoCorrecto.Rows.Count == 0) return new ResultadoTrama(false, null, "No se encontro producto en la cara " + cara + " manguera 2");
                            RealizoVentaTotal = true;
                            decimal difGalon = (galon_m2 - Convert.ToDecimal(dtVentasTotales.Rows[0]["g2"]));
                            int difDinero = (dinero_m2 - Convert.ToInt32(dtVentasTotales.Rows[0]["p2"]));
                            ventaGalones = difGalon.ToString();
                            ventaDinero = difDinero.ToString();
                            using (ModeloDispensador modDIS = new ModeloDispensador())
                            {
                                ImprimeTiquete = modDIS.GuardaVenta(dtPosicionProductoCorrecto.Rows[0]["idProducto"].ToString(), cara, "2", difDinero.ToString(), difGalon.ToString(), ppu_m2.ToString(), _FechaActual, usuarioIslero, idXbeeDispensador, serialFidelizado, serialCredito, descuentoCredito);
                            }
                        }
                        if (Convert.ToDecimal(dtVentasTotales.Rows[0]["g3"]) != galon_m3)
                        {
                            DataTable dtPosicionProductoCorrecto;
                            dtPosicionProductoCorrecto = modPOS.ObtenerPosicionesPorCarayManguera(cara, "3");
                            if (dtPosicionProductoCorrecto.Rows.Count == 0) return new ResultadoTrama(false, null, "No se encontro producto en la cara " + cara + " manguera 3");
                            RealizoVentaTotal = true;
                            decimal difGalon = (galon_m3 - Convert.ToDecimal(dtVentasTotales.Rows[0]["g3"]));
                            int difDinero = (dinero_m3 - Convert.ToInt32(dtVentasTotales.Rows[0]["p3"]));
                            ventaGalones = difGalon.ToString();
                            ventaDinero = difDinero.ToString();
                            using (ModeloDispensador modDIS = new ModeloDispensador())
                            {
                                ImprimeTiquete = modDIS.GuardaVenta(dtPosicionProductoCorrecto.Rows[0]["idProducto"].ToString(), cara, "3", difDinero.ToString(), difGalon.ToString(), ppu_m3.ToString(), _FechaActual, usuarioIslero, idXbeeDispensador, serialFidelizado, serialCredito, descuentoCredito);
                            }
                        }
                    }
                    if (RealizoVentaTotal)
                    {
                        using (ModeloDispensador modDIS = new ModeloDispensador())
                        {
                            //Por ultimo guardamos en ventas totales
                            var resultGuardarTotales = modDIS.GuardaVentasTotales(data, _FechaActual, idXbeeDispensador);
                        }
                    }
                    else
                    {
                        return new ResultadoTrama(false, null, "No se guardo venta por que no se detectaron diferencias en galones ni dinero");
                    }
                }

                return new ResultadoTrama(true, null,"",_ventaGalones:ventaGalones,_ventaDinero:ventaDinero,_esCredito: esCredito,_imprimeTiquete:ImprimeTiquete);
            }
            catch (Exception e)
            {
                LocalLogManager.EscribeLog(e.Message, LocalLogManager.TipoImagen.TipoError);
                return new ResultadoTrama(false, null, e.Message);
            }
        }
コード例 #2
0
ファイル: TramasPOS.cs プロジェクト: kevindrums92/softfuel
        public ResultadoTrama AbrirTurno(string[] data)
        {
            try
            {
                List<string> mensajeTrama = new List<string>();
                string _FechaActual = DateTime.Now.ToString("yyyy-MM-dd H:mm:ss");
                string Identificacion = data[1];
                string cara = data[2];
                string NomApeUsuario = "";
                bool encontroUsuario = false;
                DataTable dtUsuario;
                int idXbee = 0;
                using (Generales modGenerales = new Generales())
                {
                    //Buscar el usuario y validar que sea islero.
                    dtUsuario = modGenerales.ObtenerUsuario(Identificacion);
                    if (dtUsuario != null && dtUsuario.Rows.Count > 0)
                    {
                        if (dtUsuario.Rows[0]["tipoPerfil"].ToString().Trim() == "3")
                        {
                            encontroUsuario = true;
                        }
                    }
                    if (encontroUsuario == true)
                    {
                        NomApeUsuario = dtUsuario.Rows[0]["nomUsuario"].ToString().Trim() + " " + dtUsuario.Rows[0]["apeUsuario"].ToString().Trim();
                        using (ModeloPOS modPOS = new ModeloPOS())
                        {
                            DataTable dtPosicion = modPOS.ObtenerPosicionesPorCara(cara);
                            idXbee = (int)dtPosicion.Rows[0]["idXbee"];

                            if (dtPosicion != null && dtPosicion.Rows.Count > 0)
                            {
                                //Valido si ya hay turno abierto en la cara
                                var DatosTurno = modPOS.ObtenerTurnoPorPosicionyEstado(dtPosicion.Rows[0]["idPosicion"].ToString());
                                if (DatosTurno == null)
                                {
                                    return new ResultadoTrama(false, null, "Error Sql al momento de obbtener los datos del turno");
                                }
                                if (DatosTurno.Rows.Count == 0)
                                {
                                    DataTable dtVentas = modPOS.ObtenerTotalesVentaPorCara(cara);
                                    if (dtVentas != null && dtVentas.Rows.Count > 0)
                                    {
                                        var resultGuardar = modPOS.GuardarAperturaTurno(Identificacion, dtPosicion.Rows[0]["idPosicion"].ToString(), _FechaActual, (int)(dtVentas.Rows[0][0]));
                                        if (resultGuardar >0)
                                        {
                                            mensajeTrama = ArmarMensajeAperturaTurno(resultGuardar.ToString());
                                        }
                                        else
                                        {
                                            return new ResultadoTrama(false, null, "No se pudo guardar la apertura del turno");
                                        }
                                    }
                                    else
                                    {
                                        return new ResultadoTrama(false, null, "No se encontraron totales de ventas para la cara " + cara + ".");
                                    }
                                }
                                else
                                {
                                    return new ResultadoTrama(true, AsistenteMensajes.GenerarMensajeAlerta(new string[] { "Ya se abrio turno","en la cara: " + cara}), "Usuario no existe o incorrecto para consignación en efectivo");
                                }
                            }
                            else
                            {
                                return new ResultadoTrama(false, null, "No se pudo obtener la posición.");
                            }
                        }
                    }
                    else
                    {
                        //Devuelvo trama que el usuario no es islero
                        return new ResultadoTrama(true, AsistenteMensajes.GenerarMensajeAlerta(new string[] { "Usuario no existe o incorrecto" }), "Usuario no existe o incorrecto para apertura de turno");
                    }
                }
                return new ResultadoTrama(true, UtilidadesTramas.ConvertirListadoStringaByte(mensajeTrama), "",idXbee);
            }
            catch (Exception e)
            {
                LocalLogManager.EscribeLog(e.Message, LocalLogManager.TipoImagen.TipoError);
                return new ResultadoTrama(false, null, e.Message);
            }
        }