Created
March 7, 2015 12:55
-
-
Save anonymous/fcad11f5cd2b6ef0b6e2 to your computer and use it in GitHub Desktop.
Movimientos del tutorial video club
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
unit UMoviemientos; | |
interface | |
uses | |
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, | |
Dialogs, DB, Mask, DBCtrls, ComCtrls, StdCtrls, Grids, DBGrids, Buttons, | |
ExtCtrls, IBCustomDataSet, IBQuery; | |
type | |
TFMovimientos = class(TForm) | |
Botonera1: TPanel; | |
SBNuevo: TSpeedButton; | |
SBEditar: TSpeedButton; | |
SBBorrar: TSpeedButton; | |
SBSalir: TSpeedButton; | |
SBBuscar: TSpeedButton; | |
DBNavigator1: TDBNavigator; | |
Panelcontenedor: TPanel; | |
PanelDatos: TPanel; | |
PanelOculto: TPanel; | |
SpeedButton8: TSpeedButton; | |
SpeedButton9: TSpeedButton; | |
DBGrid1: TDBGrid; | |
Botonera2: TPanel; | |
Label9: TLabel; | |
SpeedButton16: TSpeedButton; | |
SBBuscarnormal: TSpeedButton; | |
Edit1: TEdit; | |
StatusBar1: TStatusBar; | |
Label1: TLabel; | |
DbeRegistro: TDBEdit; | |
DsPrincipal: TDataSource; | |
Label2: TLabel; | |
Label3: TLabel; | |
DbeConcepto: TDBEdit; | |
Label4: TLabel; | |
Label5: TLabel; | |
DbeFecha: TDBEdit; | |
Label6: TLabel; | |
DbeCantidad: TDBEdit; | |
IBQClientes: TIBQuery; | |
DsIbqClientes: TDataSource; | |
DBText1: TDBText; | |
DBLBCliente: TDBLookupComboBox; | |
DBLBCargo: TDBLookupComboBox; | |
DBText2: TDBText; | |
IBQCargos: TIBQuery; | |
DsIbqCargo: TDataSource; | |
procedure SBSalirClick(Sender: TObject); | |
procedure SBNuevoClick(Sender: TObject); | |
procedure SBEditarClick(Sender: TObject); | |
procedure SBBorrarClick(Sender: TObject); | |
procedure SBBuscarClick(Sender: TObject); | |
procedure SpeedButton9Click(Sender: TObject); | |
procedure SpeedButton8Click(Sender: TObject); | |
procedure SBBuscarnormalClick(Sender: TObject); | |
procedure SpeedButton16Click(Sender: TObject); | |
procedure DsPrincipalDataChange(Sender: TObject; Field: TField); | |
procedure comprobar; | |
procedure FormActivate(Sender: TObject); | |
procedure FormKeyPress(Sender: TObject; var Key: Char); | |
procedure FormShow(Sender: TObject); | |
procedure DBLBClienteEnter(Sender: TObject); | |
procedure DBLBCargoEnter(Sender: TObject); | |
procedure DBLBClienteExit(Sender: TObject); | |
procedure DBLBCargoExit(Sender: TObject); | |
private | |
{ Private declarations } | |
public | |
{ Public declarations } | |
end; | |
var | |
FMovimientos: TFMovimientos; | |
implementation | |
{$R *.dfm} | |
uses UDM, Funciones; | |
procedure TFMovimientos.comprobar; | |
//------------------------------------------------------------------------------ | |
//************************************************************[ comprobar ]***** | |
//------------------------------------------------------------------------------ | |
begin | |
if FMovimientos.Active then | |
begin | |
if not (DsPrincipal.DataSet.State in [dsEdit,dsInsert]) then | |
begin | |
if not (DM.IBDUnidades.IsEmpty) then | |
begin | |
if DBLBCliente.Text<>'' then ActQuery(IBQClientes,'select * from CLIENTES WHERE (CLIENTES.CODIGO = '+QuotedStr(DBLBCliente.Text)+')'); | |
if DBLBCargo.Text<>'' then ActQuery(IBQCargos,'select * from CARGOS WHERE (CARGOS.CODIGO = '+QuotedStr(DBLBCargo.Text)+')'); | |
end; | |
end; | |
end; | |
end; | |
procedure TFMovimientos.DBLBCargoEnter(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//*****************************************************[ Entrar en genero ]***** | |
// Abre el dialogo | |
//------------------------------------------------------------------------------ | |
begin | |
IBQCargos.Last; | |
TComboBox(DBLBCargo).AutoDropDown:=true; | |
DBLBCargo.perform(CB_SHOWDROPDOWN,1,0); | |
end; | |
procedure TFMovimientos.DBLBCargoExit(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//******************************************[ Salir del DBLoockupCombobox ]***** | |
// Actualizamos datos | |
//------------------------------------------------------------------------------ | |
begin | |
if DBLBCargo.Text<>'' then ActQuery(IBQCargos,'select * from CARGOS WHERE (CARGOS.CODIGO = '+QuotedStr(DBLBCargo.Text)+')'); | |
end; | |
procedure TFMovimientos.DBLBClienteEnter(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//*****************************************************[ Entrar en genero ]***** | |
// Abre el dialogo | |
//------------------------------------------------------------------------------ | |
begin | |
if (VarIModoApertura=2) or (VarIModoApertura=3)then | |
begin | |
ActQuery(IBQClientes,'Select * from CLIENTES WHERE (CLIENTES.CODIGO = '+QuotedStr(DM.IBDClientesCODIGO.Value)+')'); | |
end else IBQClientes.Last; | |
TComboBox(DBLBCliente).AutoDropDown:=true; | |
DBLBCliente.perform(CB_SHOWDROPDOWN,1,0); | |
end; | |
procedure TFMovimientos.DBLBClienteExit(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//******************************************[ Salir del DBLoockupCombobox ]***** | |
// Actualizamos datos | |
//------------------------------------------------------------------------------ | |
begin | |
if DBLBCliente.Text<>'' then ActQuery(IBQClientes,'select * from CLIENTES WHERE (CLIENTES.CODIGO = '+QuotedStr(DBLBCliente.Text)+')'); | |
end; | |
procedure TFMovimientos.DsPrincipalDataChange(Sender: TObject; Field: TField); | |
//------------------------------------------------------------------------------ | |
//******************************************************[ Cambia de datos ]***** | |
//------------------------------------------------------------------------------ | |
begin | |
comprobar; | |
end; | |
procedure TFMovimientos.FormActivate(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//**********************************************************[ On Activate ]***** | |
//------------------------------------------------------------------------------ | |
begin | |
comprobar; | |
end; | |
procedure TFMovimientos.FormKeyPress(Sender: TObject; var Key: Char); | |
//------------------------------------------------------------------------------ | |
//************************************************[ Al pulsar una tecla ]****** | |
// Al pulsar la tecla salta al foco del siguiente componente, si esta admitido | |
//------------------------------------------------------------------------------ | |
begin | |
if (Key = #13) then {Si se ha pulsado enter } | |
if (ActiveControl is TEdit) | |
or (ActiveControl is TDBEdit) | |
or (ActiveControl is TDBLookupComboBox) | |
or (ActiveControl is TDBComboBox) then | |
begin | |
Key := #0; { anula la puulsación } | |
Perform(WM_NEXTDLGCTL, 0, 0); { mueve al próximo control } | |
end | |
end; | |
procedure TFMovimientos.SBBorrarClick(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//*******************************************[ Borrar el Actual Registro ]****** | |
//------------------------------------------------------------------------------ | |
begin //Cambiar por el mensaje elegido | |
if (MessageBox(0, '¿Esta seguro de eliminar el registro actual?', | |
'Eliminar Registro', MB_ICONSTOP or MB_YESNO or MB_DEFBUTTON2) = ID_No) then abort | |
else begin | |
DSPrincipal.DataSet.Delete; | |
DM.IBT.CommitRetaining; | |
ShowMessage('El registro ha sido eliminado'); | |
end; | |
end; | |
procedure TFMovimientos.SBEditarClick(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//*******************************************[ Editar el actual registro ]****** | |
//------------------------------------------------------------------------------ | |
begin | |
if DsPrincipal.DataSet.IsEmpty<>true then | |
begin | |
DSPrincipal.DataSet.Edit; | |
PanelDatos.Enabled:=True; | |
PanelOculto.Visible:=True; | |
Botonera1.Enabled:=false; | |
DBLBCliente.SetFocus; | |
end else ShowMessage('No hay tregistros disponibles para editar') | |
end; | |
procedure TFMovimientos.SBNuevoClick(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//**************************************************************[ SBnuevo ]***** | |
//------------------------------------------------------------------------------ | |
var VarIRegistro:Integer; | |
VarBSeguimos:Boolean; | |
begin | |
VarBSeguimos:=True; | |
if DM.IBDClientes.IsEmpty then VarBSeguimos:=false; | |
if DM.IBDCargos.IsEmpty then VarBSeguimos:=false; | |
if VarBSeguimos then | |
begin | |
ActQuery(IBQClientes,'Select * From CLIENTES'); | |
ActQuery(IBQCargos,'Select * From CARGOS'); | |
DsPrincipal.DataSet.Insert; | |
VarIRegistro:=DM.IBDConfiguracionNUMERADOR_CARGOS.Value; | |
VarIRegistro:=VarIRegistro+1; | |
DbeRegistro.Field.Value:=IntToStr(VarIRegistro); | |
PanelDatos.Enabled:=True; | |
PanelOculto.Visible:=True; | |
Botonera1.Enabled:=false; | |
DbeFecha.Field.Value:=Now; | |
if VarIModoApertura=1 then DbeConcepto.Field.Value:='Venta de la unidad [ '+DM.IBDUnidadesTITULO.Value+' ]'; | |
if VarIModoApertura=2 then DbeConcepto.Field.Value:='A cuenta del cliente [ '+DM.IBDClientesCODIGO.Value+' ]'; | |
if VarIModoApertura=3 then | |
begin | |
DbeConcepto.Field.Value:='Pagado por el cliente[ '+DM.IBDClientesCODIGO.Value+' ]'; | |
DbeCantidad.Field.Value:=DM.IBDClientesPENDIENTE.Value; | |
end; | |
DBLBCliente.SetFocus; | |
end else ShowMessage('O bien clientes o cargos esta vacia, por lo que no puede continuar, anulando este proceso'); | |
end; | |
procedure TFMovimientos.SBSalirClick(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//**************************************************************[ SBSalir ]***** | |
//------------------------------------------------------------------------------ | |
begin | |
if IBQClientes.Active then IBQClientes.Active:=False; | |
if IBQCargos.Active then IBQCargos.Active:=False; | |
Close; | |
end; | |
procedure TFMovimientos.SpeedButton16Click(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//****************************************************[ Salir de búsqueda ]***** | |
//------------------------------------------------------------------------------ | |
begin | |
Edit1.Text:=''; | |
Botonera2.Visible:=False; | |
end; | |
procedure TFMovimientos.SpeedButton8Click(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//*****************************************************[ Cancelar Proceso]****** | |
//------------------------------------------------------------------------------ | |
begin | |
if DsPrincipal.DataSet.State in [dsEdit,dsInsert] then DSPrincipal.DataSet.Cancel; | |
DM.IBT.RollbackRetaining; | |
PanelOculto.Visible:=False; | |
Botonera1.Enabled:=True; | |
PanelDatos.Enabled:=False; | |
end; | |
procedure TFMovimientos.SpeedButton9Click(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//********************************************************[ Grabar datos ]****** | |
//------------------------------------------------------------------------------ | |
var VarIFase:Integer; | |
VarbSaltar:Boolean; | |
begin | |
try | |
VarIFase:=1; | |
VarbSaltar:=False; | |
if DsPrincipal.DataSet.State in [dsInsert] then VarBGrabarNumerador:=True else VarBGrabarNumerador:=False; | |
if DsPrincipal.DataSet.State in [dsEdit,dsInsert] then | |
begin | |
DSPrincipal.DataSet.Post; | |
end; | |
if VarBGrabarNumerador=true then | |
begin | |
VarIFase:=2; | |
DM.IBDConfiguracion.Edit; | |
DM.IBDConfiguracionNUMERADOR_MOVIMIENTOS.Value:=StrToInt(DbeRegistro.Field.Value); | |
DM.IBDConfiguracion.Post; | |
end; | |
VarIFase:=3; | |
if ((DM.IBDCaja.IsEmpty)) then VarbSaltar:=True; | |
if VarbSaltar=False then //Comprobamos si hay registro de la caja con esta fecha | |
begin | |
DM.IBDCaja.last; | |
if DM.IBDCajaFECHA.Value<>Now then VarbSaltar:=True; | |
end; | |
if VarbSaltar then | |
begin | |
DM.IBDConfiguracion.Edit; | |
DM.IBDConfiguracionNUMERADOR_CAJA.Value:=DM.IBDConfiguracionNUMERADOR_CAJA.Value+1; | |
DM.IBDConfiguracion.Post; | |
end; | |
DM.IBDCaja.Insert; | |
DM.IBDCajaREGISTRO.Value:=IntToStr(DM.IBDConfiguracionNUMERADOR_CAJA.Value); | |
DM.IBDCajaCLIENTE.Value:=DBLBCliente.Text; | |
DM.IBDCajaCONCEPTO.Value:=DbeConcepto.Field.Value; | |
DM.IBDCajaCARGO.Value:=DBLBCargo.Text; | |
DM.IBDCajaFECHA.Value:=DbeFecha.Field.Value; | |
DM.IBDCajaCANTIDAD.Value:=DbeCantidad.Field.Value; | |
DM.IBDCajaUSUARIO.Value:=VarSUsuario; | |
DM.IBDCaja.Post; | |
VarIFase:=4; | |
if VarIModoApertura=1 then | |
begin | |
DM.IBDUnidades.Edit; | |
DM.IBDUnidadesVENDIDA.Value:='S'; | |
DM.IBDUnidadesDISPONIBLE.Value:='N'; | |
DM.IBDUnidadesFECHA_BAJA.Value:=Now; | |
if DM.IBDUnidadesRENDIMIENTO.value=0 then DM.IBDUnidadesRENDIMIENTO.Value:=DbeCantidad.Field.Value | |
else DM.IBDUnidadesRENDIMIENTO.Value:=DM.IBDUnidadesRENDIMIENTO.Value+DbeCantidad.Field.Value; | |
VarSCadena:='chr(13)+--[ VENDIDA el '+DateToStr(now)+' al cliente número '+DBLBCliente.Text+'------------------Por ['+VarSUsuario+']'; | |
DM.IBDUnidadesNOTAS.Value:=DM.IBDUnidadesNOTAS.Value+VarSCadena; | |
DM.IBDUnidades.post; | |
end; | |
if VarIModoApertura=2 then | |
begin | |
DM.IBDClientes.Edit; | |
if DM.IBDClientesA_CUENTA.Value=0 then DM.IBDClientesA_CUENTA.Value:=DbeCantidad.Field.Value | |
else DM.IBDClientesA_CUENTA.Value:=DM.IBDClientesA_CUENTA.Value+DbeCantidad.Field.Value; | |
VarSCadena:=chr(13)+'--[ Entregado a cuenta el '+DateToStr(now)+' La cantidad de '+DbeCantidad.Text+'------------------Por ['+VarSUsuario+']'; | |
DM.IBDClientesNOTAS.Value:=DM.IBDClientesNOTAS.Value+VarSCadena; | |
DM.IBDClientes.post; | |
end; | |
if VarIModoApertura=3 then | |
begin | |
DM.IBDClientes.Edit; | |
if DM.IBDClientesPENDIENTE.Value=DbeCantidad.Field.Value then DM.IBDClientesPENDIENTE.Value:=0 | |
Else begin | |
if DM.IBDClientesPENDIENTE.Value>DbeCantidad.Field.Value then DM.IBDClientesPENDIENTE.Value:=DM.IBDClientesPENDIENTE.Value-DbeCantidad.Field.Value | |
else begin | |
Case MessageBox(0, pchar( 'Ha entregado más dinero del que tenia pendiente de pagar' | |
+#13#10+#13#10+'¿Desea que el sobrante se lo añadamos a su cuenta en el apartado ' | |
+#13#10+#13#10+' [ A Cuenta ]'), | |
pchar('Entregado más que el pendiente'), 4+32+256) of | |
6:begin //Si | |
if DM.IBDClientesA_CUENTA.Value=0 then DM.IBDClientesA_CUENTA.Value:=DbeCantidad.Field.Value-DM.IBDClientesPENDIENTE.Value | |
else DM.IBDClientesA_CUENTA.Value:=DM.IBDClientesA_CUENTA.Value+(DbeCantidad.Field.Value-DM.IBDClientesPENDIENTE.Value); | |
end; | |
end; | |
end; | |
DM.IBDClientesPENDIENTE.Value:=0 | |
end; | |
VarSCadena:=chr(13)+'--[ Pagado el '+DateToStr(now)+' La cantidad de '+DbeCantidad.Text+'------------------Por ['+VarSUsuario+']'; | |
DM.IBDClientesNOTAS.Value:=DM.IBDClientesNOTAS.Value+VarSCadena; | |
DM.IBDClientes.post; | |
end; | |
VarIModoApertura:=0; | |
VarIFase:=5; | |
DM.IBT.CommitRetaining; //Donde IBT es el nombre de su Ibtrasaction, con ruta | |
except | |
on E: Exception do | |
begin | |
MessageBeep(1000); | |
ShowMessage('Se ha producido un error y el proceso no se ha podido terminar Unidad:[ UMovimientos ] Modulo:[ Grabar ]' + Chr(13) + Chr(13) | |
+ 'Fase del error [ '+IntToStr(VarIFase)+' ]'+ Chr(13) + Chr(13) | |
+ 'Clase de error: ' + E.ClassName + Chr(13) + Chr(13) | |
+ 'Mensaje del error:' + E.Message+Chr(13) + Chr(13) | |
+ ' '+Chr(13) + Chr(13) | |
+ 'El proceso ha quedado interrumpido'); | |
if DsPrincipal.DataSet.State in [dsEdit,dsInsert] then DSPrincipal.DataSet.Cancel; | |
DM.IBT.RollbackRetaining; //Donde IBT es el nombre de su Ibtrasaction, con ruta | |
end; | |
end; | |
PanelOculto.Visible:=False; | |
PanelDatos.Enabled:=False; | |
Botonera1.Enabled:=True; | |
end; | |
procedure TFMovimientos.SBBuscarClick(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//******************************************************[ Abrir Búsqueda ]****** | |
//------------------------------------------------------------------------------ | |
begin | |
Botonera2.Visible:=True; | |
Edit1.SetFocus; | |
end; | |
procedure TFMovimientos.SBBuscarnormalClick(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//***********************************************[ ejecutamos la búsqueda ]***** | |
//------------------------------------------------------------------------------ | |
begin | |
DSPrincipal.DataSet.Locate('FECHA',Edit1.Text,[loCaseInsensitive,loPartialKey]); | |
end; | |
procedure TFMovimientos.FormShow(Sender: TObject); | |
//------------------------------------------------------------------------------ | |
//***************************************************************[ OnShow ]***** | |
// Cuando muestra la pantalla | |
//------------------------------------------------------------------------------ | |
begin | |
if not (DsPrincipal.DataSet.State in [dsEdit,dsInsert]) then | |
begin | |
if (VarIModoApertura=1) or (VarIModoApertura=2) or (VarIModoApertura=3) then SBNuevoClick(sender); | |
end; | |
end; | |
end. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment