Skip to content

Instantly share code, notes, and snippets.

Created March 7, 2015 12:55
Show Gist options
  • Save anonymous/fcad11f5cd2b6ef0b6e2 to your computer and use it in GitHub Desktop.
Save anonymous/fcad11f5cd2b6ef0b6e2 to your computer and use it in GitHub Desktop.
Movimientos del tutorial video club
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