Sistema de Ventas (saldo inicial, Abono, saldo final)

235 views
Skip to first unread message

Luis Eduardo Zaleta Montes

unread,
Apr 21, 2014, 11:40:12 PM4/21/14
to publice...@googlegroups.com
Buenas.
estoy atorado en un proyecto que estoy haciendo para mi taller.
hasta el momento tengo mi formulario de registro de clientes correcto (id del cliente, nombre, apellidos, direccion, ciudad, saldo inicial.)
todo eso se guarda en una tabla.(id, nombre, apellido, direccion, ciudad, saldo_ini, abono, saldo_final).

Mi problematica es con el nuevo formulario (abonos) que estoy tratando de programar,
el cual su funcionamiento es el siguiente.
Cuando inserte el 'Id del cliente' me aparecera sus datos que ingrese en el registro,
y habra un campo 'abono' con un text box el cual se le insertara el abono y al darle clik en el boton abonar debe aparecer el saldo final que lleva el cliente.
Mi duda es que no se como programar para que cuando meta el abono se le reste al saldo inicial y me aparesca en un label el saldo final.

espero y puedan ayudarme
gracias.

mapner

unread,
Apr 22, 2014, 9:47:20 AM4/22/14
to publice...@googlegroups.com
Hola,

Si la cantidad de movimientos que vas a registrar no es muy importante, no te conviene guardar datos calculados sino más bien recalcularlos cuando requieras mostrarlos.
O sea, en el formulario tienes un campo Saldo Cliente con un Textbox txtSaldoCli  para mostrar el saldo
en el evento REFRESH de txtSaldoCli pones: 

SELECT SUM(Importe) as Saldo FROM Movimientos WHERE Movimientos.ClienteID = Cliente.ID INTO CURSOR SaldoCli
* suponiendo que tienes una tabla Clientes y ya esta seleccionado el cliente en cuestión...

THIS.Value = SaldoCli.Saldo
USE in SaldoCli

A su vez ese campo debe ser no editable por lo que en el evento WHEN pones

RETURN .F.

Al grabar debes asegurarte de poner al final THISFORM.Refresh así se refresca el campo con el nuevo saldo.

saludos

Saúl Piña

unread,
Apr 22, 2014, 10:12:07 AM4/22/14
to publice...@googlegroups.com
xSaldo=thisform.txtabono.value-saldo_final
Thisform.label1.caption=str(xSaldo)

Saludos

Allan Raúl Acuña

unread,
Apr 22, 2014, 11:46:27 AM4/22/14
to publice...@googlegroups.com
Estimado.

Los abonos en base a que se hacen (productos vendidos, servicios)?

Algunas preguntas adicionales que se me presentan son:

  • tiene varios cargos a los cuales se les va a abonar?
  • Tiene algún estado de cuentas los movimientos de abonos?

Saludos cordiales.

Lic. Allan Raúl Acuña
Analista Programador
msn= allan...@hotmail.com
skype= NicEasySoft
            +(505) 8 831 8191      
www.NicEasySoft.org
Managua, Nicaragua
Centroamérica



Date: Mon, 21 Apr 2014 20:40:12 -0700
From: zalet...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Sistema de Ventas (saldo inicial, Abono, saldo final)

Luis Eduardo Zaleta Montes

unread,
Apr 23, 2014, 1:32:41 AM4/23/14
to publice...@googlegroups.com

Los abonos se hacen a base de productos, por ejemplo,
cuando doy de alta a un cliente tambien doy de alta el precio del producto (si la compra es a credito el cual se guarda en una tabla en el campo "saldo_ini" )
cuando el cliente me empieze a dar abonos del producto que compro o cargar mas la cuenta monetariamente hablando, yo debo ingresarlos en otro form donde pongo el id del cliente y me sale sus datos y el saldo inicial (con el que empezo su compra) y ingresando el cargo debe sumarselo al saldo inicial y si abono debe restarle al saldo inicial. y mostrarlo en el Saldo Actual.
Espero y puedan ayudarme, y muchisimas gracias a sus respuestas me estan ayudando mucho a entender esto.








El lunes, 21 de abril de 2014 22:40:12 UTC-5, Luis Eduardo Zaleta Montes escribió:

mapner

unread,
Apr 23, 2014, 6:24:02 AM4/23/14
to publice...@googlegroups.com
Amigo,

Me parece que faltan algunos conceptos mínimos de diseño de base de datos como para encarar esta aplicación tan simple que planteas.
En principio debes contar con dos tablas.

Clientes.
- ID (clave primaria de Clientes, puede ser autoincremental)
- Nombre
- Dirección
- Teléfono
etc...

Movimientos
- ID (clave primaria de Movimientos, puede ser autoincremental)
- ClienteID (clave foránea apuntando a la tabla Clientes)
- Fecha
- Tipo (Factura Abono, Cobranza)
- Leyenda
- Importe
etc...

debes hacer dos formularios de tipo ABMC o CRUD
Uno para mantener la tabla Clientes
Otro para mantener la tabla Movimientos




Luis Eduardo Zaleta Montes

unread,
Apr 25, 2014, 12:21:31 AM4/25/14
to publice...@googlegroups.com
D:.....
creo que estoy algo confundido u.u

LA idea es que cuando aplane el boton cargar debe tomar el valor que esta en txtcargo y guardarlo en en el campo saldo_carg en la tabla (tbclientes) hasta hay esta todo correcto.
mi problema o duda es que no se como sumar esos dos valores (saldo_ini2 y saldo_carg) y que el resultado aparesca en un label (lblsaldofinal).

este es el codigo que llevo hasta el momento correctamente:
------------------Codigo-----------------------
#define vfpYes 0
#define vfpInformation 64

IF EMPTY(thisform.txtcargos.Text)then
MESSAGEBOX("El cargo a la cuenta no fue definido",vfpyes+vfpcritical,"Atencion")
thisform.txtcargos.SetFocus
ELSE
USE tbclientes
consul=VAL(thisform.txtid.Text)
LOCATE FOR consul=tbclientes.id
varcargo=VAL(thisform.txtcargos.Text)
replace saldo_carg WITH varcargo


USE
MESSAGEBOX("El cargo fue agregado",vfpyes+vfpinformation,"Atencion")
thisform.txtcargos.Value=""
endif
------------------------------------------------------------------------------------------

El lunes, 21 de abril de 2014 22:40:12 UTC-5, Luis Eduardo Zaleta Montes escribió:

Luis Eduardo Zaleta Montes

unread,
Apr 26, 2014, 10:59:34 AM4/26/14
to publice...@googlegroups.com
Pues muchas gracias, me sirvieron mucho sus respuestas para encontrar la solucion.
asi quedo el codigo del boton:
________________________codigo__________________________
#define vfpYes 0
#define vfpCritical 16
#define vfpinformation 64

IF EMPTY(thisform.txtcargos.Text)then
    MESSAGEBOX("El cargo a la cuenta no fue definido",vfpyes+vfpcritical,"Atencion")
    thisform.txtcargos.SetFocus
ELSE
    USE tbclientes
    consul=VAL(thisform.txtid.Text)
    LOCATE FOR consul=tbclientes.id
    varcargo=VAL(thisform.txtcargos.Text)
    replace saldo_carg WITH varcargo
   
    xSaldo=(tbclientes.saldo_carg+tbclientes.saldo_ini2)
    thisform.lblsaldofinal.Caption=STR(xSaldo)
    thisform.lblsaldoini.Caption=STR(xSaldo)
    replace saldo_fina WITH xSaldo
    replace saldo_ini2 WITH saldo_fina

               
USE
    MESSAGEBOX("El cargo fue agregado",vfpyes+vfpinformation,"Atencion")
    thisform.txtcargos.Value=""
    thisform.Refresh
       
ENDIF
_________________________________________________________



El lunes, 21 de abril de 2014 22:40:12 UTC-5, Luis Eduardo Zaleta Montes escribió:
Reply all
Reply to author
Forward
0 new messages