Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Programa de ventas (https://www.clubdelphi.com/foros/showthread.php?t=59921)

epenor 13-09-2008 00:05:53

Programa de ventas
 
No sé si este es el sitio adecuando para este tema, asi que pido disculpa.

Quisiera saber si alguien puede ayudarme con algun pequeño programa de ventas o facturacion. Lo que necesito es algo pequeño, donde se le den entrada a articulos, proveedores y clientes, y que realice las ventas solo al contado. Puede ser en visual basic 6 o preferiblemente en delphi con base de datos access.

Ya vi el programa de publico caral en el FTP, pero es mas complejo de lo que necesito y como quiero hacerle alguna modificacion se hace algo dificil por que tiene mucho codigo.

Eso es para un asignatura de la universidad, agerdesco cualquier ayuda que puedan brindarme.

dec 13-09-2008 00:08:39

Hola,

En estos foros no se acostumbra a proporcionar programas completos, dizque hacer las tareas a los demás, que es lo que parece que tú pides. No sé si encontrarás algo hecho, pero, como tú mismo has señalado, tal vez el programa que el compañero Caral tuvo a bien compartir pueda servirte para empezar. En cualquier caso, no es lo mismo que digas "necesito ayuda para esto o aquello", a pedir, directamente, el programa ya hecho. No sé qué opinará el resto de compañeros.

BlueSteel 13-09-2008 00:14:28

Concuerdo con Dec...

Hola epenor, solo decir que

Cita:

Lo que necesito es algo pequeño, donde se le den entrada a articulos, proveedores y clientes, y que realice las ventas solo al contado.
creo que esto no es pequeño.... ya que toda programación o creación de un sistema tiene un trabajo de por medio.... y sobre todo lo que es facturación, inventario, compras y ventas....

por lo visto es necesario que revises tu planteamiento, tus requisitos, tu limites (del sistema), que diseñes una base de datos acorde y que comiences a programar y cuando tengas dudas te las podemos aclarar aquí...

El programa que publicó Caral es básico tambien, aunque no lo creas, es bueno para empezar y tiene todo lo que necesitas, creo que te servirá mucho...

Nada más que decir que manos a la obra.... que aquí no se hacen tareas :D:D

Salu2:p:D

epenor 13-09-2008 01:00:11

jejeje, ok muchachos suave :D, quizas no hice un buen plateamiento además no he pedido nada de inventario o compras. Reconosco que no es facil pedir el trabajo de programacion, hice este post por si alguien tenian algo de codigo sencillo para guiarme porque tengo que hacerle login, controles de acceso,validaciones y permisos para los usuarios. El problema es que caresco de tiempo y queria ver si alguien tenia algo hecho para asi ahorrarme tiempo. El programa de caral me ha servido bastante.

Creo que mejor continuaré dandole seguimiento a uno que estaba haciendo pero tengo dificultares en la parte de ventas, porque los DBGrid no me permiten adicionarles registro a menos que estos no sean leidos desde una tabla. Quiero un control que me permita añadir y eleminar items del detalle de factura para luego ser vaciados en las tablas de factura.

Por el momento iré trabajando y luego les traigo mis dudas.

Caral 13-09-2008 16:43:53

Hola
Creo que el que esta en el ftp del club es el programa completo.
Este que pongo aquí es el Tutorial, es un programa completo pero mas básico.
Creo que también esta en el wiki del club.
Este tiene login, base de datos access, se conecta por ini, etc...
Es lo mas sencillo que tengo, espero te sirva.
Saludos
PD: En pocos días lo retiro de aquí por falta de espacio, cualquier interés adicional buscarlo en el wiki.

epenor 13-09-2008 20:00:41

Muchas gracias caral por tu ayuda. Quisiera saber si el procedimiento que tienes para control de error en el más complete, puedo implementarlo en otra aplicacion similar, y qué modificaciones habría que hacerle al procedimiento.

Caral 13-09-2008 20:16:47

Hola
No se a que parte del programa te refieres, me ayudarías si pones un ejemplo de la parte en cuestión.
Me imagino que debe ser a la conexión con la base de datos, pero no estoy seguro.
Saludos

Delphius 13-09-2008 20:30:10

Cita:

Empezado por epenor (Mensaje 314061)
Muchas gracias caral por tu ayuda. Quisiera saber si el procedimiento que tienes para control de error en el más complete, puedo implementarlo en otra aplicacion similar, y qué modificaciones habría que hacerle al procedimiento.

¿Procedimiento para control de errores? ¿El más completo? ¿Si lo puedes usar en otro lado? ¿Que hay que modificar?
Epenor, con tan poca ayuda de tu parte muy difícil que te ayudemos. Por empezar no indicas sobre que aspecto estás hablando ¿errores en que, donde, cuando, que errores?

Sin conocer a lo que te mencionas va a ser difícil ayudarte. ¡No somos adivinos!

Si estás tan falto de tiempo ¿Porqué en vez de ponernos en la posición de adivinos, no nos dices donde estás teniendo problemas? Lo más adecuado para ti es que expongas tus avances y dudas y a medida que continúas con el trabajo y de allí te podremos ser de ayuda.

Mientras sigas con tu postura de "denme" y de ir por lo fácil no creo que recibas ayuda.
Como te lo han comentado el resto de los compañeros: si quieres ayuda, ayudanos a ayudarte y explícate bien. No se te va a cobrar por las palabras que escribas.

Saludos,

epenor 13-09-2008 21:46:26

Muy bien Delphi, me refiero a la funcion SysErrorMessageParam(ErrorCode: Integer; Param: string): string; del programa de facturacion de caral.

Segun he visto en el codigo esa funcion captura los errores que puede cometer la persona que opera el sistema y asi evita que la aplicacion "explote". Por ejemplo, si se deja algun Edit vacio que sea not null en la DB y se intenta guardarlo.

No veo ningun procedimiento desde donde se llame la funcion, pero si se refleja su funcionamiento, asi que quieria saber si esa funcion puede ser usada en una aplicacion similar a la de caral, porque me parece una funcion un tangto "generica" (no sé si es el termino correcto) porque no tiene refencias de otras partes del codigo de la aplicacion.

Está dicha funcion enlazada de alguna manera con los try...finaly?

Disculpen mi novatada.

Caral 13-09-2008 22:33:55

Hola
Estos tres funcionan juntos y sirven para llamar a otro programa.
El primero lo que hace es enviar un mensaje de error si detener el programa.
Código Delphi [-]
function SysErrorMessageParam(ErrorCode: Integer; Param: string): string;
var
  Len: Integer;
  Buffer: array[0..255] of Char;
  ArgArray: array[1..1] of PChar;
begin
  ArgArray[1] := PChar(Param);
  Len := FormatMessage(Format_Message_From_System or
    Format_Message_Argument_Array, nil, ErrorCode, 0, Buffer,
    SizeOf(Buffer), @ArgArray);
  while (Len > 0) and (Buffer[Len - 1] in [#0..#32, '.']) do Dec(Len);
  SetString(Result, Buffer, Len);
end;

Código Delphi [-]
function TFMainForm.ExecuteApp(AppName, Params: string): TProcessInformation;
var
  SI: TStartupInfo;
  PI: TProcessInformation;
begin
  FillChar(SI, SizeOf(SI), 0);
  with SI do
  begin
    cb := SizeOf(TStartupInfo);
    dwFlags := StartF_UseShowWindow;
    wShowWindow := sw_ShowNormal;
  end;
  if not CreateProcess(nil, PChar(AppName + ' ' + Params), nil,
           nil, False, 0, nil, nil, SI, PI) then
    raise EExecAppError.Create(SysErrorMessageParam(GetLastError, AppName));
  Result := PI;
end;

Código Delphi [-]
procedure TFMainForm.Launch(AppName, Params: string);
begin
  ExecuteApp(AppName, Params);
end;

Saludos

Caral 13-09-2008 22:43:35

Hola
Aparte de lo dicho en el post anterior.....(revisalo);)
Este es un ejemplo de lo que hace dicha funcion, ejecuta el proyect1 y veras lo que sucede.
Saludos

Delphius 14-09-2008 04:57:07

Cita:

Empezado por epenor (Mensaje 314079)
Muy bien Delphi, me refiero a la funcion SysErrorMessageParam(ErrorCode: Integer; Param: string): string; del programa de facturacion de caral.

Segun he visto en el codigo esa funcion captura los errores que puede cometer la persona que opera el sistema y asi evita que la aplicacion "explote". Por ejemplo, si se deja algun Edit vacio que sea not null en la DB y se intenta guardarlo.

No veo ningun procedimiento desde donde se llame la funcion, pero si se refleja su funcionamiento, asi que quieria saber si esa funcion puede ser usada en una aplicacion similar a la de caral, porque me parece una funcion un tangto "generica" (no sé si es el termino correcto) porque no tiene refencias de otras partes del codigo de la aplicacion.

Está dicha funcion enlazada de alguna manera con los try...finaly?

Disculpen mi novatada.

Hola epenor, Creo que estás un tanto confundido... el uso del try-finally es una cosa, lo que hacen esas funciones es otra. Creo que el ejemplo de caral demuestra que es lo que hacen.

No te enojes pero creo que estás enfocando mal tu esfuerzo, no le pongas demasiado detalles al aspecto del manejo de errores. Primeramente asegúrate de cumplir con los objetivos primarios:
1. Que el sistema se logre conectar a la base de datos
2. Que realize las funcionalidades necesarias para responder a los requisitos planteados para el sistema.

Después si se lo puede adornar.

Si sigues analizando aspectos que poco estén relacionados con el verdadero propósito perderás tiempo y además conseguirás únicamente tener una ensalada en el cerebro.

Haz caso a lo que te hemos aconsejado: plantea tus dudas y avances. ¿De que otro modo podremos asesorarte si no nos describes tu situación con los detalles adecuados?

Saludos,

HombreGordo 16-09-2008 08:06:57

¡Y díganmelo a mí!
 
Bueno, ya hace ya algún tiempo hice un programa de ventas, mira como funciona:
  • Agregar registros es agregar asientos a la tabla.
  • Unas multiplicaciones por ahí (por ejemplo: Cantidad por precio unitario).
  • Sumar la columna de los totales.
  • Imprimir por el Rave Reports.
No puedo enseñarte el código hecho porque es un trabajo privado, y esto que te dije puede ser fácilmente adivinado solo mirando el programa por encimita, pero si buscas todos los hilos que he hecho en este foro, puedes darte cuenta que todos giran alrededor del proyecto. Y sin mucha explicación te guiarás a la perfección, son unos hilos muy completos. Saludos a todos y gracias a quiénes me han ayudado a lo largo de mi vida en este foro. :)

DJerez 19-09-2008 22:14:08

*****
 
Epenor:
Si te interesa una guia de novato respecto a lo que querés hacer te recomiendo que aunque o tengas tiempo, te des una mirada a otros post referidos a cada aspecto que va a tener el programa.

Hace un tiempito me sucedió lo mismo, Delphius me dió una guía junto con Caral (Naty???) si bien terminé un poco excedido de tiempo el trabajo, me di cuenta que si sos un poco ordenado ni siquiera es necesario bajarte nada desde el FTP.

Si te interesa te puedo pasar parte de lo que terminé haciendo en Delphi7, es un control de stock y ventas. Quizás te sirva de guía. daniel.e.jerez@gmail.com Correo+MSN.

Abrazo a todos.

PD: Espero no moleste mi comment al resto de la gente.

:)

epenor 21-09-2008 18:38:56

Gracias a todos por sus sugerencias y consejos, he estado corto de tiempo y no he podido hacer casi nada con el proyecto, por eso hacia dias que no escribia. Desde mañana comenzaré a trabajar y plantear mis dudas.

Saludos a todos.

epenor 22-09-2008 18:18:05

Aqui les traigo el diseño de la base de datos, quisiera saber su opinion al respecto.




Delphius 22-09-2008 19:00:20

Hola epenor,
Por lo que veo del diseño está bien, aunque hay algunas cositas que deberías tener en cuenta. Vamos por lo más fácil primero.

¿Que debemos entender por suplidores? ¿Al proveedor de dichos artículos? O al encargado de reponer dichos artículos en las góndolas?

Bueno esto te lo pregunto, ya que esto te hará comprender mejor tu modelo del negocio.

Ya sea quien se encarga de abastacer las góndolas o el proveedor deberías tener muy en cuenta la relación. ¿Se trata de una relación 1-M? ¿Puede darse el caso en que un artículo sea repuesto o proporcionado por más de un suplidor/proveedor?

Segunda cuestión: si bien se trata de ventas... debe llevarse registros del stock. No veo en tu diseño que se lleve a cabo.

tercera cuestión, la más importante: ¿El precio que figura allí en la tabla artículos es el de compra o el de venta? ¿Nunca va a variar?
Noto allí un problema un tantito molesto. Tanto el precio de compra como de venta puede variar de un día a otro. Si nos basamos en tu diseño, ante cualquier modificación del valor perderíamos el valor anterior. Cualquier reporte o consulta sobre los "movimientos" de los precios no funcionaría.
Es necesario llevar este histórico.
De igual forma, sucede con el valor de los impuestos.... ¡pueden variar!

No se que tan exquisito deba ser tu sistema. Como ya te hemos indicado, puede ser algo básico... como también podría ser lo bastante completo y complejo. Necesariamente para opinar más sobre el tema deberíamos ponernos en tus zapatos y conocer los límites de tu sistema.
Al tratarse de un trabajo para la universidad tal vez sea básico, pero palabras como complejo, básico, fácil, difícil tienen un valor bastante subjetivo.

Una gran verdad es que hay muchas maneras de diseñar una base de datos... Cada uno puede tener una mirada distinta sobre la misma realidad. En ocasiones un diseño puede afectar el modo en como llevar a cabo la el diseño del sistema, y a la inversa... la manera en como se diseñe al sistema puede afectar a la manera en como se diseñe la base de datos.
¿Porqué te digo esto? Porque algunas cosas resultan más fácil para uno hacerlas a nivel de base de datos, y otras a nivel de sistema. Debes buscar el equilibrio entre tu experiencia y tus falencias para conseguir diseñar tanto la base de datos como al sistema.

Saludos,

epenor 22-09-2008 20:18:36

Hola Delphius, dado que mi sistema es algo básico y para la universidad, lo que significa que no será un sistema para poner en producción, no tengo planeado llevar registro de la variacion de los precios. El precio que aparece en la tabla de articulos es el precio de venta (no almaceno precio de costo de los articulos). El stock lo pienso manejar con el campo "minino" de la tabla de articulos, así cuando queden por ejemplo 100 unidades de X articulo, mandaré un aviso de que se está acabando ese articulo.

Con respecto a los suplidores, en mi caso es lo mismo que proveedores.

Como puedes notar, esa base de datos es para algo realmente basico, solo para ventas al contado. Si estoy pensando cómo establecer privilegios a los usuarios, de manera que pueda tener 3 nives: vendedodes comunes que sólo facturen y consulten, vendedores avanzados que puedan adicionar articulos, o modificar algunas cosas y el administrador. (esto es un requisito del profesor)

Un saludo.

Delphius 22-09-2008 20:32:34

Entiendo,
Entonces a mi modo de ver, está bien. No veo algo raro.

Nomás te aviso que lo que tu digas no siempre es lo que el profe dice y/o quiere. Por las dudas, habla con él y analiza apropiadamente los límites del sistema.
Si dices que es básico, y que dice que te vas a encargar de ventas... entonces es posible que esa tabla suplidores (no me agrada mucho el nombre, sería apropiado llamarla proveedores) esté demás. No veo que de utilidad tiene relacionar los artículos con los proveedores si no hay alguna función establecida.

Cuentas de que cuando llega a x cantidad mínima el sistema avisa. ¿Tienes contemplado la posibilidad de que se cuente con los medios para la compra y adquisisión de más artículos? Si es así, allí si tendría sentido disponer de esa tabla de proveedores, y además podría ser necesario contar con las tablas compras y detale_compras para llevar el registro de compras.

Saludos,

epenor 22-09-2008 21:30:19

Bueno, cambiaré el nombre por proveedores se escucha mejor. Tengo la tabla articulos y proveedores relacionada porque pieson sacar algun reporte articulos por proveedores.

No tengo contemplado generar ordenes de compra porque entonces se me hará mas extenso el asunto, solamente necesito el modulo de facturacion. El aviso del stock minimo es simplemente una alerta para que no se agote un articulo súbitamente. Aun no estaria mal la parte de manejar las compras de manera básica, asi podría hasta adicionar automaticamente los articulos de la orden.


La franja horaria es GMT +2. Ahora son las 22:42:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi