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); } }
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); } }