C sharp - Ayuda sobre algo de lógica.

 
Vista:

Ayuda sobre algo de lógica.

Publicado por Tulio (6 intervenciones) el 02/04/2009 11:39:40
Hola, pues ahora si que ya me atore con mi programa, el caso es el siguiente.

Tengo el clasico programa de grabar, eliminar, consultar y editar, todo eso lo tengo en una bd con sql.

Mis tablas son: Clientes, Proveedores, Articulos, Compras y Ventas.

El chiste del programa es generar:

Clientes (que contengan su id, nombre, telefono y saldo).
Proveedores (conteniendo id, razon social, telefono y saldo).
Articulos (codigo de articulo, descripcion, costo y existencia).

Sobre las conexiones, el Form y el codigo está bien, si me cumplen los botones para cada accion (grabar, eliminar, etc.).

Ahora, en el Form de Ventas es donde se me comienza a complicar la existencia.

La tabla la llevo asi:

Ventas (Folio, Id (cliente), codigo de articulo, fecha y cantidad).
(no se si aqui poner tambien id del cleinte - nombre y codigo de articulo - descripcion).

Y en el diseño del Form, para realizar la venta, le hize algo asi:

Folio ___

Id del cliente ___
(entre estos 2 le puse un boton de consulta a la tabla cleintes)
Nombre del cliente ___

Codigo de articulo ___
(entre estos 2 le puse boton de consulta tabla articulos)
Descripcion de articulo ___

Fecha ___

Cantidad ____
(al final le puse un boton de insert)


Pues bueno, en lo que se me atora es cuando realize la compra, hacer las condiciones para que, al momento de hacer la compra, verifique si tengo el saldo suficiente para que se realize el pedido y si se tiene el dinero suficiente, restarle el saldo al Cliente y que baje la existencia (el stock) de los Articulos, las unidades vendidas.

Cualquier sugerencia o ejemplo pequeño por el cual me pueda guiar, se los agradeceria mucho.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roger

RE:Ayuda sobre algo de lógica.

Publicado por roger (160 intervenciones) el 02/04/2009 14:54:18
pues lo que debes hacer es basado en la cantidad de articulos, traes el precio de un solo articulo y multiplicas por la cantidad, eso te da el valor de la compra, con ese valor consultas en la tabla de clientes si el cliente tiene saldo suficiente, sino se cancela la operacion. Si lo tiene, continuamos, cuando se guarde, vas a la tabla de articulos y restas la cantidad del total de existencia, y listo, y tambien en la tabla clientes restas al saldo, el valor de la compra. Todo esto se podria hacer en el momento de guardar la compra, o bien al digitar la cantidad del articulo.

NOTA : Muchas cosas las podrias hacer en procedimientos almacenados de SQL, para evitar estar llendo al servidor de base de datos tantas veces. Pero tambien lo puedes hacer desde el codigo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda sobre algo de lógica.

Publicado por m (97 intervenciones) el 02/04/2009 22:25:48
Hola,
Aqui te van unos consejos
puedes agregar una tabla Inventario con los campos:
[CodArticulo] [Cantidad]
Esto se pone en una tabla aparte por que es de las que tendra mas accesos.

Modifica la tabla Ventas primero cambiale de nombre y ponle Ordenes es un nombre
mas general y no solo puedes usarla para ventas si no para retornos o cancelaciones.
esto lo ponemos en el campo Status.
Ordenes (FolioOrden, ClienteID, FechaCompra, SubTotal, Descuento,Impuestos, Total,Status)
OrdenesLineas(FolioOrden,OrdenLineaNum,CodArticulo,PrecioUnitario,Cantidad subTotal,Descuento,Impuesto,Total)

Las tabla Ordenes nos dan la info general de una Orden que es muy util para cuando
quireres hacer reportes.
La Tabla OrdenesLineas nos dicen la cantidad de productos y cada uno
de los productos si este tiene descuento o no. Se guardan los precios porque si en
la tabla Articulos se cambia el precio de algun producto pues podemos saber en la
tabla OrdenesLineas a que precio vendimos cierto articulo.

En lo personal cambiaria la tabla Articulos.

Articulos (codigo de articulo, descripcion, costo y existencia).
por
Articulos(CodAritulo,Descripcion,Precio,estaEnVenta)
--el campo estaEnVenta es usado por si algun producto se da de baja,
nunca lo debes borrar simplemente lo pones fuera de venta.

----Por lo que se ve las tablas sufriran mas cambios por lo que sugiero que no
trabajes mucho en el desarrollo de la aplicacion sino que le dediques mas tiempo
a la planeacion de las tablas. Por ejemplo haz considerado si mostraras una
imagen para dicho producto?

Ahora te falta definir como funcionaran los Stored Procedures por ejemplo,
para vender debemos usar un Stored que vea si en el inventario tenemos la cantidad
disponible que esta solicitando el cliente, si es asi pasamos al
Stored Procedure Ventas que afectara la tabla Ordenes, OrdenesLinea, Clientes y
por supuesto Inventario.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda sobre algo de lógica.

Publicado por Tulio (6 intervenciones) el 03/04/2009 00:32:51
Muchas gracias por las respuestas Roger y M.

Y en codigo como le haria?. (tengo conocimiento nulo de los procedures)

Lo que tengo en mente es, declarar las tablas de saldo, cantidad y existencia como variables y que al momento de ponerles un if o una operacion aritmetica cambien dependiendo la operacion.

Por ejemplo:

If (Saldo > Costo)
Saldo = Costo - Saldo;
(y que aqui se actualize la casilla de Saldo de la tabla Clientes)
else
MessageBox.Show ('"No se dispone del saldo suficiente")

Cualquier aclaracion se los agradeceria.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda sobre algo de lógica.

Publicado por m (97 intervenciones) el 03/04/2009 19:53:40
Que tal,
primero que tipo de version de visual studio estas usando?
y que servidor de base de datos usas?

ahora procura separar las capas de acceso a datos y la interface de usuario.

por ejemplo:

Tienes las clases:
DAO --que es tu acceso a la base de datos.

////Pseudo codigo
ClienteDAO
{
//esta clase usa el acceso a la base de datos para guarda/insertar/actualizar
//la informacion del cliente informacion
#region Metodos
bool InsertaUsuario(string nombre, string tel , etc )
{
//llamamos al stored procedure.
if(todobien)
{
return true;
}
else
{
return false;//se produjo un error al insertar al usuario.
}
}

int saldoActual(int Costo)
{
///leemos de la tabla el saldo actual del cliente
return
}
#endregion

}


----el otro bloque de clases es:

Clientes
{
//propiedades del cliente.
Insertar( )
{
//llamamos a dao
ClienteDAO cliente=new ClienteDAO();
cliente.InsertaUsuario(argumentos);
}

///Dudas ??

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda sobre algo de lógica.

Publicado por Tulio (6 intervenciones) el 20/04/2009 04:03:32
Hola hola, perdón por no haber contestado pero estube un poco ausente por otros problemas personales.

Pues bueno, les comento que ya estube aprendiendo algo de los stored procedures y estan bien, le comente a mi maestro que mi programa lo estaba haciendo con eso y a que no saben que?

Me dijo que con stored procedures no :S.

Entonces como podria hacer el mismo programa sin meterle stored procedures, osea que sintaxis puedo usar para hacer las restas y updates de las tablas en los Forms Ventas y Compras?.

PD: Uso Visual Studio 2008.

PD2: si necesitan una cuenta rapidshare me avisan, me estan ayudando mucho y es la unica forma que tengo para agradecerselos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar