Exemplo n.º 1
0
        public bool obtenerPedidoByPk()
        {
            PedidoDetalleModel aux;

            try
            {
                string sql = "SELECT * FROM VPEDIDOS WHERE PK=@PK AND BORRADO=0";
                db.PreparedSQL(sql);
                db.command.Parameters.AddWithValue("@PK", PK);
                ResultSet res = db.getTable();
                if (res.Next())
                {
                    PK                  = res.Get("PK");
                    PK_CLIENTE          = res.Get("PK_CLIENTE");
                    CLIENTE             = res.Get("CLIENTE");
                    TELEFONO_CLIENTE    = res.Get("TELEFONO");
                    PK_TIENDA           = res.Get("PK_TIENDA");
                    TIENDA              = res.Get("TIENDA");
                    DIRECCION_TIENDA    = res.Get("TIENDA_DIRECCION");
                    LATITUD_TIENDA      = res.Get("LATITUD_TIENDA");
                    LONGITUD_TIENDA     = res.Get("LONGITUD_TIENDA");
                    DIRECCION           = res.Get("DIRECCION");
                    LATITUD             = res.Get("LATITUD");
                    LONGITUD            = res.Get("LONGITUD");
                    PK_REPARTIDOR       = res.Get("PK_REPARTIDOR");
                    REPARTIDOR          = res.Get("REPARTIDOR");
                    PK_ESTATUS          = res.Get("PK_ESTATUS");
                    ESTATUS             = res.Get("ESTATUS");
                    SUBTOTAL            = res.GetDouble("SUBTOTAL");
                    ENVIO               = res.GetDouble("ENVIO");
                    COMISION_TARJETA    = res.GetDouble("COMISION_TARJETA");
                    TOTAL               = res.GetDouble("TOTAL");
                    METODO_PAGO         = res.Get("METODO_PAGO");
                    PAGO_EFECTIVO       = res.Get("PAGO_EFECTIVO");
                    FECHA_PAGO_EFECTIVO = res.Get("FECHA_PAGO_EFECTIVO");
                    IMAGEN_TIENDA       = res.Get("IMAGEN_TIENDA");
                    BORRADO             = res.Get("BORRADO");
                    FECHA_C             = res.Get("FECHA_C");
                    FECHA_M             = res.Get("FECHA_M");
                    FECHA_D             = res.Get("FECHA_D");
                    USUARIO_C           = res.Get("USUARIO_C");
                    USUARIO_M           = res.Get("USUARIO_M");
                    USUARIO_D           = res.Get("USUARIO_D");
                    aux                 = new PedidoDetalleModel();
                    aux.PK_PEDIDO       = PK;
                    LISTA               = aux.getByPkPedido();
                    if (METODO_PAGO.Equals("T"))
                    {
                        cargo           = new CargosModel();
                        cargo.PK_PEDIDO = PK;
                        cargo.obtenerCargoByPK();
                    }
                    return(true);
                }
            }
            catch { }

            return(false);
        }
Exemplo n.º 2
0
        public List <PedidosModel> obtenerPedidosByPkClienteAntesDeHoy()
        {
            List <PedidosModel> lista = new List <PedidosModel>();
            PedidosModel        pedido;
            PedidoDetalleModel  aux;

            try
            {
                string sql = "SELECT * FROM VPEDIDOS WHERE PK_CLIENTE=@PK_CLIENTE AND BORRADO=0 and convert(varchar(10),FECHA_C,120)<convert(varchar(10),getdate(),120) order by FECHA_C desc";
                db.PreparedSQL(sql);
                db.command.Parameters.AddWithValue("@PK_CLIENTE", PK_CLIENTE);
                ResultSet res = db.getTable();
                while (res.Next())
                {
                    pedido                     = new PedidosModel();
                    pedido.PK                  = res.Get("PK");
                    pedido.PK_CLIENTE          = res.Get("PK_CLIENTE");
                    pedido.CLIENTE             = res.Get("CLIENTE");
                    pedido.PK_TIENDA           = res.Get("PK_TIENDA");
                    pedido.TIENDA              = res.Get("TIENDA");
                    pedido.DIRECCION           = res.Get("DIRECCION");
                    pedido.LATITUD             = res.Get("LATITUD");
                    pedido.LONGITUD            = res.Get("LONGITUD");
                    pedido.PK_REPARTIDOR       = res.Get("PK_REPARTIDOR");
                    pedido.REPARTIDOR          = res.Get("REPARTIDOR");
                    pedido.PK_ESTATUS          = res.Get("PK_ESTATUS");
                    pedido.ESTATUS             = res.Get("ESTATUS");
                    pedido.SUBTOTAL            = res.GetDouble("SUBTOTAL");
                    pedido.ENVIO               = res.GetDouble("ENVIO");
                    pedido.COMISION_TARJETA    = res.GetDouble("COMISION_TARJETA");
                    pedido.TOTAL               = res.GetDouble("TOTAL");
                    pedido.METODO_PAGO         = res.Get("METODO_PAGO");
                    pedido.PAGO_EFECTIVO       = res.Get("PAGO_EFECTIVO");
                    pedido.FECHA_PAGO_EFECTIVO = res.Get("FECHA_PAGO_EFECTIVO");
                    pedido.IMAGEN_TIENDA       = res.Get("IMAGEN_TIENDA");
                    pedido.BORRADO             = res.Get("BORRADO");
                    pedido.FECHA_C             = res.Get("FECHA_C");
                    pedido.FECHA_M             = res.Get("FECHA_M");
                    pedido.FECHA_D             = res.Get("FECHA_D");
                    pedido.USUARIO_C           = res.Get("USUARIO_C");
                    pedido.USUARIO_M           = res.Get("USUARIO_M");
                    pedido.USUARIO_D           = res.Get("USUARIO_D");
                    try
                    {
                        pedido.FECHA_ENTREGA = res.GetDateTime("FECHA_ENTREGA").ToString("dddd dd ", CultureInfo.CreateSpecificCulture("es-MX")) + "de" + res.GetDateTime("FECHA_ENTREGA").ToString(" MMMM yyyy", CultureInfo.CreateSpecificCulture("es-MX"));
                        //pedido.FECHA_ENTREGA = res.GetDateTime("FECHA_ENTREGA").ToString("yyyy-MM-dd");
                    }
                    catch (Exception e) { }
                    aux           = new PedidoDetalleModel();
                    aux.PK_PEDIDO = pedido.PK;
                    pedido.LISTA  = aux.getByPkPedido();

                    lista.Add(pedido);
                }
            }
            catch { }

            return(lista);
        }
Exemplo n.º 3
0
        public List <PedidosModel> obtenerPedidosPasadosByPkTienda()
        {
            List <PedidosModel> lista = new List <PedidosModel>();
            PedidosModel        pedido;
            PedidoDetalleModel  aux;

            try
            {
                string sql = "SELECT * FROM VPEDIDOS WHERE PK_TIENDA=@PK_TIENDA AND PK_ESTATUS=5 AND BORRADO=0 AND FECHA_ENTREGA=@FECHA_ENTREGA ORDER BY FECHA_C DESC";
                db.PreparedSQL(sql);
                db.command.Parameters.AddWithValue("@PK_TIENDA", PK_TIENDA);
                db.command.Parameters.AddWithValue("@FECHA_ENTREGA", FECHA_ENTREGA);
                ResultSet res = db.getTable();
                while (res.Next())
                {
                    pedido                     = new PedidosModel();
                    pedido.PK                  = res.Get("PK");
                    pedido.PK_CLIENTE          = res.Get("PK_CLIENTE");
                    pedido.CLIENTE             = res.Get("CLIENTE");
                    pedido.PK_TIENDA           = res.Get("PK_TIENDA");
                    pedido.DIRECCION           = res.Get("DIRECCION");
                    pedido.LATITUD             = res.Get("LATITUD");
                    pedido.LONGITUD            = res.Get("LONGITUD");
                    pedido.PK_REPARTIDOR       = res.Get("PK_REPARTIDOR");
                    pedido.REPARTIDOR          = res.Get("REPARTIDOR");
                    pedido.PK_ESTATUS          = res.Get("PK_ESTATUS");
                    pedido.ESTATUS             = res.Get("ESTATUS");
                    pedido.SUBTOTAL            = res.GetDouble("SUBTOTAL");
                    pedido.ENVIO               = res.GetDouble("ENVIO");
                    pedido.COMISION_TARJETA    = res.GetDouble("COMISION_TARJETA");
                    pedido.TOTAL               = res.GetDouble("TOTAL");
                    pedido.METODO_PAGO         = res.Get("METODO_PAGO");
                    pedido.PAGO_EFECTIVO       = res.Get("PAGO_EFECTIVO");
                    pedido.FECHA_PAGO_EFECTIVO = res.Get("FECHA_PAGO_EFECTIVO");
                    pedido.TIENDA              = res.Get("TIENDA");
                    pedido.IMAGEN_TIENDA       = res.Get("IMAGEN_TIENDA");
                    pedido.BORRADO             = res.Get("BORRADO");
                    pedido.FECHA_C             = res.Get("FECHA_C");
                    pedido.FECHA_M             = res.Get("FECHA_M");
                    pedido.FECHA_D             = res.Get("FECHA_D");
                    pedido.USUARIO_C           = res.Get("USUARIO_C");
                    pedido.USUARIO_M           = res.Get("USUARIO_M");
                    pedido.USUARIO_D           = res.Get("USUARIO_D");
                    aux           = new PedidoDetalleModel();
                    aux.PK_PEDIDO = pedido.PK;
                    pedido.LISTA  = aux.getByPkPedido();

                    lista.Add(pedido);
                }
            }
            catch { }

            return(lista);
        }
Exemplo n.º 4
0
        public async Task <ActionResult> Post([FromBody] PedidosModel pedidom)
        {
            PedidosModel pedidoClone                      = new PedidosModel();
            string       listaProductosRecibidos          = "";
            string       listaProductosRecibidosCalculado = "";

            int      result = 0;
            string   msj = "¡Error al agregar pedido intente más tarde!", fecha_entrega = "";
            DateTime DAT;

            try
            {
                TiendasModel tienda1 = new TiendasModel();
                tienda1.PK = pedidom.PK_TIENDA;
                tienda1.obtenerTiendaPorPK();

                try
                { //Formato "martes 5 de mayo 2020"
                    DAT = DateTime.Parse(pedidom.FECHA_ENTREGA, CultureInfo.CreateSpecificCulture("es-MX"));
                }
                catch (Exception e) {
                    LogModel.registra("Error Agregar pedido al convertir fecha:", e.ToString() + " {FECHA_ENTREGA=" + pedidom.FECHA_ENTREGA + "}");
                    try//Formato "martes 5 de mayo 2020"
                    {
                        string[] fecha = pedidom.FECHA_ENTREGA.Split(" ");
                        DAT = DateTime.Parse(fecha[4] + "-" + fecha[3] + "-" + fecha[1], CultureInfo.CreateSpecificCulture("es-MX"));
                    }
                    catch (Exception e1) {//en caso de no poder convertir la fecha que recibo tengo que calcularla
                        LogModel.registra("Error Agregar pedido al convertir fecha:", e1.ToString());

                        if (pedidom.PK_COSTO_ENVIO.Equals("2"))//ESPRESS
                        {
                            DAT = DateTime.Now.AddDays(1);
                        }
                        else  //calculo entrega normal
                        {
                            DAT = obtenerFechaEntrega(tienda1, pedidom.PK_POLIGONO);
                        }
                    }
                }

                fecha_entrega         = DAT.ToString("dddd dd ", CultureInfo.CreateSpecificCulture("es-MX")) + "de" + DAT.ToString(" MMMM yyyy", CultureInfo.CreateSpecificCulture("es-MX"));
                pedidom.FECHA_ENTREGA = DAT.ToString("yyyy-MM-dd");

                //COPIA TODO EL CONTENIDO A UN NUEVO PEDIDO PARA VOLVER A CALCULAR PRECIOS DE PRODUCTO, SUBTOTAL, TOTAL DEL PEDIDO
                pedidoClone.PK_CLIENTE        = pedidom.PK_CLIENTE;
                pedidoClone.DIRECCION         = pedidom.DIRECCION;
                pedidoClone.LATITUD           = pedidom.LATITUD;
                pedidoClone.LONGITUD          = pedidom.LONGITUD;
                pedidoClone.PK_TIENDA         = pedidom.PK_TIENDA;
                pedidoClone.ENVIO             = pedidom.ENVIO;
                pedidoClone.SUBTOTAL          = pedidom.SUBTOTAL;
                pedidoClone.COMISION_TARJETA  = pedidom.COMISION_TARJETA;
                pedidoClone.TOTAL             = pedidom.TOTAL;
                pedidoClone.METODO_PAGO       = pedidom.METODO_PAGO;
                pedidoClone.PK_COSTO_ENVIO    = pedidom.PK_COSTO_ENVIO;
                pedidoClone.FECHA_ENTREGA     = pedidom.FECHA_ENTREGA;
                pedidoClone.CODIGO_DESCUENTO  = pedidom.CODIGO_DESCUENTO;
                pedidoClone.DESCUENTO         = pedidom.DESCUENTO;
                pedidoClone.SOURCE_ID         = pedidom.SOURCE_ID;
                pedidoClone.DEVICE_SESSION_ID = pedidom.DEVICE_SESSION_ID;
                pedidoClone.CVV2        = pedidom.CVV2;
                pedidoClone.COSTUMER_ID = pedidom.COSTUMER_ID;
                pedidoClone.LISTA       = new List <PedidoDetalleModel>();

                if (pedidom.LISTA != null)
                {
                    double             Total = 0;
                    PedidoDetalleModel aux;
                    ProductosModel     producto = new ProductosModel();
                    foreach (PedidoDetalleModel detalle in pedidom.LISTA)
                    {
                        producto.PK = detalle.PK_PRODUCTO;

                        aux             = new PedidoDetalleModel();
                        aux.PK          = detalle.PK;
                        aux.PK_PEDIDO   = detalle.PK_PEDIDO;
                        aux.PK_PRODUCTO = detalle.PK_PRODUCTO;
                        aux.PRODUCTO    = detalle.PRODUCTO;
                        aux.DESCRIPCION = detalle.DESCRIPCION;
                        aux.TIENDA      = detalle.TIENDA;
                        if (producto.getPrecioByPK())
                        {
                            try
                            {
                                aux.PRECIO = double.Parse(producto.PRECIO);
                            }
                            catch (Exception e) {
                                LogModel.registra("Agregar pedido error al obtener precio de producto", e.ToString());
                                aux.PRECIO = 0;
                            }
                        }
                        else
                        {
                            LogModel.registra("Precio del producto no encotrado", "PK_PRODUCTO:" + detalle.PK_PRODUCTO + ", PRECIO:" + detalle.PRECIO);
                            aux.PRECIO = detalle.PRECIO;
                        }
                        aux.CANTIDAD  = detalle.CANTIDAD;
                        aux.DETALLES  = detalle.DETALLES;
                        aux.IMAGEN    = detalle.IMAGEN;
                        aux.BORRADO   = detalle.BORRADO;
                        aux.FECHA_C   = detalle.FECHA_C;
                        aux.FECHA_M   = detalle.FECHA_M;
                        aux.FECHA_D   = detalle.FECHA_D;
                        aux.USUARIO_C = detalle.USUARIO_C;
                        aux.USUARIO_M = detalle.USUARIO_M;
                        aux.USUARIO_D = detalle.USUARIO_D;

                        Total += (aux.CANTIDAD * aux.PRECIO);

                        pedidoClone.LISTA.Add(aux);

                        listaProductosRecibidos += "{PK_PRODUCTO:" + detalle.PK_PRODUCTO
                                                   + ",PRECIO:" + detalle.PRECIO
                                                   + ",CANTIDAD:" + detalle.CANTIDAD
                                                   + ",DETALLES:" + detalle.DETALLES
                                                   + "},";

                        listaProductosRecibidosCalculado += "{PK_PRODUCTO:" + aux.PK_PRODUCTO
                                                            + ",PRECIO:" + aux.PRECIO
                                                            + ",CANTIDAD:" + aux.CANTIDAD
                                                            + ",DETALLES:" + aux.DETALLES
                                                            + "},";
                    }
                    pedidoClone.SUBTOTAL = Total;
                    CostosEnviosModel ce = new CostosEnviosModel();
                    ce.PK = pedidoClone.PK_COSTO_ENVIO;

                    if (ce.getCostoByPk())
                    {
                        Total += ((ce.COSTO) - (ce.COSTO * pedidoClone.DESCUENTO / 100));
                    }
                    else
                    {
                        Total += ce.COSTO;
                    }

                    double factor           = double.Parse(VariablesModel.getVariableValue("FACTOR"));
                    double suma             = double.Parse(VariablesModel.getVariableValue("SUMA"));
                    double COMISION_TARJETA = 0;

                    if (factor > 0)
                    {
                        COMISION_TARJETA = Total * factor;
                    }
                    COMISION_TARJETA            += suma;
                    pedidoClone.COMISION_TARJETA = COMISION_TARJETA;
                    pedidoClone.TOTAL            = Total + COMISION_TARJETA;
                }


                if (pedidoClone.agregar())
                {
                    try {
                        PedidosRecibidosModel prm = new PedidosRecibidosModel();
                        prm.PK_PEDIDO = long.Parse(pedidoClone.PK);
                        prm.RECIBIDO  = "{PK:" + pedidom.PK + ",PK_CLIENTE:" + pedidom.PK_CLIENTE
                                        + ",DIRECCION:\"" + pedidom.DIRECCION + "\",LATITUD:\"" + pedidom.LATITUD
                                        + "\",LONGITUD:\"" + pedidom.LONGITUD + "\",SUBTOTAL:" + pedidom.SUBTOTAL
                                        + ",ENVIO:" + pedidom.ENVIO + ",COMISION_TARJETA:" + pedidom.COMISION_TARJETA
                                        + ",TOTAL:" + pedidom.TOTAL + ",METODO_PAGO:\"" + pedidom.METODO_PAGO
                                        + "\",PK_TIENDA:" + pedidom.PK_TIENDA + ",PK_COSTO_ENVIO:" + pedidom.PK_COSTO_ENVIO
                                        + ",CODIGO_DESCUENTO:" + pedidom.CODIGO_DESCUENTO + ",DESCUENTO:" + pedidom.DESCUENTO
                                        + ",LISTA:[" + listaProductosRecibidos + "]"
                                        + "}";
                        prm.CALCULADO = "{PK:" + pedidoClone.PK + ",PK_CLIENTE:" + pedidoClone.PK_CLIENTE
                                        + ",DIRECCION:\"" + pedidoClone.DIRECCION + "\",LATITUD:\"" + pedidoClone.LATITUD
                                        + "\",LONGITUD:\"" + pedidoClone.LONGITUD + "\",SUBTOTAL:" + pedidoClone.SUBTOTAL
                                        + ",ENVIO:" + pedidoClone.ENVIO + ",COMISION_TARJETA:" + pedidoClone.COMISION_TARJETA
                                        + ",TOTAL:" + pedidoClone.TOTAL + ",METODO_PAGO:\"" + pedidoClone.METODO_PAGO
                                        + "\",PK_TIENDA:" + pedidoClone.PK_TIENDA + ",PK_COSTO_ENVIO:" + pedidoClone.PK_COSTO_ENVIO
                                        + ",CODIGO_DESCUENTO:" + pedidoClone.CODIGO_DESCUENTO + ",DESCUENTO:" + pedidoClone.DESCUENTO
                                        + ",LISTA:[" + listaProductosRecibidos + "]"
                                        + "}";
                        prm.agregar();
                    } catch (Exception exc) {
                        LogModel.registra("Error al registrar PedidosRecibidos AgregarPedidoController", exc.ToString());
                    }

                    try {
                        DireccionesClientesModel dir = new DireccionesClientesModel();
                        dir.LATITUD    = pedidoClone.LATITUD;
                        dir.LONGITUD   = pedidoClone.LONGITUD;
                        dir.PK_CLIENTE = pedidoClone.PK_CLIENTE;
                        dir.DIRECCION  = pedidoClone.DIRECCION;

                        if (dir.existeDireccion())
                        {
                            dir.CONTADOR++;
                            dir.actualizaContador();
                        }
                        else
                        {
                            dir.CONTADOR = 1;
                            dir.creaDireccion();
                        }
                    } catch (Exception e) {
                        LogModel.registra("Error al guardar dirección AgregarPedidoController", e.ToString());
                    }

                    if (!pedidoClone.SOURCE_ID.Equals("EFECTIVO") && !pedidoClone.SOURCE_ID.Equals("TERMINAL"))
                    {
                        if (pedidoClone.pagar())
                        {
                            try
                            {
                                NotificacionesModel notifica = new NotificacionesModel();
                                TiendasModel        tienda   = new TiendasModel();
                                tienda.PK = pedidoClone.PK_TIENDA;
                                ClientesModel cliente = new ClientesModel();
                                cliente.PK = pedidoClone.PK_CLIENTE;

                                if (tienda.obtenerTiendaPorPK() && cliente.getTokenClienteByPk())
                                {
                                    notifica.TITLE   = "Nuevo pedido";
                                    notifica.MESSAGE = cliente.NOMBRE + " ha registrado un nuevo pedido: " + pedidoClone.PK;
                                    notifica.TOKENS.Add(tienda.TOKEN);
                                    await notifica.sendNotificationAsync();
                                }
                            }
                            catch (Exception e)
                            {
                                LogModel.registra("Error al enviar notificación", e.ToString());
                            }

                            result = 1;
                            msj    = "¡Pedido agregado!";
                        }
                        else
                        {
                            result = 0;
                            if (!string.IsNullOrEmpty(pedidoClone.ERROR))
                            {
                                msj = pedidoClone.ERROR;
                            }
                            else
                            {
                                msj = "¡Ocurriò un error al procesar pago intente más tarde!";
                            }
                        }
                    }
                    else
                    {
                        try
                        {
                            NotificacionesModel notifica = new NotificacionesModel();
                            TiendasModel        tienda   = new TiendasModel();
                            tienda.PK = pedidoClone.PK_TIENDA;
                            ClientesModel cliente = new ClientesModel();
                            cliente.PK = pedidoClone.PK_CLIENTE;

                            if (tienda.obtenerTiendaPorPK() && cliente.getTokenClienteByPk())
                            {
                                notifica.TITLE   = "Nuevo pedido";
                                notifica.MESSAGE = cliente.NOMBRE + " ha registrado un nuevo pedido: " + pedidoClone.PK;
                                notifica.TOKENS.Add(tienda.TOKEN);
                                await notifica.sendNotificationAsync();
                            }
                        }
                        catch (Exception e)
                        {
                            LogModel.registra("Error al enviar notificación", e.ToString());
                        }

                        result = 1;
                        msj    = "¡Pedido agregado!";
                    }
                }
            }
            catch (Exception e)
            {
                result = 0;
                msj    = "¡Error al agregar pedido intente más tarde!";
                LogModel.registra("Error al agregar pedido", e.ToString());
            }

            return(Ok(new
            {
                resultado = result,
                mensaje = msj,
                pedido = pedidoClone,
                entrega = fecha_entrega
            }));
        }